Pieredze Rutoken tehnoloģijas izmantošanā lietotāju reģistrēšanai un autorizācijai sistēmā (1. daļa)

Labdien Gribu padalīties pieredzē par šo tēmu.

Rutoken ir aparatūras un programmatūras risinājumi autentifikācijas, informācijas drošības un elektroniskā paraksta jomā. Būtībā tas ir zibatmiņas disks, kurā var saglabāt autentifikācijas datus, ko lietotājs izmanto, lai pieteiktos sistēmā.

Šajā piemērā tiek izmantots Rutoken EDS 2.0.

Lai strādātu ar šo Rutoken, jums ir nepieciešams instalēt draiveri uz Windows.

Operētājsistēmā Windows tikai viena draivera instalēšana nodrošina, ka ir instalēts viss nepieciešamais, lai OS redzētu jūsu Rutoken un varētu ar to strādāt.

Jūs varat sazināties ar Rutoken dažādos veidos. Tam var piekļūt no lietojumprogrammas servera puses vai tieši no klienta puses. Šajā piemērā tiks aplūkota mijiedarbība ar Rutoken no lietojumprogrammas klienta puses.

Lietojumprogrammas klienta daļa mijiedarbojas ar rutoken, izmantojot rutoken spraudni. Šī ir programma, kas katrā pārlūkprogrammā tiek instalēta atsevišķi. Operētājsistēmai Windows jums vienkārši jālejupielādē un jāinstalē spraudnis, atrodas šajā saitē.

Tas arī viss, tagad mēs varam mijiedarboties ar Rutoken no lietojumprogrammas klienta puses.

Šajā piemērā ir apskatīta ideja par lietotāja autorizācijas algoritma ieviešanu sistēmā, izmantojot izaicinājuma-atbildes shēmu.

Idejas būtība ir šāda:

  1. Klients nosūta serverim autorizācijas pieprasījumu.
  2. Serveris atbild uz klienta pieprasījumu, nosūtot nejaušu virkni.
  3. Klients papildina šo virkni ar nejaušiem 32 bitiem.
  4. Klients paraksta saņemto virkni ar savu sertifikātu.
  5. Klients nosūta saņemto šifrēto ziņojumu serverim.
  6. Serveris pārbauda parakstu, saņemot sākotnējo nešifrēto ziņojumu.
  7. Serveris noņem pēdējos 32 bitus no saņemtā nešifrētā ziņojuma.
  8. Serveris salīdzina saņemto rezultātu ar ziņojumu, kas tika nosūtīts, pieprasot autorizāciju.
  9. Ja ziņojumi ir vienādi, autorizācija tiek uzskatīta par veiksmīgu.

Iepriekš minētajā algoritmā ir tāda lieta kā sertifikāts. Šajā piemērā jums ir jāsaprot kāda kriptogrāfijas teorija. Uz Habré ir lielisks raksts par šo tēmu.

Šajā piemērā mēs izmantosim asimetriskos šifrēšanas algoritmus. Lai ieviestu asimetriskus algoritmus, jums ir jābūt atslēgu pārim un sertifikātam.

Atslēgu pāris sastāv no divām daļām: privātās atslēgas un publiskās atslēgas. Privātajai atslēgai, kā norāda tās nosaukums, jābūt slepenai. Mēs to izmantojam informācijas atšifrēšanai. Publisko atslēgu var izplatīt ikvienam. Šo atslēgu izmanto datu šifrēšanai. Tādējādi ikviens lietotājs var šifrēt datus, izmantojot publisko atslēgu, bet tikai privātās atslēgas īpašnieks var atšifrēt šo informāciju.

Sertifikāts ir elektronisks dokuments, kas satur informāciju par lietotāju, kuram sertifikāts pieder, kā arī publisko atslēgu. Izmantojot sertifikātu, lietotājs var parakstīt jebkurus datus un nosūtīt tos serverim, kas var pārbaudīt parakstu un atšifrēt datus.

Lai pareizi parakstītu ziņojumu ar sertifikātu, tas ir pareizi jāizveido. Lai to izdarītu, Rutoken vispirms tiek izveidots atslēgu pāris, un pēc tam sertifikātam ir jābūt saistītam ar šī atslēgu pāra publisko atslēgu. Sertifikātā jābūt tieši tai publiskajai atslēgai, kas atrodas Rutoken, tas ir svarīgi. Ja mēs vienkārši izveidojam atslēgu pāri un sertifikātu uzreiz lietojumprogrammas klienta pusē, tad kā serveris pēc tam var atšifrēt šo šifrēto ziņojumu? Galu galā viņš neko nezina ne par atslēgu pāri, ne par sertifikātu.

Ja iedziļināties šajā tēmā, jūs varat atrast interesantu informāciju internetā. Ir dažas sertifikācijas iestādes, kurām mēs acīmredzami uzticamies. Šīs sertifikācijas iestādes var izsniegt sertifikātus lietotājiem; tās instalē šos sertifikātus savā serverī. Pēc tam, kad klients piekļūst šim serverim, viņš redz tieši šo sertifikātu un redz, ka to ir izdevusi sertifikācijas iestāde, kas nozīmē, ka šim serverim var uzticēties. Internetā ir arī daudz informācijas par to, kā visu pareizi iestatīt. Piemēram, jūs varat sākt ar šo.

Ja mēs atgriežamies pie savas problēmas, risinājums šķiet acīmredzams. Jums kaut kā jāizveido savs sertifikācijas centrs. Bet pirms tam ir jāizdomā, uz kāda pamata sertifikācijas centram jāizsniedz lietotājam sertifikāts, jo viņš par to neko nezina. (Piemēram, viņa vārds, uzvārds utt.) Ir tāda lieta, ko sauc par sertifikāta pieprasījumu. Vairāk informācijas par šo standartu var atrast, piemēram, Vikipēdijā ru.wikipedia.org/wiki/PKCS
Mēs izmantosim versiju 1.7 — PKCS#10.

Aprakstīsim Rutoken sertifikāta ģenerēšanas algoritmu (sākotnējais avots: dokumentāciju):

  1. Mēs izveidojam klienta atslēgu pāri un saglabājam to Rutoken. (saglabāšana notiek automātiski)
  2. Mēs izveidojam klientam sertifikāta pieprasījumu.
  3. No klienta mēs nosūtām šo pieprasījumu uz serveri.
  4. Kad mēs saņemam pieprasījumu pēc sertifikāta serverī, mēs izsniedzam sertifikātu no mūsu sertifikācijas iestādes.
  5. Mēs nosūtām šo sertifikātu klientam.
  6. Mēs saglabājam Rutoken sertifikātu klientam.
  7. Sertifikāts ir jāsaista ar atslēgu pāri, kas tika izveidots pirmajā darbībā.

Tagad kļūst skaidrs, kā serveris varēs atšifrēt klienta parakstu, jo tas pats viņam izsniedza sertifikātu.

Nākamajā daļā mēs sīkāk aplūkosim, kā iestatīt sertifikātu iestādi, pamatojoties uz pilnvērtīgu atvērtā koda kriptogrāfijas bibliotēku openSSL.

Avots: www.habr.com

Pievieno komentāru