A Michael J. Wiener kriptológusról elnevezett Wiener-támadás egyfajta kriptográfiai támadás az RSA algoritmus ellen . A támadás a folyamatos tört módszert használja a rendszer törésére egy kis zárt kitevővel .
Mielőtt elkezdené a Wiener-támadás működésének leírását, érdemes bevezetni néhány RSA -ban használt fogalmat [1] . További részletek az RSA fő cikkében találhatók .
Az üzenetek RSA séma szerinti titkosításához nyilvános kulcsot használnak - egy számpárt , a visszafejtéshez - egy privát kulcsot . A számokat nyitott és zárt kitevőknek, a számokat modulusnak nevezzük. Modulus , ahol és két prímszám . A zárt, nyitott kitevő és a modulus közötti kapcsolatot a következőképpen adjuk meg , ahol az Euler-függvény .
Ha a nyilvános kulcsot rövid időn belül vissza lehet állítani , akkor a kulcs sebezhető: miután információt kaptak a titkos kulcsról , a támadóknak lehetőségük van visszafejteni az üzenetet.
Az RSA kriptorendszert Ronald Rivest , Adi Shamir és Leonard Adleman találta fel, és először 1977-ben publikálták [1] . A cikk megjelenése óta számos kutató vizsgálta az RSA kriptorendszer sebezhetőségét. [2] A legtöbb ilyen támadás az algoritmus potenciálisan veszélyes megvalósításait használja, és kifejezett feltételeket használ az algoritmus néhány hibájára: közös modulus, kis nyilvános kulcs, kis privát kulcs [3] . Így egy kriptográfiai támadási algoritmust az RSA algoritmus ellen kis privát kulccsal javasolt Michael J. Wiener kriptológus egy 1990-ben megjelent cikkében. [4] Wiener tétele kimondja, hogy ha a kulcs kicsi, akkor a privát kulcs lineáris időben megtalálható .
Az RSA titkosítási rendszerben Bob kisebb értéket használhat nagy véletlenszám helyett az RSA visszafejtési teljesítményének javítására . Wiener támadása azonban azt mutatja, hogy a for számára kis érték kiválasztása bizonytalan titkosítást eredményez, amelyben a támadó vissza tudja állítani az összes titkos információt, azaz feltörheti az RSA rendszert . Ez a feltörés Wiener-tételen alapul, amely kis értékekre érvényes . Wiener bebizonyította, hogy a támadó hatékonyan meg tudja találni , amikor .
Wiener néhány ellenintézkedést is bevezetett támadása ellen. A két módszert az alábbiakban ismertetjük: [5]
1. Nagy nyilvános kulcs kiválasztása :
Cserélje ki a , ahol néhány nagy . Ha elég nagy, azaz , akkor Wiener támadása nem alkalmazható, bármilyen kicsi is legyen .2. A kínai maradéktételt használva :
Válassza ki , hogy a és , és kicsik legyenek, de nem önmaga, akkor a gyors üzenet visszafejtése a következőképpen hajtható végre:Mert a
,akkor van egy egész szám :
.Érdemes az előző egyenletben meghatározni és behelyettesíteni :
.Ha és jelöljük , akkor az előző egyenletbe való behelyettesítés a következőt kapja:
.Ha az egyenlet mindkét oldalát elosztjuk -vel , akkor kiderül, hogy:
, hol .Ennek eredményeként valamivel kevesebb, mint , és az első töredék teljes egészében nyilvános információkból áll . Azonban még mindig szükség van egy módszerre egy ilyen feltételezés tesztelésére. Míg az utolsó egyenlet a következőképpen írható fel:
.Egyszerű algebrai műveletek és azonosságok segítségével megállapítható egy ilyen feltevés pontossága . [6]
Hadd , hol . Hadd .
Ha van hol , a cracker meggyógyulhat . [7]
A bizonyítás folyamatos törteket használó közelítéseken alapul . [nyolc]
Mivel , akkor létezik , amelyre . Következésképpen:
.Tehát ez egy közelítés . Annak ellenére, hogy a cracker nem tudja , használhatja a közelítéshez. Sőt, mert:
és , van: és
A helyett használva a következőket kapjuk:
Ez azt jelenti . Mivel a , azt jelenti , és a végén kiderül:
aholAmióta és ezért:
Mivel , akkor és ez alapján azt jelenti:
Az (1) és (2) bekezdésből arra következtethetünk, hogy:
A tétel jelentése az, hogy ha a fenti feltétel teljesül, akkor megjelenik a konvergensek között a szám folytonos törtrészére .
Ezért az algoritmus végül megtalálja az ilyeneket [9] .
Nyilvános RSA kulcsot veszünk figyelembe , amellyel meg kell határozni a privát kitevőt . Ha ez ismert , akkor ez a következő [10] algoritmus szerint tehető meg :
1. Bontsa ki a törtet egy folyamatos törtté . 2. Egy folytatólagos törthez keresse meg az összes lehetséges konvergens halmazát . 3. Fedezze fel a megfelelő frakciót : 3.1. Határozza meg a lehetséges értéket számítással . 3.2. Az egyenlet megoldása után kapjunk egy gyökérpárt . 4. Ha az egyenlőség igaz egy gyökpárra , akkor a zárt kitevő megtalálható . Ha a feltétel nem teljesül, vagy nem sikerült gyökérpárt találni , akkor meg kell vizsgálni a következő megfelelő frakciót , visszatérve a 3. lépéshez.Ez a két példa [10] egyértelműen bemutatja a privát kitevő megtalálását, ha ismert az RSA nyilvános kulcsa .
RSA nyilvános kulcs esetén :
e / N = [0, 1, 7, 3, 31, 5, 2, 12, 1, 28, 13, 2, 1, 2, 3] | |||||
---|---|---|---|---|---|
n | k n / d n | phi n | p n | q n | p n q n |
0 | 0/1 | - | - | - | - |
egy | 1/1 | 1073780832 | - | - | - |
2 | 7/8 | 1227178094 | - | - | - |
3 | 22/25 | 1220205492 | 30763 | 39667 | 1220275921 |
Kiderül, hogy . Ebben a példában láthatja, hogy a kicsiség feltétele teljesül .
RSA nyilvános kulcs esetén :
e / N = [0, 1, 1, 1, 2, 1, 340, 2, 1, 1, 3, 2, 3, 1, 21, 188] | |||||
---|---|---|---|---|---|
n | k n / d n | f n | p n | q n | p n q n |
0 | 0/1 | - | - | - | - |
egy | 1/1 | 1779399042 | - | - | - |
2 | 1/2 | 3558798085 | - | - | - |
3 | 2/3 | 2669098564 | - | - | - |
négy | 5/8 | 2847038468 | - | - | - |
5 | 7/11 | 2796198496 | 47129 | 59333 | 2796304957 |
Kiderül, hogy . Ebben a példában azt is észreveheti, hogy a kicsinységi feltétel teljesül .
Az algoritmus bonyolultságát a konvergensek száma határozza meg a szám folytonos törtrészéhez , ami a nagyságrendű érték . Azaz a szám lineáris időben [11] visszaáll a kulcshosszból .