Rutoken technológia használatában szerzett tapasztalat a felhasználók rendszerben való regisztrálásához és engedélyezéséhez (1. rész)

Jó napot Szeretném megosztani tapasztalataimat ebben a témában.

A Rutoken hardver- és szoftvermegoldások a hitelesítés, az információbiztonság és az elektronikus aláírás területén. Lényegében ez egy flash meghajtó, amely képes tárolni a hitelesítési adatokat, amelyeket a felhasználó a rendszerbe való bejelentkezéshez használ.

Ebben a példában a Rutoken EDS 2.0-t használjuk.

A Rutoken használatához szüksége van illesztőprogram telepítése windowsra.

Windows esetén egyetlen illesztőprogram telepítése biztosítja, hogy minden, ami szükséges, telepítve legyen, így az operációs rendszer látja a Rutoken-t, és dolgozni tud vele.

A Rutokennel többféleképpen kommunikálhat. Elérheti az alkalmazás szerveroldaláról vagy közvetlenül a kliens oldaláról. Ez a példa a Rutokennel való interakciót vizsgálja az alkalmazás kliens oldaláról.

Az alkalmazás kliens része a rutoken beépülő modulon keresztül kommunikál a rutokennel. Ez egy olyan program, amelyet minden böngészőben külön telepítenek. Windows esetén csak le kell töltenie és telepítenie kell a bővítményt, ezen a linken található.

Ennyi, most már interakcióba léphetünk a Rutokennel az alkalmazás kliens oldaláról.

Ez a példa azt az ötletet tárgyalja, hogy egy felhasználói engedélyezési algoritmust implementáljunk a rendszerben a kihívás-válasz séma használatával.

Az ötlet lényege a következő:

  1. A kliens hitelesítési kérelmet küld a szervernek.
  2. A szerver egy véletlenszerű karakterlánc elküldésével válaszol az ügyfél kérésére.
  3. A kliens véletlenszerű 32 bittel tölti be ezt a karakterláncot.
  4. A kliens a kapott karakterláncot aláírja a tanúsítvánnyal.
  5. Az ügyfél a kapott titkosított üzenetet elküldi a szervernek.
  6. A szerver az eredeti, titkosítatlan üzenet fogadásával ellenőrzi az aláírást.
  7. A kiszolgáló a kapott titkosítatlan üzenet utolsó 32 bitjét eltávolítja.
  8. A szerver összehasonlítja a kapott eredményt az engedélyezés kérésekor elküldött üzenettel.
  9. Ha az üzenetek megegyeznek, akkor az engedélyezés sikeresnek minősül.

A fenti algoritmusban van egy tanúsítvány. Ehhez a példához meg kell értened néhány kriptográfiai elméletet. A Habrén van nagyszerű cikk ebben a témában.

Ebben a példában aszimmetrikus titkosítási algoritmusokat fogunk használni. Az aszimmetrikus algoritmusok megvalósításához kulcspárral és tanúsítvánnyal kell rendelkeznie.

A kulcspár két részből áll: egy privát kulcsból és egy nyilvános kulcsból. A privát kulcsnak, ahogy a neve is sugallja, titkosnak kell lennie. Az információk visszafejtésére használjuk. A nyilvános kulcs bárki számára kiosztható. Ez a kulcs az adatok titkosítására szolgál. Így bármely felhasználó titkosíthatja az adatokat a nyilvános kulccsal, de csak a privát kulcs tulajdonosa tudja visszafejteni ezeket az információkat.

A tanúsítvány egy elektronikus dokumentum, amely információkat tartalmaz a tanúsítványt birtokló felhasználóról, valamint egy nyilvános kulcsot. A tanúsítvánnyal a felhasználó bármilyen adatot aláírhat és elküldheti a szervernek, amely ellenőrizheti az aláírást és visszafejtheti az adatokat.

Az üzenet tanúsítvánnyal való helyes aláírásához megfelelően létre kell hoznia azt. Ehhez először egy kulcspár jön létre a Rutokenen, majd ennek a kulcspárnak a nyilvános kulcsához kell egy tanúsítványt kapcsolni. A tanúsítványnak pontosan a Rutokenen található nyilvános kulccsal kell rendelkeznie, ez fontos. Ha egyszerűen létrehozunk egy kulcspárt és egy tanúsítványt azonnal az alkalmazás kliens oldalán, akkor hogyan tudja a szerver visszafejteni ezt a titkosított üzenetet? Hiszen egyáltalán nem tud semmit sem a kulcspárról, sem a tanúsítványról.

Ha mélyebben belemerül a témába, érdekes információkat találhat az interneten. Vannak bizonyos tanúsító hatóságok, amelyekben nyilvánvalóan megbízunk. Ezek a hitelesítő hatóságok tanúsítványokat állíthatnak ki a felhasználóknak, és telepítik ezeket a tanúsítványokat a szerverükre. Ezt követően, amikor a kliens hozzáfér ehhez a szerverhez, pontosan ezt a tanúsítványt látja, és azt látja, hogy azt egy hitelesítésszolgáltató állította ki, ami azt jelenti, hogy ez a szerver megbízható. Az interneten is rengeteg információ található arról, hogyan kell mindent helyesen beállítani. Például kezdheti ezzel.

Ha visszatérünk a problémánkhoz, a megoldás kézenfekvőnek tűnik. Valahogy létre kell hoznia saját tanúsítási központját. De előtte ki kell találni, hogy a hitelesítési központ milyen alapon állítson ki tanúsítványt a felhasználónak, mert az nem tud róla semmit. (Például a keresztneve, vezetékneve stb.) Van egy ilyen, amit tanúsítványkérésnek hívnak. Erről a szabványról további információk találhatók például a Wikipédián ru.wikipedia.org/wiki/PKCS
Az 1.7-es verziót fogjuk használni – PKCS#10.

Leírjuk a Rutoken tanúsítvány generálására szolgáló algoritmust (eredeti forrás: a dokumentáció):

  1. Létrehozunk egy kulcspárt az ügyfélen, és elmentjük a Rutokenre. (a mentés automatikusan megtörténik)
  2. Tanúsítványkérést készítünk az ügyfélen.
  3. A klienstől ezt a kérést elküldjük a szervernek.
  4. Amikor egy tanúsítvány iránti kérelmet kapunk a szerveren, tanúsítványt állítunk ki a tanúsító hatóságunktól.
  5. Ezt a tanúsítványt elküldjük az ügyfélnek.
  6. A Rutoken tanúsítványt elmentjük az ügyfélen.
  7. A tanúsítványt az első lépésben létrehozott kulcspárhoz kell kötni.

Most világossá válik, hogy a szerver hogyan tudja majd visszafejteni az ügyfél aláírását, mivel maga adta ki neki a tanúsítványt.

A következő részben közelebbről megvizsgáljuk, hogyan állíthatja be a tanúsító hatóságot a teljes értékű nyílt forráskódú kriptográfiai könyvtár openSSL alapján.

Forrás: will.com

Hozzászólás