Underfining yn it brûken fan Rutoken-technology foar registrearjen en autorisearjen fan brûkers yn it systeem (diel 1)

Goeiemiddei Ik wol myn ûnderfining oer dit ûnderwerp diele.

Rutoken is hardware- en softwareoplossingen op it mêd fan autentikaasje, ynformaasjefeiligens en elektroanyske hantekening. Yn essinsje is dit in flash-drive dat autentikaasjegegevens kin opslaan dy't de brûker brûkt om oan te melden by it systeem.

Yn dit foarbyld wurdt Rutoken EDS 2.0 brûkt.

Om te wurkjen mei dizze Rutoken jo nedich ynstallearje stjoerprogramma op windows.

Foar Windows, it ynstallearjen fan mar ien bestjoerder soarget derfoar dat alles dat nedich is ynstalleare is sadat it OS jo Rutoken sjocht en dermei kin wurkje.

Jo kinne op ferskate manieren ynteraksje mei Rutoken. Jo kinne tagong krije ta it fan 'e serverkant fan' e applikaasje, of direkt fan 'e kliïntkant. Dit foarbyld sil sjen nei ynteraksje mei Rutoken fan 'e kliïntkant fan' e applikaasje.

It clientdiel fan 'e applikaasje ynteraksje mei de rutoken fia de rutoken-plugin. Dit is in programma dat apart wurdt ynstalleare op elke browser. Foar Windows moatte jo gewoan de plugin downloade en ynstallearje, leit op dizze link.

Dat is it, no kinne wy ​​ynteraksje mei Rutoken fan 'e kliïntkant fan' e applikaasje.

Dit foarbyld besprekt it idee fan it ymplementearjen fan in brûkersautorisaasjealgoritme yn it systeem mei it útdaging-antwurdskema.

De essinsje fan it idee is as folget:

  1. De kliïnt stjoert in autorisaasjefersyk nei de tsjinner.
  2. De tsjinner reagearret op in fersyk fan 'e kliïnt troch in willekeurige tekenrige te ferstjoeren.
  3. De klant pads dizze tekenrige mei willekeurige 32 bits.
  4. De kliïnt tekenet de ûntfongen tekenrige mei syn sertifikaat.
  5. De kliïnt stjoert it ûntfongen fersifere berjocht nei de tsjinner.
  6. De tsjinner ferifieart de hantekening troch it orizjinele net-fersifere berjocht te ûntfangen.
  7. De tsjinner stript de lêste 32 bits fan it ûntfongen net-fersifere berjocht.
  8. De tsjinner fergeliket it ûntfongen resultaat mei it berjocht dat ferstjoerd is by it oanfreegjen fan autorisaasje.
  9. As de berjochten itselde binne, dan wurdt autorisaasje as suksesfol beskôge.

Yn it boppesteande algoritme is d'r sa'n ding as in sertifikaat. Foar dit foarbyld moatte jo wat kryptografyske teory begripe. Op Habré is der geweldich artikel oer dit ûnderwerp.

Yn dit foarbyld sille wy asymmetryske fersiferingsalgoritmen brûke. Om asymmetryske algoritmen te ymplementearjen, moatte jo in kaaipaar en in sertifikaat hawwe.

In kaaipaar bestiet út twa dielen: in privee kaai en in iepenbiere kaai. De privee kaai, lykas syn namme al fermoeden docht, moat geheim wêze. Wy brûke it om ynformaasje te ûntsiferjen. De iepenbiere kaai kin wurde ferdield oan elkenien. Dizze kaai wurdt brûkt om gegevens te fersiferjen. Sa kin elke brûker gegevens fersiferje mei de iepenbiere kaai, mar allinich de eigner fan 'e privee kaai kin dizze ynformaasje ûntsiferje.

In sertifikaat is in elektroanysk dokumint dat ynformaasje befettet oer de brûker dy't it sertifikaat hat, en ek in iepenbiere kaai. Mei in sertifikaat kin de brûker alle gegevens ûndertekenje en stjoere nei de tsjinner, dy't de hantekening kin ferifiearje en de gegevens ûntsiferje.

Om in berjocht goed te ûndertekenjen mei in sertifikaat, moatte jo it korrekt oanmeitsje. Om dit te dwaan, wurdt earst in kaaipaar makke op Rutoken, en dan moat in sertifikaat keppele wurde oan de iepenbiere kaai fan dit kaaipaar. It sertifikaat moat krekt de iepenbiere kaai hawwe dy't op Rutoken leit, dit is wichtich. As wy gewoan in kaaipaar en in sertifikaat direkt oanmeitsje oan 'e kliïntkant fan' e applikaasje, hoe kin de tsjinner dan dit fersifere berjocht ûntsiferje? Hy wit ommers hielendal neat oer it kaaipaar noch it sertifikaat.

As jo ​​djipper yn dit ûnderwerp dûke, kinne jo ynteressante ynformaasje fine op it ynternet. D'r binne bepaalde sertifisearingsautoriteiten dy't wy fansels fertrouwe. Dizze sertifikaasjeautoriteiten kinne sertifikaten útjaan oan brûkers; se ynstallearje dizze sertifikaten op har server. Nei dit, as de kliïnt tagong hat ta dizze tsjinner, sjocht hy dit sertifikaat, en sjocht dat it is útjûn troch in sertifisearringsautoriteit, wat betsjut dat dizze tsjinner fertroud wurde kin. D'r is ek genôch ynformaasje op it ynternet oer hoe't jo alles goed ynstelle kinne. Hjir kinne jo bygelyks mei begjinne.

As wy weromkomme nei ús probleem, liket de oplossing fanselssprekkend. Jo moatte op ien of oare manier jo eigen sertifikaasjesintrum meitsje. Mar dêrfoar moatte jo útfine op hokker basis it sertifikaasjesintrum in sertifikaat oan 'e brûker moat útjaan, om't hy der neat fan wit. (Bygelyks syn foarnamme, efternamme, ensfh.) Der is sa'n ding dat in sertifikaatoanfraach hjit. Mear ynformaasje oer dizze standert is bygelyks te finen op Wikipedia ru.wikipedia.org/wiki/PKCS
Wy sille ferzje 1.7 brûke - PKCS#10.

Lit ús it algoritme beskriuwe foar it generearjen fan in sertifikaat op Rutoken (orizjinele boarne: dokumintaasje):

  1. Wy meitsje in kaaipaar op 'e kliïnt en bewarje it op Rutoken. (opslaan komt automatysk)
  2. Wy meitsje in sertifikaatfersyk oan 'e kliïnt.
  3. Fan 'e kliïnt stjoere wy dit fersyk nei de tsjinner.
  4. As wy in fersyk foar in sertifikaat op 'e tsjinner ûntfange, jouwe wy in sertifikaat út fan ús sertifisearingsautoriteit.
  5. Wy stjoere dit sertifikaat nei de klant.
  6. Wy bewarje it Rutoken-sertifikaat op 'e kliïnt.
  7. It sertifikaat moat bûn wêze oan it kaaipaar dat yn 'e earste stap makke is.

No wurdt dúdlik hoe't de tsjinner de hantekening fan 'e kliïnt kin ûntsiferje, om't it sels it sertifikaat oan him hat útjûn.

Yn it folgjende diel sille wy in tichterby besjen hoe't jo jo sertifikaasjeautoriteit ynstelle kinne basearre op 'e folweardige iepenboarne kryptografybibleteek openSSL.

Boarne: www.habr.com

Add a comment