Wienerův útok

Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od verze recenzované 15. února 2019; kontroly vyžadují 8 úprav .

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 .

Krátce o RSA

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.

Historie algoritmu

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 .

Malý soukromý klíč

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ě:
  1. Nejprve se počítá
  2. Použití čínské věty o zbytku k výpočtu jedinečné hodnoty , která splňuje a . Výsledek vyhovuje podle potřeby. Jde o to, že Wienerův útok zde není použitelný, protože hodnota může být velká.

Jak funguje Wienerův útok

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]

Wienerova věta

Nechte , kde . Nechte _

Mít kde , cracker může zotavit . [7]

Důkaz Wienerovy věty

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:

kde

Protož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] .

Popis algoritmu

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.

Příklad toho, jak algoritmus funguje

Tyto dva příklady [10] jasně demonstrují nalezení soukromého exponentu , pokud je znám veřejný klíč RSA .

Pro veřejný klíč RSA :

Tabulka: nalezení uzavřeného exponentu d
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 :

Tabulka: nalezení uzavřeného exponentu d
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

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 .

Odkazy

  1. 12 Rivest , 1978 .
  2. Boneh, 1999 , Úvod, s. jeden.
  3. Coppersmith, 1996 .
  4. Wiener, 1990 .
  5. Wiener, 1990 , Boj proti pokračujícímu útoku frakcí na RSA., s. 557.
  6. Render, 2007 .
  7. Boneh, 1999 .
  8. Khaled, 2006 .
  9. Herman, 2012 , O zranitelnosti systému RSA. Malý tajný klíč., str. 283-284.
  10. 12. Kedmi , 2016 .
  11. Herman, 2012 , O zranitelnosti systému RSA. Malý tajný klíč., str. 284: "Počet těchto zlomků je hodnota v řádu O(ln(n)), to znamená, že číslo d je obnoveno v lineárním čase."

Literatura