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
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.
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,
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ő:
- A kliens hitelesítési kérelmet küld a szervernek.
- A szerver egy véletlenszerű karakterlánc elküldésével válaszol az ügyfél kérésére.
- A kliens véletlenszerű 32 bittel tölti be ezt a karakterláncot.
- A kliens a kapott karakterláncot aláírja a tanúsítvánnyal.
- Az ügyfél a kapott titkosított üzenetet elküldi a szervernek.
- A szerver az eredeti, titkosítatlan üzenet fogadásával ellenőrzi az aláírást.
- A kiszolgáló a kapott titkosítatlan üzenet utolsó 32 bitjét eltávolítja.
- A szerver összehasonlítja a kapott eredményt az engedélyezés kérésekor elküldött üzenettel.
- 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
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.
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
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:
- Létrehozunk egy kulcspárt az ügyfélen, és elmentjük a Rutokenre. (a mentés automatikusan megtörténik)
- Tanúsítványkérést készítünk az ügyfélen.
- A klienstől ezt a kérést elküldjük a szervernek.
- 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.
- Ezt a tanúsítványt elküldjük az ügyfélnek.
- A Rutoken tanúsítványt elmentjük az ügyfélen.
- 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