RSA-eljárás: hogyan konvertálnak egy üzenetet számmá?
pl. legyen az üzenet: m = 'password123'
Wikipédia: ( [link] )
"A nyilvános kulcs N=3233, e=17. Egy például ASCII-ba átkódolt m üzenetre az RSA-eljárás a következő:
c=m^e mod N
c=m^17 mod 3233
"
ASCII-ba hogyan konvertálják? Addig érthető, hogy minden betű egy számot jelent de egy teljes szöveg esetén ez hogyan működik?
Egy nagy bináris számot csinálsz a sok karakterből.
Pl:
abc = 97, 98, 99 => 97*256*256 + 98*256 + 99
Nyilván max annyi bites lehet ez a nagy szám amennyit a "kulcsod" enged. Utána pedig csak szimplán titkodítod a következő részt.
Ezt egy kicsit pontosítanám: "Nyilván max annyi bites lehet ez a nagy szám amennyit a "kulcsod" enged"
Az üzenetednek (m) kisebbnek kell lennie mint az N.
A te példádban N=3233, ettől kisebb legnagyobb 2 hatvány a 2048 = 2^11... tehát 11 bitet tudsz egyszerre titkosíteni, azaz még 2 teljes karaktert sem.
Ha ASCII-t használunk akkor átkódolható könnyen számmá. Úgy hogy minden karakter megfeleltethető egy egésznek 0-255 között, kvázi 256-os számrendszerbe felírt számnak értelmezve a szöveget. Ha nem férne bele a szöveg az RSA kulcshossza miatt akkor fel kell darabolni a szöveget akkora darabokra amik beleférnek és darabonként kell titkosítani.
Az még nagyon kevés egy gyakorlati megvalósításhoz amit az a wiki ír róla. Az ilyen "Móriczka" implementáció lenne. Kezdve onnan hogy szigorúbb előírás kell a random generátornak mint egy sima random generátornak, kriptonráf random kell. (Ugyanis egy detikált sima randomgenerátor az csak a statiszikai teszteken ment át, meg matematikailag is bizonyított meg definiált hogy mi az tulajdonképpen ... Véletlenszerűséget garantál, de azt nem hogy a működésének ismeretében ne tudjam előre jósolni, hogy mi lesz. Ha nem is tudom pontosan előre, de kellően kevés alternatívára le lehet szűkíteni ahhoz hogy végigpróbáljuk, illetve n darab tag esetében kitalálni a következő tagot.)
Továbbá gondoskodni kell hogy a p és a q kellően távol legyen egymástól, ennek is meg van a módja, hogy trükkösebb annál mint simán csak randomba vesz 2 nagy prímet. Úgynevezett erős prímek generálását csinálják gyakorlati célokra. Az e értékét se szabad csak úgy bárhogy választani amit az RSA megengedne, a 17 pl nem olyan biztonságos, nagyobb e kell. Ha az e nincs kellően távol p és q-tól az se jó, az is könnyíti a feltörést. Szóval egy csomó mindenre kell figyelni, nem triviális jól implementálni.
Sőt még az se jó biztonsági szempontból ha erős prímeket vettél megfelelően, megfelelő az e értéke is és csak simán ASCII-ból átalakítod. Gondolkodtató feladat, hogy ad ez törésre lehetőséget (nem akarom "lelőni" a megoldást) Ezért is fűszerezik még a gyakorlatba az rsa-t OAEP-el (Optimal Asymmetric Encryption Padding).
Elírás: "kriptonráf random kell"
Javítás : kriptográfiai random kell
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!