Ruutokeni tehnoloogia kasutamise kogemus registreerimisel ja kasutajate autentimisel süsteemis (osa 1)

Tere! Soovin jagada oma kogemust selle teema osas.

RUTOKEN on riistvaralised ja tarkvaralised lahendused autentimise, teabe kaitse ja digitaalse allkirja vallas. Tegelikult on see selline mälupulk, mis suudab hoida autentimisandmeid, mida kasutaja kasutab süsteemi sisenemiseks.

Selles näites kasutatakse RUTOKEN EDS 2.0.

Selle RUTOKENiga tööks on vajalik installeerida draiver Windowsis.

Windowsis tagab üheainsa draiveri installeerimine kõik vajaliku, et operatsioonisüsteem näeks teie RUTOKENi ja saaks sellega töötada.

RUTOKENiga saab suhelda erinevate viisidega. Seda saab kasutada rakenduse serveripoolsest osast, kuid ka otse kliendipoolsest. Selles näites käsitletakse suhtlemist RUTOKENiga rakenduse kliendipoolsest osast.

Rakenduse kliendipool suhtleb RUTOKENiga läbi RUTOKENi pistikprogrammi. See on programm, mis installeeritakse eraldi iga brauseri jaoks. Windowsis peate lihtsalt alla laadima ja installima pistikprogrammi, mis asub sellel lingil.

Nüüd saame suhelda RUTTokeniga rakenduse kliendiosas.

Antud näites käsitletakse kasutaja autoriseerimisalgoritmi rakendamise ideed, kasutades väljakutse-vastus skeemi.

Idee seisneb järgnevates punktides:

  1. Kliendi poolel saadetakse autoriseerimistaotlus serverile.
  2. Server vastab kliendi taotlusele juhusliku stringiga.
  3. Kliendi pool täiendab seda stringi juhuslike 32 bitidega.
  4. Kliendil tuleb saadud string allkirjastada oma sertifikaadiga.
  5. Kliendi pool saadab serverile saadud kodeeritud sõnumi.
  6. Server kontrollib allkiri, saades tagasi algse kodeerimata sõnumi.
  7. Server eraldab saadud kodeerimata sõnumist viimased 32 bitti.
  8. Server võrdleb saadud tulemust algse autoriseerimistaotluses saadetud sõnumiga.
  9. Kui sõnumid on võrdsed, loetakse autoriseerimine edukaks.

Ülaltoodud algoritmis on mõisted nagu sertifikaat. Käesolevas näites on vajalik mõista teatud krüptograafia teooriat. Habré on olemas suurepärane artikel selle teema kohta.

Selles näites kasutame asümmeetrilisi krüptimise algoritme. Asümmeetriliste algoritmide rakendamiseks on vajalik omada võtmepaari ja sertifikaati.

Võtmepaar koosneb kahest osast: privaatsest võtmeta ja avalikust võtmeta. Privaatsed võtmed, nagu nimi viitab, peavad olema salajased. Me kasutame seda teabe dekrüpteerimiseks. Avalikku võtme saab jagada igasuguste inimestega. Selle võtme abil šifreeritakse andmed. Seega saavad kõik kasutajad andmeid šifreerida, kasutades avalikku võtme, kuid ainult privaatsuse omanik saab neid andmeid dekrüpteerida.

Sertifikaat on elektrooniline dokument, mis sisaldab teavet sertifikaadi omaniku kohta ja samuti avalikku võtmeta. Sertifikaadiga saab kasutaja allkirjastada mis tahes andmeid ja saata need serverisse, mis saab kontrollida sellist allkirja ja dekrüpteerida andmed.

Sertifikaadi õigeks allkirjastamiseks tuleb see õigesti luua. Selleks luuakse RutoKenis esmalt võtmepaar ja seejärel peab sertifikaat olema seotud selle võtmepaari avaliku võtmega. Sertifikaat peab sisaldama just seda avalikku võtmega, mis asub RutoKenis, mis on oluline. Kui me lihtsalt loome võtmepaari ja sertifikaadi otse kliendiosa rakenduses, siis kuidas suudab server pärast šifreeritud sõnumit lahti mõtestada? Sest ta ei tea midagi ei võtmepaari ega sertifikaadi kohta.

Kui sukelduda sügavamale sellesse teema, võib leida huvitavat teavet internetist. Eksisteerivad teatavad tunnustuskeskused, kellele me eelnevalt usaldame. Need tunnustuskeskused saavad välja anda sertifikaate kasutajatele, kes paigutavad need sertifikaadid oma serverisse. Pärast seda, kui klient pöördub selle serveri poole, näeb ta seda sama sertifikaati ja märgib, et see on välja antud tunnustuskeskuse poolt, seega on sellele serverile võimalik usaldada. Detailse teabe saamiseks selle õigeks seadistamiseks on internetis ka palju teavet. Näiteks võib alustada sellest.

Kui naasta meie ülesande juurde, siis lahendus näib olevat ilmne. Tuleb leida viis, kuidas luua oma sertifitseerimiskeskus. Kuid enne seda on vaja selgitada, millise alusel sertifitseerimiskeskus peaks kasutajale sertifikaati väljastama, kuna ta ei tea temast midagi. (Näiteks tema ees- ja perekonnanimi jms.) On olemas asi, mida nimetatakse sertifikaaditaotluseks. Täiendavateks detailideks selle standardi kohta võid vaadata näiteks vikipeediast ru.wikipedia.org/wiki/PKCS
Kasutame versiooni 1.7 — PKCS#10.

Kuna kirjeldame sertifikaadi moodustamise algoritmi RUTokenil (algallikas — dokumentatsioon):

  1. Loo kliendi poolel võtmepaar ja salvesta see RUTokenisse. (salvestamine toimub automaatselt)
  2. Kliendi poolel loo sertifikaaditaotlus.
  3. Saada see taotlus serverisse.
  4. Serveris sertifikaadi taotluse saamisel väljastame sertifikaadi oma sertifitseerimiskeskuse kaudu.
  5. Saada see sertifikaat kliendile.
  6. Salvesta sertifikaat kliendi RUTokenisse.
  7. Sertifikaat peab olema seotud selle võtmepaariga, mis loodi esimeses etapis.

Nüüd on selge, kuidas server saab kliendi allkirja dešifreerida, kuna see on ise välja andnud sertifikaadi.

Järgmises osas arutame põhjalikult, kuidas seadistada oma sertifitseerimiskeskust avatud lähtekoodiga krüptograafilise teegiga openSSL.

Allikas: habr.com

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster