RSA | |
---|---|
Datum založení / vytvoření / výskytu | 1977 [1] |
Pojmenoval podle | Rivest, Ronald Lynn , Adi Shamir a Leonard Max Adleman |
Vzorec popisující zákon nebo větu | [2] |
RSA (zkratka pro Rivest, Shamir a Adleman) je kryptografický algoritmus s veřejným klíčem založený na výpočetní složitosti problému faktorizace velkých celých čísel .
Kryptosystém RSA byl prvním systémem vhodným pro šifrování i digitální podpis . Algoritmus se používá ve velkém množství kryptografických aplikací, včetně PGP , S/MIME , TLS / SSL , IPSEC / IKE a dalších [3] .
Myšlenka asymetrického kryptosystému veřejného/soukromého klíče je připisována Whitfieldovi Diffiemu a Martinu Hellmanovi , kteří tento koncept zveřejnili v roce 1976. Zavedli také digitální podpisy a pokusili se aplikovat teorii čísel. Jejich formulace používala sdílený tajný klíč vytvořený exponencializací nějakého čísla modulo prvočíslo. Problém implementace jednosměrné funkce však nechali otevřený, možná proto, že složitost faktorizace nebyla v té době dobře pochopena.
Ron Rivest, Adi Shamir a Leonard Adleman z MIT se v průběhu roku několikrát pokusili vytvořit jednosměrnou funkci, kterou by bylo obtížné invertovat. Rivest a Shamir jako počítačoví vědci navrhli mnoho potenciálních funkcí a Adleman jako matematik byl zodpovědný za nalezení jejich slabin. Vyzkoušeli mnoho přístupů, včetně „batohu“ a „permutačních polynomů“. Chvíli si mysleli, že to, čeho chtějí dosáhnout, je nemožné kvůli protichůdným požadavkům. V dubnu 1977 strávili Pesach v domě jednoho studenta a vypili hodně vína Manishevitz, než se kolem půlnoci vrátili domů. Rivest, který nemohl usnout, si lehl na pohovku se svou učebnicí matematiky a začal přemýšlet o své jednosměrné funkci. Zbytek noci strávil formalizací svého nápadu a za svítání byla většina článku hotová. Algoritmus je nyní známý jako RSA - iniciály jejich příjmení, ve stejném pořadí jako v jejich příspěvku.
Clifford Cox, anglický matematik pracující pro britskou zpravodajskou službu Government Communications Headquarters (GCHQ), popsal ekvivalentní systém v interním dokumentu v roce 1973. Vzhledem k relativně drahým počítačům, které byly v té době nutné k jeho implementaci, byl však většinou považován za zvědavost a, pokud je známo, nebyla uplatněna. Jeho objev byl ale odhalen až v roce 1997 kvůli jeho přísně tajnému zařazení.
V srpnu 1977 se se svolením Ronalda Rivesta [4 ] objevil první popis kryptosystému RSA [5] ve sloupku Martina Gardnera „Mathematical Games“ ve Scientific American . Čtenáři byli také požádáni, aby rozluštili anglickou frázi zašifrovanou popsaným algoritmem:
9686 1477 8829 7431 0816 3569 8962 1829 | 9613 1409 0575 9874 2982 3147 8013 9451 | 7546 2225 9991 6951 2514 6622 3919 5781 | 2206 4355 1245 2093 5708 8839 9055 5154 |
Čísla n= 1143816...6879541 (129 desetinných míst, 425 bitů , také známá jako RSA-129 ) a e=9007 byla použita jako parametry otevřeného systému. Za dešifrování byla vypsána odměna 100 $. Podle Rivesta by rozklad čísla trvalo více než 40 kvadrilionů let [6] [3] . Avšak o něco více než 15 let později, 3. září 1993, bylo oznámeno spuštění projektu distribuovaných počítačů s koordinací prostřednictvím e-mailu s cílem nalézt faktory čísla RSA-129 a vyřešit hádanku. Během šesti měsíců více než 600 dobrovolníků z 20 zemí věnovalo CPU čas 1 600 strojům (z toho tři faxy). ). V důsledku toho byly nalezeny prvočinitele a rozluštěna původní zpráva, kterou je fráze " THE MAGIC WORDS ARE SQUEAMISH OSSIFRAGE " ("Magic words are a squeamish lamb ") [7] [8] . Vítězové věnovali cenu, kterou obdrželi, nadaci Free Software Foundation .
Po zveřejnění Martina Gardnera mohl kdokoli získat úplný popis nového kryptosystému zasláním žádosti poštou Ronaldu Rivestovi s přiloženou obálkou se zpáteční adresou a známkami za 35 centů. [5] Úplný popis nového kryptosystému byl zveřejněn v Communications of ACM v únoru 1978 [9] .
Patentová přihláška byla podána 14. prosince 1977, přičemž vlastníkem je MIT. Patent 4405829 byl vydán 20. září 1983 a jeho platnost vypršela 21. září 2000 [10] . Mimo USA však vynálezci neměli na algoritmus patent, protože ve většině zemí bylo nutné jej získat před prvním zveřejněním [11] .
V roce 1982 založili Rivest, Shamir a Adleman RSA Data Security EMC . V roce 1989 je RSA spolu se symetrickou šifrou DES zmíněna v RFC 1115 , čímž se začíná používat algoritmus v rodícím se internetu [12] a v roce 1990 začíná algoritmus používat Ministerstvo obrany USA [13] .
V listopadu 1993 je otevřeně zveřejněna verze 1.5 standardu PKCS1 , která popisuje použití RSA pro šifrování a vytváření elektronického podpisu. Nejnovější verze standardu jsou k dispozici také jako RFC ( RFC 2313 - 1.5, 1993; RFC 2437 - 2.0, 1998; RFC 3447 - 2.1, 2002).
V prosinci 1997 byla zveřejněna informace, podle které britský matematik Clifford Cocks, který pracoval v UK Government Communications Center ( GCHQ ) , popsal v roce 1973 kryptosystém podobný RSA [14] .
Kryptografické systémy s veřejným klíčem používají takzvané jednosměrné funkce , které mají následující vlastnosti:
Jednostrannost není chápána jako matematicky prokázaná jednosměrnost, ale praktická nemožnost spočítat reciproční hodnotu pomocí moderních výpočetních prostředků v dohledném časovém intervalu.
Kryptografický systém veřejného klíče RSA je založen na složitosti problému faktorizace součinu dvou velkých prvočísel. Pro šifrování se používá velký počet operací umocňování modulo . K dešifrování (reverzní operaci) v rozumném čase musíte umět vypočítat Eulerovu funkci daného velkého čísla, k čemuž potřebujete znát rozklad čísla na prvočinitele.
V kryptografickém systému s veřejným klíčem má každý účastník jak veřejný klíč ( anglicky public key ), tak soukromý klíč ( anglicky private key ). V kryptografickém systému RSA se každý klíč skládá z dvojice celých čísel. Každý účastník si vytváří svůj vlastní veřejný a soukromý klíč sám. Každý z nich uchovává soukromý klíč v tajnosti a veřejné klíče mohou být sdíleny s kýmkoli nebo dokonce zveřejněny. Veřejné a soukromé klíče každého účastníka zasílání zpráv v kryptosystému RSA tvoří „spárovaný pár“ v tom smyslu, že jsou vzájemně inverzní , tj.:
platné páry veřejného a soukromého klíče odpovídající šifrovací a dešifrovací funkce tak, že zprávy , kde je množina přípustných zpráv,Klíče RSA se generují následovně [15] :
1) jsou vybrána dvě různá náhodná prvočísla a daná velikost (například každé 1024 bitů ); 2) vypočítá se jejich součin , který se nazývá modul ; 3) hodnota Eulerovy funkce se vypočítá z čísla : ; 4) je vybráno celé číslo ( ), které odpovídá hodnotě funkce ; číslo se nazývá veřejný exponent ; _ obvykle berou jako prvočísla obsahující malý počet jednotlivých bitů v binárním zápisu , například prvočísla z Fermatových čísel : 17, 257 nebo 65537, protože v tomto případě bude čas potřebný pro šifrování pomocí rychlého umocňování kratší;Předpokládejme, že Bob chce poslat zprávu Alici .
Zprávy jsou celá čísla v rozsahu od do , coprime až n, tzn. .
Šifrovací algoritmus [15] :
|
Algoritmus dešifrování :
|
Toto schéma se v praxi nepoužívá z důvodu, že není prakticky spolehlivé (sémanticky zabezpečeno). Jednosměrná funkce E(m) je skutečně deterministická — se stejnými hodnotami vstupních parametrů (klíč a zpráva) produkuje stejný výsledek. To znamená, že není splněna nezbytná podmínka pro praktickou (sémantickou) spolehlivost šifry.
V současnosti nejpoužívanější[ kdy? ] je smíšený šifrovací algoritmus, ve kterém je klíč relace nejprve zašifrován a poté jej účastníci používají k šifrování svých zpráv pomocí symetrických systémů. Po ukončení relace je klíč relace obvykle zničen.
Algoritmus šifrování klíče relace je následující [17] :
Algoritmus :
|
Algoritmus :
|
V případě, že je klíč relace větší než modul , je klíč relace rozdělen do bloků požadované délky (v případě potřeby doplněn nulami) a každý blok je zašifrován.
Opravdu, pro
Ukažme, že:
.Jsou možné dva případy:
Protože čísla a jsou vzájemně inverzní vzhledem k násobení modulo , tj
pro nějaké celé číslo ,pak:
kde druhá identita vyplývá z Fermatovy věty .
pak
Tedy pro všechny rovnost
Podobně lze ukázat, že:
.Potom z čínské věty o zbytku
Etapa | Popis operace | Výsledek operace |
---|---|---|
Generování klíčů | Vyberte dvě různá prvočísla | , |
Vypočítat produkt | ||
Vypočítejte Eulerovu funkci | ||
Vyberte otevřeného vystavovatele | ||
Vypočítejte tajný exponent | ||
Publikovat veřejný klíč | ||
Uložit soukromý klíč | ||
Šifrování | Vyberte text, který chcete zašifrovat | |
Vypočítejte šifrový text | ||
Dešifrování | Vypočítejte původní zprávu |
Systém RSA lze použít nejen pro šifrování, ale také pro digitální podpis .
Předpokládejme, že Alice (strana ) potřebuje poslat Bobovi (strana ) zprávu potvrzenou elektronickým digitálním podpisem .
Algoritmus :
|
Algoritmus :
|
Protože digitální podpis poskytuje jak ověření autora zprávy, tak důkaz integrity obsahu podepsané zprávy, je analogický s vlastnoručním podpisem na konci ručně psaného dokumentu.
Důležitou vlastností digitálního podpisu je, že jej může ověřit každý, kdo má přístup k veřejnému klíči jeho autora. Jeden z účastníků výměny zpráv může po ověření pravosti digitálního podpisu přenést podepsanou zprávu někomu jinému, kdo je také schopen tento podpis ověřit. Strana může například straně zaslat elektronický šek. Poté, co strana zkontroluje podpis strany na šeku, může jej převést do své banky, jejíž zaměstnanci mají rovněž možnost podpis zkontrolovat a provést odpovídající peněžní transakci.
Všimněte si, že podepsaná zpráva není zašifrována . Je zasílán v původní podobě a jeho obsah není chráněn před porušením soukromí. Kombinací výše uvedených schémat šifrování a digitálního podpisu může RSA vytvářet zprávy, které jsou šifrované i digitálně podepsané. K tomu musí autor ke zprávě nejprve přidat svůj digitální podpis a poté výsledný pár (skládající se ze samotné zprávy a podpisu k ní) zašifrovat pomocí veřejného klíče patřícího příjemci. Příjemce přijatou zprávu dešifruje pomocí svého soukromého klíče [17] . Nakreslíme-li analogii se zasíláním běžných papírových dokumentů, pak je tento proces podobný, jako kdyby pod něj autor dokumentu vložil pečeť a následně ji vložil do papírové obálky a zalepil tak, aby obálku otevřel pouze osoba, které byla zpráva určena.
Protože ke generování klíčů dochází mnohem méně často než k operacím, které implementují šifrování, dešifrování a také vytváření a ověřování digitálního podpisu, představuje výpočetní úloha hlavní výpočetní složitost. Tento problém lze vyřešit pomocí rychlého umocňovacího algoritmu . Pomocí tohoto algoritmu vyžaduje výpočet operace násobení modulo [19] .
VíceProtože každý výpočet v kroku 2 nevyžaduje více než tři modulonásobení a tento krok se provádí jednou, složitost algoritmu lze odhadnout hodnotou .
Chcete-li analyzovat dobu provádění operací s veřejnými a soukromými klíči, předpokládejme, že veřejný klíč a soukromý klíč splňují vztahy , . Poté se v procesech jejich aplikace provádějí i modulonásobení , resp.
Doba provádění operací tedy roste s nárůstem počtu nenulových bitů v binární reprezentaci otevřeného exponentu e . Pro zvýšení rychlosti šifrování se často volí hodnota e rovna 17, 257 nebo 65537 - prvočísla , jejichž binární reprezentace obsahuje pouze dvě jednotky :
Podle heuristických odhadů se délka tajného exponentu , která závisí netriviálním způsobem na otevřeném exponentu a modulu , s vysokou pravděpodobností blíží délce . Proto je dešifrování dat pomalejší než šifrování a ověřování podpisu je rychlejší než jeho vytváření.
Algoritmus RSA je mnohem pomalejší než AES a další algoritmy, které používají symetrické blokové šifry .
Při dešifrování nebo podepisování zprávy v algoritmu RSA bude vypočítaný exponent poměrně velký počet (řádově 1000 bitů). Proto je vyžadován algoritmus, který snižuje počet operací. Protože čísla a v rozkladu jsou vlastníkovi soukromého klíče známy, můžeme vypočítat:
Vzhledem k tomu , a jsou čísla pořadí , budou tyto operace vyžadovat dvě zvýšení čísla na 512bitové výkonové modulo a 512bitové číslo. To je výrazně (pro 1024bitové testování ukázalo 3x) rychlejší než jedno zvýšení na 1024bitový modul napájení 1024bitového čísla. Dále zbývá obnovit a co lze udělat pomocí čínské věty o zbytku [20] .
Síla algoritmu je založena na složitosti výpočtu inverzní funkce k šifrovací funkci [21]
.Chcete-li vypočítat ze známých , musíte najít takové , že
to znamená najít inverzní prvek k v multiplikativní skupině zbytků modulo
Výpočet inverzního modulu není obtížný, ale útočník nezná hodnotu . K výpočtu Eulerovy funkce známého čísla potřebujete znát rozklad tohoto čísla na prvočinitele. Najít takové faktory je obtížný úkol a znalost těchto faktorů je „tajné dveře“ ( anglicky backdoor ), které používá pro výpočet majitel klíče. Existuje mnoho algoritmů pro hledání prvočinitelů, tzv. faktorizace , z nichž nejrychlejší je dnes metoda obecného číselného pole síta , jejíž rychlost pro k-bitové celé číslo je
pro některé .V roce 2010 skupina vědců ze Švýcarska, Japonska, Francie, Nizozemska, Německa a Spojených států úspěšně vypočítala data zašifrovaná pomocí 768bitového kryptografického klíče RSA. Zjištění prvočinitelů bylo provedeno obecnou metodou číselného pole síta [22] . Podle vědců lze po jejich práci považovat za spolehlivý šifrovací systém pouze klíče RSA s délkou 1024 bitů a více. Navíc by mělo být v příštích třech až čtyřech letech opuštěno šifrování s klíčem 1024 bitů [23] . Od 31. prosince 2013 již prohlížeče Mozilla nepodporují certifikáty CA s klíči RSA menšími než 2048 bitů [24] .
Navíc, když je algoritmus nesprávně nebo neoptimálně implementován nebo používán, jsou možné speciální kryptografické útoky, jako jsou útoky na schémata s malým tajným exponentem nebo schémata se společnou zvolenou hodnotou modulu.
Některé aplikace potřebují urychlit proces dešifrování v algoritmu RSA. Proto je zvolen malý dešifrovací exponent. V případě, kdy lze dešifrovací exponent určit v polynomiálním čase pomocí Wienerova útoku [20] na základě spojitých zlomků .
Více Vzhledem k reálnému číslu definujeme posloupnosti:
v
Celá čísla se nazývají pokračující zlomky , které představují racionální čísla jako konvergenty. Každý z vhodných zlomků je neredukovatelný a rychlost růstu jejich jmenovatelů je srovnatelná s exponenciální. Jeden z důležitých výsledků teorie spojitých zlomků :
pak jeden z konvergentů v expanzi pokračujícího zlomku .
Předpokládejme, že máme modul a dáme útočníkovi vědět exponent šifrování E, který má tuto vlastnost
Protože je zřejmé , že se také předpokládalo, že znamená,
Protože gcd je konvergentní v expanzi zlomku na spojitý . Dekódovací exponent tedy zjistíte střídavým dosazováním jmenovatelů vhodných zlomků do výrazu:
pro nějaké náhodné číslo Po získání rovnosti zjistíme, že celkový počet vhodných zlomků, které bude třeba zkontrolovat, se odhaduje jako
Výše popsaný Wienerův útok je možný pouze v případě, že si útočník je vědom nerovnosti
kde je tajný exponent a je modul RSA. Bonnet a Derfey pomocí dvourozměrné analogie Coppersmithovy věty dokázali zobecnit Wienerův útok [20] na případ, kdy
Systém RSA se používá pro ochranu softwaru a ve schématech digitálního podpisu .
Používá se také v otevřeném šifrovacím systému PGP a dalších šifrovacích systémech (například DarkCryptTC a formát xdc) v kombinaci se symetrickými algoritmy .
Kvůli nízké rychlosti šifrování jsou zprávy obvykle šifrovány pomocí efektivnějších symetrických algoritmů s náhodným klíčem relace (například AES , IDEA , Serpent , Twofish ), a pouze tento klíč je šifrován pomocí RSA, je tedy implementován hybridní kryptosystém . Takový mechanismus má potenciální zranitelnost kvůli potřebě použít kryptograficky silný generátor pseudonáhodných čísel pro generování náhodného symetrického šifrovacího klíče relace.