Wiener-angrebet , opkaldt efter kryptolog Michael J. Wiener, er en form for kryptografisk angreb mod RSA-algoritmen . Angrebet bruger den fortsatte fraktionmetode til at bryde systemet med en lille lukket eksponent .
Før du starter en beskrivelse af, hvordan Wieners angreb fungerer, er det værd at introducere nogle begreber, der bruges i RSA [1] . Se RSA- hovedartiklen for flere detaljer .
For at kryptere beskeder i henhold til RSA -skemaet bruges en offentlig nøgle - et par numre , til dekryptering - en privat nøgle . Tal kaldes henholdsvis åbne og lukkede eksponenter, tallet kaldes modulet. Modulus , hvor og er to primtal . Forbindelsen mellem den lukkede, åbne eksponent og modulet er givet som , hvor er Euler-funktionen .
Hvis den offentlige nøgle kan gendannes på kort tid , så er nøglen sårbar: Efter at have modtaget information om den private nøgle , har angribere mulighed for at dekryptere beskeden.
RSA-kryptosystemet blev opfundet af Ronald Rivest , Adi Shamir og Leonard Adleman og først udgivet i 1977 [1] . Siden publiceringen af artiklen er RSA-kryptosystemet blevet undersøgt for sårbarheder af mange forskere. [2] De fleste af disse angreb bruger potentielt farlige implementeringer af algoritmen og bruger eksplicitte betingelser for en eller anden fejl i algoritmen: fælles modul, lille offentlig nøgle, lille privat nøgle [3] . En kryptografisk angrebsalgoritme mod RSA-algoritmen med en lille privat nøgle blev således foreslået af kryptolog Michael J. Wiener i en artikel, der først blev offentliggjort i 1990. [4] Wieners sætning siger, at hvis nøglen er lille, så kan den private nøgle findes i lineær tid .
I RSA -krypteringssystemet kan Bob bruge en mindre værdi i stedet for et stort tilfældigt tal for at forbedre RSA -dekrypteringsydelsen . Wieners angreb viser dog, at valg af en lille værdi for for vil resultere i en usikker kryptering, hvor en angriber kan gendanne alle de hemmelige oplysninger, altså bryde RSA -systemet . Dette hack er baseret på Wieners sætning, som er gyldig for små værdier på . Wiener beviste, at en angriber effektivt kan finde hvornår .
Wiener indførte også nogle modforanstaltninger mod sit angreb. De to metoder er beskrevet nedenfor: [5]
1. Valg af en stor offentlig nøgle :
Erstat med , hvor for nogle store . Når det er stort nok, dvs. , så er Wieners angreb uanvendeligt, uanset hvor lille .2. Brug af den kinesiske restsætning :
Vælg så, at og , og er små, men ikke sig selv, så kan hurtig beskeddekryptering udføres som følger:Fordi
,så er der et heltal , sådan at:
.Det er værd at bestemme og erstatte i den foregående ligning :
.Hvis vi betegner og , vil substitution i den foregående ligning give:
.Ved at dividere begge sider af ligningen med , viser det sig, at:
, hvor .Som et resultat, lidt mindre end , og den første fraktion består udelukkende af offentlig information . Der er dog stadig behov for en metode til at teste en sådan antagelse. Mens den sidste ligning kan skrives som:
.Ved hjælp af simple algebraiske operationer og identiteter kan man fastslå nøjagtigheden af en sådan antagelse. [6]
Lad , hvor . Lad .
At have hvor , kan en kiks komme sig . [7]
Beviset er baseret på tilnærmelser ved hjælp af fortsatte brøker . [otte]
Siden , så eksisterer for hvilke . Følgelig:
.Så dette er en tilnærmelse . Selvom kikseren ikke ved det, kan han bruge den til at tilnærme det. Faktisk fordi:
og , vi har: og
Ved at bruge i stedet for får vi:
Nu betyder det . Da , betyder , og i sidste ende viser det sig:
hvorSiden og derfor:
Da , da , og baseret på dette , betyder:
Fra (1) og (2) kan vi konkludere, at:
Betydningen af sætningen er, at hvis betingelsen ovenfor er opfyldt, så vises blandt konvergenterne for den fortsatte brøkdel af tallet .
Derfor vil algoritmen med tiden finde sådanne [9] .
En offentlig RSA-nøgle tages i betragtning , hvorved det er nødvendigt at bestemme den private eksponent . Hvis det er kendt at , så kan det gøres i henhold til følgende algoritme [10] :
1. Udvid fraktionen til en fortsat fraktion . 2. For en fortsat brøk , find mængden af alle mulige konvergenter . 3. Udforsk passende fraktion : 3.1. Bestem den mulige værdi ved at beregne . 3.2. Efter at have løst ligningen , få et par rødder . 4. Hvis lighed er sand for et par rødder , så findes den lukkede eksponent . Hvis betingelsen ikke er opfyldt, eller det ikke var muligt at finde et par rødder , er det nødvendigt at undersøge den næste passende fraktion , og vende tilbage til trin 3.Disse to eksempler [10] viser tydeligt at finde den private eksponent , hvis den offentlige RSA- nøgle er kendt .
For en offentlig RSA- nøgle :
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 | - | - | - | - |
en | 1/1 | 1073780832 | - | - | - |
2 | 7/8 | 1227178094 | - | - | - |
3 | 22/25 | 1220205492 | 30763 | 39667 | 1220275921 |
Det viser sig at . I dette eksempel kan du se, at lillehedsbetingelsen er opfyldt .
For en offentlig RSA- nøgle :
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 | - | - | - | - |
en | 1/1 | 1779399042 | - | - | - |
2 | 1/2 | 3558798085 | - | - | - |
3 | 2/3 | 2669098564 | - | - | - |
fire | 5/8 | 2847038468 | - | - | - |
5 | 7/11 | 2796198496 | 47129 | 59333 | 2796304957 |
Det viser sig at . I dette eksempel kan du også bemærke, at lillehedsbetingelsen er opfyldt .
Kompleksiteten af algoritmen bestemmes af antallet af konvergenter for den fortsatte brøkdel af tallet , som er en værdi af størrelsesordenen . Det vil sige, at tallet gendannes i lineær tid [11] fra nøglelængden .