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

Қайырлы күн! Мен осы тақырып бойынша өз тәжірибеммен бөліскім келеді.

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

Бұл мысалда Rutoken EDS 2.0 пайдаланылады.

Бұл Rutoken-пен жұмыс істеу үшін сізге қажет Windows жүйесіне драйверді орнату.

Windows жүйесінде тек бір драйверді орнату операциялық жүйе 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 криптографиялық кітапханасы негізінде сертификаттау органын орнату жолын егжей-тегжейлі қарастырамыз.

Ақпарат көзі: www.habr.com

пікір қалдыру