Wienerův útok , pojmenovaný po kryptologovi Michaelu J. Wienerovi, je typem kryptografického útoku proti algoritmu RSA . Útok používá metodu pokračujícího zlomku k rozbití systému malým uzavřeným exponentem .
Před zahájením popisu toho, jak Wienerův útok funguje, stojí za to představit některé koncepty, které se používají v RSA [1] . Další podrobnosti naleznete v hlavním článku RSA .
Pro šifrování zpráv podle schématu RSA se používá veřejný klíč - dvojice čísel , pro dešifrování - soukromý klíč . Čísla se nazývají otevřené a uzavřené exponenty, číslo se nazývá modul. Modul , kde a jsou dvě prvočísla . Souvislost mezi uzavřeným, otevřeným exponentem a modulem je dána jako , kde je Eulerova funkce .
Pokud lze veřejný klíč obnovit v krátké době , pak je klíč zranitelný: po obdržení informace o soukromém klíči mají útočníci příležitost zprávu dešifrovat.
Kryptosystém RSA vynalezli Ronald Rivest , Adi Shamir a Leonard Adleman a poprvé byl publikován v roce 1977 [1] . Od zveřejnění článku byl kryptosystém RSA zkoumán kvůli zranitelnosti mnoha výzkumníků. [2] Většina těchto útoků využívá potenciálně nebezpečné implementace algoritmu a používá explicitní podmínky pro nějakou chybu v algoritmu: společný modul, malý veřejný klíč, malý soukromý klíč [3] . Kryptolog Michael J. Wiener tedy v článku poprvé publikovaném v roce 1990 navrhl kryptografický algoritmus útoku proti algoritmu RSA s malým soukromým klíčem. [4] Wienerův teorém říká, že pokud je klíč malý, lze soukromý klíč nalézt v lineárním čase .
V kryptosystému RSA může Bob ke zlepšení výkonu dešifrování RSA použít spíše menší hodnotu než velké náhodné číslo . Wienerův útok však ukazuje, že volba malé hodnoty pro způsobí nezabezpečené šifrování, ve kterém může útočník obnovit všechny tajné informace, tj. prolomit systém RSA . Tento hack je založen na Wienerově teorému, který platí pro malé hodnoty . Wiener dokázal, že útočník dokáže efektivně najít , kdy .
Wiener také zavedl některá protiopatření proti jeho útoku. Tyto dva způsoby jsou popsány níže: [5]
1. Výběr velkého veřejného klíče :
Nahradit za , kde pro některé velké . Když je Wienerův útok dostatečně velký, to znamená , že je nepoužitelný, bez ohledu na to, jak je malý .2. Pomocí čínské věty o zbytku :
Vyberte tak, aby a , a byly malé, ale ne samy o sobě, pak lze rychlé dešifrování zpráv provést následovně:Protože
,pak existuje celé číslo takové, že:
.Stojí za to určit a dosadit v předchozí rovnici :
.Pokud označíme a , pak substituce do předchozí rovnice dostane:
.Vydělením obou stran rovnice číslem se ukáže, že:
, kde .V důsledku toho je o něco méně než a první zlomek se skládá výhradně z veřejných informací . Stále je však zapotřebí metoda pro testování takového předpokladu. Zatímco poslední rovnici lze zapsat jako:
.Pomocí jednoduchých algebraických operací a identit lze stanovit přesnost takového předpokladu. [6]
Nechte , kde . Nechte _
Mít kde , cracker může zotavit . [7]
Důkaz je založen na aproximacích pomocí spojitých zlomků . [osm]
Od , pak existuje pro které . Tudíž:
.Jedná se tedy o přiblížení . I když cracker nezná , může jej použít k aproximaci. Opravdu, protože:
a , máme: a
Použitím namísto , dostaneme:
Nyní znamená . Protože , znamená , a nakonec se ukáže:
kdeProtože a proto:
Protože , potom a na základě toho znamená:
Z (1) a (2) můžeme vyvodit, že:
Význam věty je, že pokud je splněna výše uvedená podmínka, objeví se mezi konvergenty pro pokračující zlomek čísla .
Proto algoritmus nakonec takové najde [9] .
Je uvažován veřejný RSA klíč , pomocí kterého je nutné určit privátní exponent . Pokud je známo, že , pak to lze provést podle následujícího algoritmu [10] :
1. Rozšiřte zlomek na pokračující zlomek . 2. Pro pokračující zlomek najděte množinu všech možných konvergentů . 3. Prozkoumejte vhodnou frakci : 3.1. Určete možnou hodnotu výpočtem . 3.2. Po vyřešení rovnice získejte pár kořenů . 4. Je-li rovnost pravdivá pro pár kořenů , pak je uzavřený exponent nalezen . Pokud není podmínka splněna nebo nebylo možné najít pár kořenů , je nutné prozkoumat další vhodný zlomek a vrátit se ke kroku 3.Tyto dva příklady [10] jasně demonstrují nalezení soukromého exponentu , pokud je znám veřejný klíč RSA .
Pro veřejný klíč RSA :
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 | - | - | - | - |
jeden | 1/1 | 1073780832 | - | - | - |
2 | 7/8 | 1227178094 | - | - | - |
3 | 22/25 | 1220205492 | 30763 | 39667 | 1220275921 |
Ukazuje se, že . V tomto příkladu můžete vidět, že podmínka malosti je splněna .
Pro veřejný klíč RSA :
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 | - | - | - | - |
jeden | 1/1 | 1779399042 | - | - | - |
2 | 1/2 | 3558798085 | - | - | - |
3 | 2/3 | 2669098564 | - | - | - |
čtyři | 5/8 | 2847038468 | - | - | - |
5 | 7/11 | 2796198496 | 47129 | 59333 | 2796304957 |
Ukazuje se, že . V tomto příkladu si také můžete všimnout, že podmínka malosti je splněna .
Složitost algoritmu je určena počtem konvergentů pro pokračující zlomek čísla , což je hodnota řádu . To znamená, že číslo je obnoveno v lineárním čase [11] od délky klíče .