Системада колдонуучуларды каттоо жана авторизациялоо үчүн Rutoken технологиясын колдонуу тажрыйбасы (1-бөлүк)

Кутмандуу күнүң менен! Мен бул тема боюнча өз тажрыйбамды бөлүшкүм келет.

Rutoken – аутентификация, маалыматтык коопсуздук жана электрондук кол коюу жаатындагы аппараттык жана программалык чечимдер. Негизи бул флеш-диск, ал колдонуучу системага кирүү үчүн колдонгон аутентификация маалыматтарын сактай алат.

Бул мисалда Rutoken EDS 2.0 колдонулат.

Бул Rutoken менен иштөө үчүн сизге керек Windows боюнча драйверди орнотуу.

Windows үчүн бир гана драйверди орнотуу зарыл болгон нерселердин бардыгынын орнотулушун камсыздайт, ошондо OS сиздин Rutokenиңизди көрүп, аны менен иштей алат.

Сиз Rutoken менен ар кандай жолдор менен баарлаша аласыз. Сиз ага колдонмонун сервер тарабынан же түздөн-түз кардар тарабынан кире аласыз. Бул мисал колдонмонун кардар тарабынан Rutoken менен өз ара аракеттенүүнү карайт.

Колдонмонун кардар бөлүгү rutoken плагини аркылуу рутокен менен өз ара аракеттенет. Бул ар бир браузерде өзүнчө орнотулган программа. Windows үчүн сиз жөн гана плагинди жүктөп алып, орнотуу керек, бул шилтемеде жайгашкан.

Болду, эми биз Rutoken менен тиркеменин кардар тарабынан иштеше алабыз.

Бул мисалда чакырык-жооп схемасын колдонуу менен системада колдонуучунун авторизациялоо алгоритмин ишке ашыруу идеясы талкууланат.

Идеянын маңызы төмөнкүдөй:

  1. Кардар серверге авторизация сурамын жөнөтөт.
  2. Сервер кардардын суроосуна туш келди сапты жөнөтүү менен жооп берет.
  3. Кардар бул сапты туш келди 32 бит менен толтурат.
  4. Кардар алган сапка анын сертификаты менен кол коет.
  5. Кардар кабыл алынган шифрленген билдирүүнү серверге жөнөтөт.
  6. Сервер түпнуска шифрленбеген билдирүүнү алуу менен кол тамганы текшерет.
  7. Сервер кабыл алынган шифрленбеген билдирүүдөн акыркы 32 битти ажыратат.
  8. Сервер алынган натыйжаны авторизацияны сураганда жөнөтүлгөн билдирүү менен салыштырат.
  9. Эгерде билдирүүлөр бирдей болсо, анда авторизация ийгиликтүү деп эсептелет.

Жогорудагы алгоритмде сертификат деген нерсе бар. Бул мисал үчүн, кээ бир криптографиялык теорияны түшүнүү керек. Хабреде бар бул тема боюнча улуу макала.

Бул мисалда биз асимметриялык шифрлөө алгоритмдерин колдонобуз. Асимметриялык алгоритмдерди ишке ашыруу үчүн сизде ачкыч жуп жана сертификат болушу керек.

Ачкыч жуп эки бөлүктөн турат: купуя ачкыч жана ачык ачкыч. Жеке ачкыч, анын аты айтып тургандай, жашыруун болушу керек. Биз аны маалыматтын шифрин чечмелөө үчүн колдонобуз. Ачык ачкыч кимге болбосун таркатылышы мүмкүн. Бул ачкыч маалыматтарды шифрлөө үчүн колдонулат. Ошентип, ар бир колдонуучу ачык ачкычтын жардамы менен маалыматтарды шифрлей алат, бирок купуя ачкычтын ээси гана бул маалыматты чече алат.

Сертификат – бул сертификатка ээ болгон колдонуучу тууралуу маалыматты, ошондой эле ачык ачкычты камтыган электрондук документ. Сертификат менен колдонуучу каалаган маалыматтарга кол коюп, аны серверге жөнөтө алат, ал кол тамганы текшерип, маалыматтарды чечмелей алат.

Сертификат менен билдирүүгө туура кол коюу үчүн аны туура түзүшүңүз керек. Бул үчүн, адегенде Rutokenде ачкыч жуп түзүлөт, андан кийин сертификат бул ачкыч жуптун ачык ачкычына байланыштырылышы керек. Сертификат Rutokenде жайгашкан ачык ачкычка ээ болушу керек, бул маанилүү. Эгер биз жөн гана колдонмонун кардар тарабында ачкыч түгөйүн жана сертификатты түзсөк, анда сервер бул шифрленген билдирүүнү кантип чече алат? Анткени, ал ачкыч түгөйү же күбөлүк жөнүндө эч нерсе билбейт.

Бул темага тереңирээк сүңгүп кирсеңиз, интернеттен кызыктуу маалыматтарды таба аласыз. Биз, албетте, ишене турган кээ бир сертификаттоо органдары бар. Бул сертификаттоо органдары колдонуучуларга сертификаттарды бере алышат; алар бул сертификаттарды серверине орното алышат. Андан кийин, кардар бул серверге киргенде, ал дал ушул сертификатты көрөт жана ал сертификаттоо органы тарабынан берилгенин көрөт, демек бул серверге ишенүүгө болот. Интернетте баарын кантип туура орнотуу керектиги жөнүндө көптөгөн маалыматтар бар. Мисалы, сиз ушундан баштасаңыз болот.

Эгерде биз өзүбүздүн маселебизге кайрылсак, чечим айкын көрүнөт. Сиз кандайдыр бир жол менен өзүңүздүн сертификаттоо борборуңузду түзүшүңүз керек. Бирок ага чейин сертификация борбору колдонуучуга сертификатты кандай негизде бериши керектигин аныктап алышыңыз керек, анткени ал бул тууралуу эч нерсе билбейт. (Мисалы, аты-жөнү, фамилиясы ж.б.) Күбөлүк сурам деген нерсе бар. Бул стандарт жөнүндө көбүрөөк маалыматты, мисалы, Википедиядан тапса болот ru.wikipedia.org/wiki/PKCS
Биз 1.7 версиясын колдонобуз - PKCS#10.

Келгиле, Rutoken боюнча сертификатты түзүү алгоритмин сүрөттөп берели (оригиналдуу булак: документтер):

  1. Биз кардарда ачкыч жупту түзүп, аны Rutokenде сактайбыз. (сактоо автоматтык түрдө ишке ашат)
  2. Биз кардар боюнча күбөлүк сурамын түзөт.
  3. Кардардан биз бул суроону серверге жөнөтөбүз.
  4. Серверде сертификатка суроо-талапты алганыбызда, биз сертификаттоо органыбыздан сертификат беребиз.
  5. Биз бул сертификатты кардарга жөнөтөбүз.
  6. Биз Rutoken сертификатын кардарда сактайбыз.
  7. Сертификат биринчи кадамда түзүлгөн ачкыч жупка байланышы керек.

Эми сервер кардардын колунун шифрин кантип чече алары белгилүү болду, анткени ал өзү ага сертификат берген.

Кийинки бөлүктө биз толук кандуу ачык булактуу криптографиялык китепкана openSSL негизинде сиздин сертификаттык ыйгарым укукту кантип орнотууну кененирээк карап чыгабыз.

Source: www.habr.com

Комментарий кошуу