Útok Coppersmith popisuje třídu kryptografických útoků na veřejný klíč kryptosystému RSA založených na Coppersmithově metodě . Zvláštností použití této metody pro RSA útoky jsou případy, kdy je veřejný exponent malý nebo kdy je soukromý klíč částečně znám.
Veřejný klíč kryptosystému RSA je dvojice přirozených čísel , kde je součin dvou prvočísel a , a číslo je veřejný exponent. Celé číslo ( , kde je Eulerova funkce ) je spojeno s hodnotou . Obvykle se prvočísla berou jako kvalita obsahující malý počet jednotlivých bitů v binárním zápisu, například Fermat prvočísla 17, 257 nebo 65537.
Tajný klíč je určen prostřednictvím soukromého exponentu . Číslo je multiplikativně inverzní k číslu modulo , to znamená, že číslo splňuje vztah:
.
Pár je publikován jako veřejný klíč RSA ( angl . RSA public key ) a pár hraje roli soukromého klíče RSA ( eng . RSA private key ) a je držen v tajnosti.
Dovolit a být normalizovaný polynom stupně . Nechte ,. _ Útočník pak s daným párem efektivně najde všechna celá čísla vyhovující . Doba provádění je určena provedením algoritmu LLL na mřížce dimenzí , kde . [2]
DůkazNechť je přirozené číslo , které budeme definovat později. Pojďme definovat
Polynomy používáme pro a jako základ naší mřížky . Například když a dostaneme mřížkovou matici rozloženou po řádcích:
,
kde "—" označuje nenulové mimodiagonální prvky, jejichž hodnota neovlivňuje determinant . Velikost této mřížky je a její determinant se vypočítá takto:
To vyžadujeme . z toho vyplývá
které lze zjednodušit
,
kde a pro všechny . Pokud vezmeme , pak dostaneme a, tedy a . Konkrétně, pokud chceme řešit pro libovolný , postačí vzít , kde . [3]
Předpokládejme, že jeden odesílatel pošle stejnou zprávu v zašifrované podobě určitému počtu lidí , z nichž každý používá stejný malý exponent kódování , řekněme , a různé páry a . Odesílatel zašifruje zprávu pomocí veřejného klíče každého uživatele a odešle ji příslušnému příjemci. Poté, pokud protivník naslouchá přenosovému kanálu a shromažďuje přenášené šifrové texty , bude schopen obnovit zprávu .
Důkaz [4]Předpokládejme, že nepřítel byl zachycen a kde . Předpokládáme, že jsou relativně prvočísla , jinak největší společný dělitel jiný než jednota znamenal nalezení dělitele jednoho z . Aplikováním čínské věty o zbytku na a dostaneme takové, že , který má hodnotu . Když to však víme , dostáváme . To znamená , že protivník může dešifrovat zprávu tím , že vezme krychli z .
Pro obnovení zprávy s libovolnou hodnotou exponentu otevřeného kódování je nutné, aby protivník zachytil šifrové texty .
Předpokládejme veřejný klíč RSA , kde délka je -bitů. Vezměme si hodně . Nechť zpráva není delší než bitů. Definujme a , kde a jsou odlišná celá čísla a a Pokud protivník obdrží obě šifry od (ale nepřijme nebo ), pak může efektivně obnovit zprávu .
Důkaz [2]Pojďme definovat a . Víme, že když , tyto polynomy mají společný kořen. Jinými slovy, toto je kořen „výsledku“ . stupně nejčastěji . Navíc, . Proto je to malý modulo kořen a protivník jej může efektivně najít pomocí Coppersmithovy věty . Jakmile je znám, útok Franklin-Reiter může být použit ke krytí , tedy a .