RSA

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é 8. května 2021; ověření vyžaduje 31 úprav .
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] .

Historie

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

Popis algoritmu

Úvod

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,

Algoritmus pro generování veřejných a soukromých klíčů

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ší;

hodnoty, které jsou příliš malé , jako například 3, mohou potenciálně oslabit zabezpečení schématu RSA. [16] ; 5) vypočítá se číslo , které je multiplikativně inverzní k číslu modulo , tedy číslo, které vyhovuje srovnání : (číslo se nazývá tajný exponent ; obvykle se počítá pomocí rozšířeného Euklidova algoritmu ); 6) pár je zveřejněn jako veřejný klíč RSA ( veřejný klíč RSA );  7) dvojice hraje roli soukromého klíče RSA a je držena v tajnosti . 

Šifrování a dešifrování

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] :

  • Získejte Alicin veřejný klíč
  • Vezměte prostý text
  • Zašifrujte zprávu pomocí veřejného klíče Alice:

Algoritmus dešifrování :

  • Příjem zašifrované zprávy
  • Vezměte si svůj soukromý klíč
  • Použijte soukromý klíč k dešifrování zprávy:

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.

Algoritmus šifrování klíče relace

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 :

  • Získejte Alicin veřejný klíč
  • Vygenerujte náhodný klíč relace
  • Zašifrujte klíč relace pomocí veřejného klíče Alice:
  • Zašifrujte zprávu pomocí klíče relace pomocí symetrického algoritmu:

Algoritmus :

  • Přijměte Bobův šifrovaný klíč relace
  • Vezměte si svůj soukromý klíč
  • Použijte soukromý klíč k dešifrování klíče relace:
  • Dešifrujte zprávu pomocí klíče relace pomocí symetrického algoritmu:


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.

Správnost schématu RSA

Rovnice a , na kterých je schéma RSA založeno, definují vzájemně inverzní transformace množiny Důkaz [15] [18]

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

Příklad

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

Digitální podpis

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 :

  • Vezměte prostý text
  • Vytvořte digitální podpis pomocí svého soukromého klíče :
  • Pošlete pár sestávající ze zprávy a podpisu.

Algoritmus :

  • Přijměte pár
  • Získejte Alicin veřejný klíč
  • Vypočítejte předobraz zprávy z podpisu:
  • Ověřte pravost podpisu (a neměnnost zprávy) porovnáním a

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.

Rychlost algoritmu RSA

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íce , kde

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

Použití čínské věty o zbytku k urychlení dešifrování

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

RSA kryptoanalýza

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.

Útoky na algoritmus RSA

Wienerův útok na RSA

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

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ů :

Pokud neredukovatelný zlomek splňuje nerovnost:

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

kde   Budeme také předpokládat, že protože to platí pro většinu aplikací. Z předpokladů vyplývá, že

Tudíž,



To ukazuje, že docela dobrá aproximace pro  Indeed,

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

Generalizovaný Wienerův útok

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

Aplikace RSA

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.

Poznámky

  1. Po letech útoků stále střeží tajemství, RSA získává uznání pro své zakladatele – Společnost pro průmyslovou a aplikovanou matematiku .
  2. Úvod do moderní kryptografie  (anglicky) - 2 - CRC Press , 2015. - S. 411. - 583 s. — ISBN 978-1-4665-7026-9
  3. 1 2 Bakhtiari, Maarof, 2012 , str. 175.
  4. Čtvrtletí rekreační matematiky, Martin Gardner  (anglicky)  (odkaz není k dispozici) . Scientific American. — „Ronald L. Rivest z Massachusettského technologického institutu mi umožnil být prvním, kdo odhalil – ve sloupci ze srpna 1977 – šifrovací systém „publicky“, který spoluvynalezl.“ Získáno 3. března 2012. Archivováno z originálu dne 23. června 2012.
  5. 12 Gardner , 1977 .
  6. Bruce Schneier. Factoring - State of the Art and Predictions  (anglicky)  (nedostupný odkaz) (12. února 1995). Získáno 3. března 2012. Archivováno z originálu dne 23. června 2012.
  7. Donald T. Davis. Diskuse o aktivitě RSA-129  (anglicky)  (odkaz není k dispozici) (25. listopadu 2003). Získáno 3. března 2012. Archivováno z originálu dne 23. června 2012.
  8. Chmora A. L. 4.6.4. Power attack založený na distribuovaných výpočtech // Moderní aplikovaná kryptografie. - 2002. - 2000 výtisků.  — ISBN 5-85438-046-3 .
  9. Rivest, Shamir, Adleman, 1978 .
  10. Ronald L. Rivest a kol. Kryptografický komunikační systém a metoda
  11. Adam Zpět. PGP Timeline  (anglicky)  (downlink) . Získáno 3. března 2012. Archivováno z originálu dne 23. června 2012.
  12. J. Linn. Vylepšení soukromí pro internetovou elektronickou poštu: Část III – Algoritmy, režimy a identifikátory  (anglicky)  (odkaz není k dispozici) (srpen 1989). Získáno 18. března 2012. Archivováno z originálu dne 23. června 2012.
  13. RSA Security Inc. Historie společnosti  (anglicky)  (odkaz není k dispozici) . Financování vesmíru. Získáno 18. března 2012. Archivováno z originálu dne 23. června 2012.
  14. CC Cocks A note on "non-secret encryption" Archivováno z originálu 4. srpna 2009.  (anglicky) 20. listopadu 1973
  15. 1 2 3 Menezes, Oorschot, Vanstone, 1996 , 8.2. Šifrování veřejného klíče RSA.
  16. Boneh, 1999 .
  17. 1 2 Bruce Schneier. Aplikovaná kryptografie 2. vydání C++ protokolů, algoritmů a zdrojů
  18. Rivest, Shamir, Adleman, 1978 , pp. 7-8.
  19. Rivest, Shamir, Adleman, 1978 , str. osm.
  20. 1 2 3 H. SMART Svět programování Kryptografie - ed. Technosféra, Moskva 2006
  21. Yang S. Y. Kryptoanalýza RSA. - M.-Iževsk: Výzkumné centrum "Regulární a chaotická dynamika", Iževský institut počítačového výzkumu, 2011. - 312 s.
  22. Oznámení faktorizace RSA-768 Archivováno 13. dubna 2014 na Wayback Machine 
  23. Faktorizace RSA-768 Archivováno 13. prosince 2012 na Wayback Machine 
  24. Data pro postupné vyřazování signatur založených na MD5 a 1024bitových modulů . Získáno 2. března 2013. Archivováno z originálu dne 20. listopadu 2012.

Literatura