A nyilvános kulcsú kriptográfia az 1970-es években indult fejlÅ‘désnek. A korábban bemutatott Diffie-Helmann algoritmus mellett szintén 1976-ban született meg az RSA eljárás, ami a nevét arról a három matematikusról kapta, akik kitalálták: Ron Rivest, Adi Shamir és Len Adleman. Ez manapság a leggyakrabban használt titkosÃtási eljárások közé tartozik az interneten.
Az algoritmus a moduláris számelmélet és a prÃmszámelmélet egyes tételein alapszik. A rendszer attól lesz aszimetrikus, hogy két kulcs tartozik hozzá. Egy nyilvános kulcs, amit a titkosÃtásra használunk és egy privát kulcs, amit visszafejtésre használunk. A nyilvános kulcs onnan kapta a nevét, hogy ez titkosÃttatlan csatornán is átvithetÅ‘ minden gond nélkül, bárkivel megosztható és ennek ismeretében a kulcs birtokosa tud számunkra titkosÃtott üzeneteket küldeni, amit csak mi tudunk visszafejteni, hiszen csak mi ismerjük ideális esetben a titkos kulcsunkat.
Itt is a leÃrás során a matematikai dolgokba nagyon nem merülök el, csak annyira amennyire szükséges. Nézzük meg tehát, hogy is működik az RSA:
- Véletlenszerűen válasszunk két nagy prÃmet,
p-t ésq-t. - Számoljuk ki az
N = pqértéket, ami a nyilvános és titkos kulcs modulusa lesz. - Számoljuk ki az Euler-féle
φfüggvény értékét N-re:φ(N) = (p -1)(q-1) - Válasszunk egy olyan egész
eszámot, amire teljesül1 < e < φ(N), valaminteésφ(N)legnagyobb közös ösztója 1. - SzámÃtsuk ki d-t úgy hogy, a következÅ‘ teljesüljön:
de = 1 + kφ(N)valamelykpozitÃv egészre
A nyilvános kulcs N modulusból és e kitevÅ‘bÅ‘l fog állni, mÃg a titkos kulcs N modulusból és d kitevÅ‘bÅ‘l áll. Utóbbi párt kell titokban tartani.
A gyakorlatban ha e kis bithosszal rendelkezik és kicsi a Hamming súlya, akkor hatékonyabb titkosÃtást kapunk. e értékének a leggyakrabban 65537-et (216+1) szokás választani. A legkisebb és leggyorsabb lehetséges e érték 3, de ennek az alkalmazása nem javasolt, mivel bizonyos beállÃtások mellett kevésbé biztonságos kódot eredményez.
A TitkosÃtás folyamata
Amennyiben Alice üzenetet szeretne küldeni Bob-nak, akkor ismernie kell Bob publikus kulcsát és ennek a fordÃtottja is igaz. A publikus kulcsok nem biztonságos hálózaton is továbbÃthatóak.
A publikus kulcsok ismerete után a következÅ‘ dolog, ami kell a titkosÃtáshoz, az maga az üzenet, amit titkosÃtani szeretnénk. Mivel az RSA szintén blokkokban dolgozik az üzenetet fel kell bÅ‘vÃteni, hogy pont egész számú blokkból álljon. Az RSA erre a célra a PKCS#1 algoritmust alkalmazza, de bármilyen más megoldás alkalmazható, a lényeg, hogy az üzenet blokkjainak mérete, m kisebb legyen, mint a kulcs generálásakor kapott N szám.
A titkos üzenet c ezek felhasználásával az alábbi módon állÃtható elÅ‘: c = me mod N
Bob a kapott c üzenetet a saját titkos kulcsával az alábbi módon tudja visszafejteni: m = cd
Identitás ellenőrzés
A Diffie–Hellman csere során emlÃtésre került a Man in the middle támadás. Ez a probléma az RSA esetén is fennáll, mivel nem tudhatja Alice, hogy valójában Bob-al kommunikál-e.
A probléma áthidalására dolgozták ki a digitális aláÃrás algoritmust (EDSA), ami lehetÅ‘vé teszi a felek azonosÃtását. Ez egy kétkulcsos titkosÃtási rendszert és egy Hash algoritmust kombinál.
Alice a Bob-nak küldendÅ‘ üzenetén számol egy hash értéket. Ezt a Hash értéket titkosÃtja az aláÃráshoz használt kulcspárjának a privát kulcsával. Bob az üzenet megkapása után Alice aláÃrásához tartozó publikus kulcs segÃtségével dekódolja a hash értéket, majd az üzenethez Å‘ is kiszámolja a hash értéket. Ha az aláÃrás részeként kapott hash és az üzenet hash értéke egyezik, akkor Bob biztos lehet benne, hogy Alice küldte az üzenetet, mivel csak Alice rendelkezik az aláÃráshoz rendelt privát kulccsal.
Itt fontos megjegyezni, hogy az aláÃráshoz használt kulcspár nem azonos a titkosÃtáshoz használttal. Ha azonos kulcspárok kerülnének alkalmazásra, akkor nem titkosÃtott üzenetek aláÃrásával lényegében ismert bemenetre ismert kimenet csomagokat adnánk egy támadó kezébe, amibÅ‘l a titkos kulcsunkat meg tudná szerezni.