Tizimda foydalanuvchilarni ro'yxatdan o'tkazish va avtorizatsiya qilish uchun Rutoken texnologiyasidan foydalanish tajribasi (1-qism)

Hayrli kun! Men ushbu mavzu bo'yicha o'z tajribamni baham ko'rmoqchiman.

Rutoken - autentifikatsiya, axborot xavfsizligi va elektron imzo sohasidagi apparat va dasturiy yechimlar. Aslida, bu foydalanuvchi tizimga kirish uchun foydalanadigan autentifikatsiya ma'lumotlarini saqlashi mumkin bo'lgan flesh-disk.

Ushbu misolda Rutoken EDS 2.0 ishlatiladi.

Ushbu Rutoken bilan ishlash uchun sizga kerak drayverni windowsga o'rnating.

Windows uchun faqat bitta drayverni o'rnatish OS Rutokeningizni ko'rishi va u bilan ishlashi uchun barcha kerakli narsalar o'rnatilishini ta'minlaydi.

Rutoken bilan turli yo'llar bilan o'zaro aloqada bo'lishingiz mumkin. Siz unga ilovaning server tomonidan yoki bevosita mijoz tomonidan kirishingiz mumkin. Ushbu misol dasturning mijoz tomonidan Rutoken bilan o'zaro aloqasini ko'rib chiqadi.

Ilovaning mijoz qismi rutoken plagini orqali rutoken bilan o'zaro ta'sir qiladi. Bu har bir brauzerda alohida o'rnatilgan dastur. Windows uchun siz shunchaki plaginni yuklab olishingiz va o'rnatishingiz kerak, ushbu havolada joylashgan.

Hammasi shu, endi biz Rutoken bilan dasturning mijoz tomonidan o'zaro aloqada bo'lishimiz mumkin.

Ushbu misolda foydalanuvchini avtorizatsiya qilish algoritmini tizimda chaqiruv-javob sxemasidan foydalangan holda amalga oshirish g'oyasi muhokama qilinadi.

G'oyaning mohiyati quyidagicha:

  1. Mijoz serverga avtorizatsiya so'rovini yuboradi.
  2. Server mijozning so'roviga tasodifiy qatorni yuborish orqali javob beradi.
  3. Mijoz bu satrni tasodifiy 32 bit bilan to'ldiradi.
  4. Mijoz qabul qilingan qatorni sertifikati bilan imzolaydi.
  5. Mijoz qabul qilingan shifrlangan xabarni serverga yuboradi.
  6. Server asl shifrlanmagan xabarni qabul qilib, imzoni tekshiradi.
  7. Server qabul qilingan shifrlanmagan xabardan oxirgi 32 bitni olib tashlaydi.
  8. Server olingan natijani avtorizatsiya so'ralganda yuborilgan xabar bilan solishtiradi.
  9. Agar xabarlar bir xil bo'lsa, avtorizatsiya muvaffaqiyatli deb hisoblanadi.

Yuqoridagi algoritmda sertifikat kabi narsa mavjud. Ushbu misol uchun siz ba'zi kriptografik nazariyani tushunishingiz kerak. Habreda bor ushbu mavzu bo'yicha ajoyib maqola.

Ushbu misolda biz assimetrik shifrlash algoritmlaridan foydalanamiz. Asimmetrik algoritmlarni amalga oshirish uchun sizda kalit juftligi va sertifikat bo'lishi kerak.

Kalitlar juftligi ikki qismdan iborat: shaxsiy kalit va ochiq kalit. Shaxsiy kalit, uning nomidan ko'rinib turibdiki, maxfiy bo'lishi kerak. Biz undan ma'lumotni shifrlash uchun foydalanamiz. Ochiq kalit har kimga tarqatilishi mumkin. Ushbu kalit ma'lumotlarni shifrlash uchun ishlatiladi. Shunday qilib, har qanday foydalanuvchi ochiq kalit yordamida ma'lumotlarni shifrlashi mumkin, lekin faqat shaxsiy kalit egasi bu ma'lumotni shifrlashi mumkin.

Sertifikat - bu sertifikat egasi bo'lgan foydalanuvchi haqidagi ma'lumotlarni, shuningdek ochiq kalitni o'z ichiga olgan elektron hujjat. Sertifikat yordamida foydalanuvchi istalgan ma'lumotni imzolashi va uni serverga yuborishi mumkin, bu esa imzoni tekshirishi va ma'lumotlarning shifrini ochishi mumkin.

Sertifikat bilan xabarni to'g'ri imzolash uchun uni to'g'ri yaratishingiz kerak. Buning uchun avval Rutokenda kalitlar juftligi yaratiladi, so'ngra sertifikat ushbu kalit juftligining ochiq kalitiga bog'lanishi kerak. Sertifikat Rutoken-da joylashgan ochiq kalitga ega bo'lishi kerak, bu muhim. Agar biz dasturning mijoz tomonida darhol kalit juftligi va sertifikat yaratsak, server bu shifrlangan xabarni qanday shifrlashi mumkin? Axir, u kalit juftligi yoki sertifikat haqida umuman hech narsa bilmaydi.

Agar siz ushbu mavzuga chuqurroq kirsangiz, Internetda qiziqarli ma'lumotlarni topishingiz mumkin. Biz aniq ishonadigan sertifikatlashtirish idoralari mavjud. Ushbu sertifikatlashtirish idoralari foydalanuvchilarga sertifikatlar berishi mumkin; ular ushbu sertifikatlarni o'z serverlariga o'rnatadilar. Shundan so'ng, mijoz ushbu serverga kirganda, u aynan mana shu sertifikatni ko'radi va u sertifikatlashtirish organi tomonidan berilganligini ko'radi, ya'ni bu serverga ishonish mumkin. Bundan tashqari, Internetda hamma narsani qanday qilib to'g'ri sozlash haqida ko'p ma'lumotlar mavjud. Masalan, siz bundan boshlashingiz mumkin.

Agar muammomizga qaytsak, yechim aniq ko'rinadi. Siz qandaydir tarzda o'zingizning sertifikatlashtirish markazingizni yaratishingiz kerak. Ammo bundan oldin, sertifikatlashtirish markazi foydalanuvchiga qanday asosda sertifikat berishi kerakligini aniqlab olishingiz kerak, chunki u bu haqda hech narsa bilmaydi. (Masalan, uning ismi, familiyasi va boshqalar) Sertifikat so'rovi degan narsa bor. Ushbu standart haqida ko'proq ma'lumotni, masalan, Vikipediyadan topishingiz mumkin ru.wikipedia.org/wiki/PKCS
Biz 1.7 - PKCS # 10 versiyasidan foydalanamiz.

Keling, Rutoken-da sertifikat yaratish algoritmini tasvirlab beraylik (asl manba: hujjatlar):

  1. Biz mijozda kalit juftligini yaratamiz va uni Rutokenda saqlaymiz. (saqlash avtomatik ravishda amalga oshiriladi)
  2. Biz mijozga sertifikat so'rovini yaratamiz.
  3. Mijozdan biz ushbu so'rovni serverga yuboramiz.
  4. Serverda sertifikat so'rovini olganimizda, biz sertifikatlashtirish idoramizdan sertifikat beramiz.
  5. Biz ushbu sertifikatni mijozga yuboramiz.
  6. Biz Rutoken sertifikatini mijozga saqlaymiz.
  7. Sertifikat birinchi bosqichda yaratilgan kalit juftligiga bog'langan bo'lishi kerak.

Endi server mijozning imzosini qanday ochishi mumkinligi aniq bo'ladi, chunki u o'zi unga sertifikat bergan.

Keyingi qismda biz to'liq huquqli ochiq kodli openSSL kriptografiya kutubxonasi asosida sertifikat vakolatingizni qanday o'rnatishni batafsil ko'rib chiqamiz.

Manba: www.habr.com

a Izoh qo'shish