Patirtis naudojant Rutoken technologiją, registruojant ir suteikiant vartotojus sistemoje (1 dalis)

Laba diena Noriu pasidalinti savo patirtimi šia tema.

Rutoken – tai techninės ir programinės įrangos sprendimai autentifikavimo, informacijos saugumo ir elektroninio parašo srityse. Iš esmės tai yra „flash drive“, kuriame galima saugoti autentifikavimo duomenis, kuriuos vartotojas naudoja prisijungdamas prie sistemos.

Šiame pavyzdyje naudojama Rutoken EDS 2.0.

Norėdami dirbti su šiuo Rutoken, jums reikia įdiegti tvarkykles į windows.

„Windows“ sistemoje įdiegus tik vieną tvarkyklę, bus įdiegta viskas, ko reikia, kad OS matytų jūsų „Rutoken“ ir galėtų su juo dirbti.

Su Rutoken galite bendrauti įvairiais būdais. Ją galite pasiekti iš programos serverio arba tiesiogiai iš kliento pusės. Šiame pavyzdyje bus nagrinėjama sąveika su Rutoken iš programos kliento pusės.

Programos kliento dalis sąveikauja su rutoken per rutoken papildinį. Tai programa, kuri kiekvienoje naršyklėje įdiegiama atskirai. „Windows“ jums tereikia atsisiųsti ir įdiegti papildinį, esantis šioje nuorodoje.

Viskas, dabar galime bendrauti su Rutoken iš programos kliento pusės.

Šiame pavyzdyje aptariama idėja įdiegti naudotojo autorizacijos algoritmą sistemoje naudojant iššūkio-atsakymo schemą.

Idėjos esmė tokia:

  1. Klientas serveriui siunčia autorizacijos užklausą.
  2. Serveris atsako į kliento užklausą išsiųsdamas atsitiktinę eilutę.
  3. Klientas užpildo šią eilutę atsitiktiniais 32 bitais.
  4. Gautą eilutę klientas pasirašo savo sertifikatu.
  5. Klientas siunčia gautą šifruotą pranešimą į serverį.
  6. Serveris patikrina parašą, gaudamas originalų nešifruotą pranešimą.
  7. Serveris pašalina paskutinius 32 bitus iš gauto nešifruoto pranešimo.
  8. Serveris lygina gautą rezultatą su pranešimu, kuris buvo išsiųstas prašant leidimo.
  9. Jei pranešimai yra vienodi, autorizacija laikoma sėkminga.

Aukščiau pateiktame algoritme yra toks dalykas kaip sertifikatas. Šiame pavyzdyje turite suprasti tam tikrą kriptografijos teoriją. Ant Habré yra puikus straipsnis šia tema.

Šiame pavyzdyje naudosime asimetrinius šifravimo algoritmus. Norėdami įgyvendinti asimetrinius algoritmus, turite turėti raktų porą ir sertifikatą.

Raktų pora susideda iš dviejų dalių: privataus rakto ir viešojo rakto. Privatus raktas, kaip rodo jo pavadinimas, turi būti slaptas. Mes naudojame jį informacijai iššifruoti. Viešasis raktas gali būti platinamas bet kam. Šis raktas naudojamas duomenims užšifruoti. Taigi, bet kuris vartotojas gali užšifruoti duomenis naudodamas viešąjį raktą, tačiau iššifruoti šią informaciją gali tik privataus rakto savininkas.

Sertifikatas yra elektroninis dokumentas, kuriame yra informacija apie vartotoją, kuriam priklauso sertifikatas, taip pat viešasis raktas. Turėdamas sertifikatą, vartotojas gali pasirašyti bet kokius duomenis ir nusiųsti juos serveriui, kuris gali patikrinti parašą ir iššifruoti duomenis.

Norėdami teisingai pasirašyti pranešimą su sertifikatu, turite jį teisingai sukurti. Norėdami tai padaryti, „Rutoken“ pirmiausia sukuriama raktų pora, o tada sertifikatas turi būti susietas su šios raktų poros viešuoju raktu. Sertifikate turi būti tiksliai tas viešasis raktas, kuris yra Rutoken, tai svarbu. Jei tiesiog sukursime raktų porą ir sertifikatą iš karto programos kliento pusėje, kaip serveris gali iššifruoti šį užšifruotą pranešimą? Juk jis visiškai nieko nežino nei apie raktų porą, nei apie sertifikatą.

Jei pasinertumėte į šią temą, įdomios informacijos galite rasti internete. Akivaizdu, kad pasitikime tam tikromis sertifikavimo institucijomis. Šios sertifikavimo institucijos gali išduoti sertifikatus vartotojams; jos įdiegia šiuos sertifikatus savo serveryje. Po to, kai klientas pasiekia šį serverį, jis mato tą patį sertifikatą ir mato, kad jį išdavė sertifikavimo institucija, o tai reiškia, kad šiuo serveriu galima pasitikėti. Internete taip pat gausu informacijos, kaip viską teisingai nustatyti. Pavyzdžiui, galite pradėti nuo to.

Jei grįšime prie savo problemos, sprendimas atrodo akivaizdus. Turite kažkaip sukurti savo sertifikavimo centrą. Tačiau prieš tai reikia išsiaiškinti, kokiu pagrindu sertifikavimo centras turėtų išduoti sertifikatą vartotojui, nes jis nieko apie tai nežino. (Pavyzdžiui, jo vardas, pavardė ir pan.) Yra toks dalykas, vadinamas pažymos prašymu. Daugiau informacijos apie šį standartą galima rasti, pavyzdžiui, Vikipedijoje ru.wikipedia.org/wiki/PKCS
Naudosime 1.7 versiją – PKCS#10.

Apibūdinkime Rutoken sertifikato generavimo algoritmą (originalus šaltinis: dokumentacija):

  1. Kliente sukuriame raktų porą ir išsaugome ją Rutoken. (išsaugojimas vyksta automatiškai)
  2. Klientui sukuriame sertifikato užklausą.
  3. Iš kliento mes siunčiame šią užklausą į serverį.
  4. Kai gauname užklausą dėl sertifikato serveryje, išduodame sertifikatą iš mūsų sertifikavimo institucijos.
  5. Išsiunčiame šį sertifikatą klientui.
  6. Rutoken sertifikatą išsaugome kliente.
  7. Sertifikatas turi būti susietas su raktų pora, kuri buvo sukurta atliekant pirmąjį veiksmą.

Dabar tampa aišku, kaip serveris galės iššifruoti kliento parašą, nes jis pats jam išdavė sertifikatą.

Kitoje dalyje atidžiau pažvelgsime į tai, kaip nustatyti sertifikatų įstaigą, remiantis visaverte atvirojo kodo kriptografijos biblioteka openSSL.

Šaltinis: www.habr.com

Добавить комментарий