RSA, je to opravdu tak jednoduché? Výběr parametrů šifry RSA a možné důsledky Šifrování pomocí algoritmu rsa

Ne všichni uživatelé vybavení osobních počítačů vědí a chápou, co je šifrování RSA, a jsou překvapeni, když slyší tento termín. V tomto konceptu se ale neskrývá nic složitého. Šifrování RSA je pouze kryptosystém, který umožňuje bezpečně používat všechna elektronická data vytvořená na počítačové technice. Nejedná se o dešifrování dat, kdy nelze číst soubory bez znalosti určitého kódu. Šifrování RSA znamená, že klíče jsou otevřené.

Šifrování RSA funguje na principu faktoringu. Takhle? A to je faktoring
reprodukce dvou velkých číselných údajů.

Kdo vytvořil šifrovací systém RSA?

Šifrovací algoritmus RSA byl vytvořen již v roce 1977, jeho tvůrci jsou vědci Rivest, Shamir, Adleman, zkratka počátečních písmen jejich příjmení tvoří výraz RSA. Dřívější algoritmus vyvinul Clifford Cox, matematik z Anglie, který pracoval pro tamní zpravodajské služby. V roce 1973 se mu podařilo vytvořit ekvivalentní systém, který však sloužil výhradně utajovaným osobám a technika nebyla distribuována na úrovni běžných uživatelů vybavení osobních počítačů.

Jak funguje šifrování RSA?

Uživatel systému nejprve vytvoří a následně zveřejní veřejný klíč, který je založen na dvou velkých číslech, pouze s pomocnou hodnotou. Nejjednodušší čísla jsou držena v tajnosti. Chcete-li si například přečíst e-mail, stačí použít veřejný klíč k dokumentu, ale pokud je klíč dlouhý, je obtížné získat přístup k informacím.

Dnes je šifrování RSA charakterizováno jako nepříliš spolehlivá metoda šifrování dat. Jedná se o pomalý algoritmus, takže mezi běžnými uživateli počítačů není tak běžný. Proč tedy tento systém vznikl, když jej běžní informatici prakticky nepoužívají?

Věc se má tak, že své uplatnění našel v šifrovaném přenosu veřejných klíčů pro symetrický šifrovací klíč, který je určen pro hromadné šifrování a dešifrování vysokou rychlostí.

Moderní asymetrický klíčový kryptosystém vznikl díky práci Diffieho a Hellmana. Koncept vyvinuli v roce 1976 a představili jej veřejnosti jako digitální nahrávky. Dokázali vytvořit veřejný klíč založený na principu umocnění určitého čísla modulo prvočíslo. Jejich princip však zůstal viset ve vzduchu, protože v té době ještě nebyly dobře prostudovány principy faktoringu.

Rivest, Adim Shamir, Adleman nezůstali u toho, čeho dříve dosáhli, a důkladně propracovali mechanismus jednosměrné funkce, kterou není tak snadné dekódovat. Rivest a Shamir pracovali přímo na samotných funkcích a Adleman hledal slabiny ve vytvářených algoritmech. Nakonec se jim podařilo vytvořit systém asymetrického klíče RSA.

Komunikace pomocí digitálního podpisu a veřejného klíče

V současné době mnoho firem využívá ve své pracovní činnosti takový elektronický prvek, jakým je digitální podpis. Vytvářené elektronické dokumenty obsahující tzv. digitální podpis jsou oficiální dokumenty uznávané na právní úrovni. Elektronický digitální podpis je vytvořen, když jsou data kryptograficky změněna.

Tato alternativa ke konvenčnímu podpisu umožňuje učinit dokument důvěrným, zajistit jeho integritu a mít vždy informace o jeho tvůrci a vlastníkovi.

Elektronický podpis úzce souvisí s dotyčným šifrováním RSA. Tento systém, jak již bylo zmíněno výše, předpokládá přítomnost veřejného klíče. Dnes se v praxi používají dva klíče – veřejný – všem známý a soukromý – šifrovaný, aby se zabránilo neoprávněným osobám v přístupu k informacím.

Veřejný klíč tedy umožňuje přístup k dokumentu s elektronickou pečetí a soukromý klíč umožňuje dešifrovat podpis a ověřit jej. Jinými slovy, šifrování RSA umožňuje skrýt dokumenty před zvědavýma očima, udržet je v tajnosti, ale s možností získat k nim přístup ve správný čas.

Pojďme zjistit, co je podstatou vynalezeného algoritmu?

Šifrování RSA funguje ve čtyřech fázích:
generování klíčů;
distribuce klíčů;
šifrování klíče;
dešifrování klíčů.

Princip šifrování RSA kombinuje vytváření veřejných a soukromých klíčů. Zastavme se ještě u toho. Otevřený – známý všem, lze jej použít k šifrování zpráv. Tato elektronická data lze dešifrovat pomocí soukromého klíče. Při vytváření veřejných klíčů jsou čísla vybírána náhodně a jsou stejně velká, ale liší se délkou záznamu, takže faktorování je obtížnější.

Identická čísla se zjišťují testováním jejich jednoduchosti. Šifrování se tak postupně stávalo složitějším. Z čeho se skládá veřejný klíč? A skládá se z běžného modulu a tzv. veřejného exponentu. Ale uzavřený obsahuje modul a soukromý indikátor, který není poskytován nikomu kromě tvůrce.

Slabé stránky šifrovací techniky RSA

I přes promyšlený princip šifrování jej lze snadno prolomit. To lze provést, pokud byla k vytvoření klíčů použita malá čísla, klíč lze odhalit jednoduchým výběrem jednoduchých celých čísel.

Samotné šifrování RSA je algoritmus, který eliminuje náhodné komponenty, což usnadňuje podvodníkům v počítačových sítích prolomit deterministický mechanismus jeho porovnáváním s prostým textem útoků Dos, které kontrolují, zda běžící texty mají trvale stejnou délku jako generované klíče.

A to za prvé vysvětluje, že šifrování RSA není stejný kryptosystém, který je ve všech ohledech bezpečný pro uchování elektronických dat před útoky nežádoucích osob. Pokud není přidán na pokročilejší servery, získá takové vlastnosti.

Další komponenty, které zajišťují bezpečnost používání šifrování RSA

Aby se zabránilo možnosti hacknutí šifrování formátu RSA, programátoři do něj zabudují formu strukturovaného, ​​tzv. randomizovaného plnění, to se provádí před samotným šifrováním elektronických informací. Tento bod zaručuje, že obsah elektronických dokumentů nebude prezentován všem a že nebude možné prohlížet důvěrné informace, pokud je na dokumenty aplikován mechanismus pro náhodný výběr klíčů.

Šifrování RSA rozkládá matematická čísla na faktory, ale mechanismus nebyl nikdy zdokonalen. Útočníci proto mají v tuto chvíli stále možnost a mnoho mezer k výběru metod pro prolomení šifrování dat. A daří se jim to dělat právě prostřednictvím mechanismu pro obnovu prvočinitelů.

Podvodníci vypočítají tajný indikátor obsažený ve veřejném klíči a dešifrují dokumentaci pomocí standardní metody. Takže pole působnosti pro ty, kteří chtějí skutečně poškodit společnost, je výrazně velké. Řekněme, že problém zabezpečení šifrováním RSA zůstává stále aktuální a otevřený, byť o něm málokdo veřejně mluví.

Automatizovaný proces elektronického šifrování dat

I přes nízké bezpečnostní hodnocení je dotyčné šifrování RSA použitelné v mnoha odvětvích. To je zvláště vítáno, když existuje velký oběh elektronické dokumentace. Řekněme, že šifrování RSA se používá k ochraně dokumentů na průměrné úrovni odpovědnosti.

Software Yafu umožňuje automaticky šifrovat elektronická data. Tento program umožňuje rychle najít data pro vytváření asymetrických klíčů při dodržení pravidel faktoringové spolehlivosti. Je kompatibilní s procesory jako SIQS, ECM, SNFS. Spouští se přes příkazový řádek. Zadáním tohoto příkazu do řádku můžete několikrát zkrátit čas potřebný k hledání dat pro vytvoření klíčů.

Běžný uživatel vybavení osobního počítače si s tímto softwarem neporadí. Jeho instalace a konfigurace vyžaduje určité znalosti, které často provádějí IT programátoři a specialisté.

Šifrování RSA je vážně zranitelné, a to navzdory skutečnosti, že k vytváření veřejných a soukromých klíčů se používá velké množství, které na discích dosahuje až několika tisíc bitů.

Benjamin Moody v roce 2009 dokázal, že proces prolomení veřejných a soukromých klíčů je možný. I když to může trvat dva nebo více let, faktem zůstává, že mnoho světových počítačových systémů může být ohroženo hackery.

Tento specialista například nepotřeboval nic speciálního k prosévání klíčových skriptů – počítač běžného uživatele a software GGNFS. Ani praxe několika tisícinových bitových šifrovacích klíčů neochrání informace před ponecháním pole důvěrného a nedostupného pro ostatní uživatele.

Prolomení šifrování RSA samozřejmě nějakou dobu trvá. Mnoho hackerů tráví roky, aby dosáhli pozitivního výsledku. Často se jedná o vysoce placené vyhlídky, které podněcují zájem pokračovat v hledání správného klíče. Ve většině případů je hackování dlouhých klíčů opuštěno při hledání jednodušších vyhlídek. To ale neznamená, že se nikdo nesnaží vytvořit jednodušší mechanismus prolomení klíčů.

Hlavní ochranou proti vlezlým útokům podvodníků je vytváření velkých a dlouhých klíčů o více než dvou tisících bitech. Jsou již známy případy hacknutí klíčů v délce od sta do pěti set bitů. Takže musíte mít uši ostré. Pokud existuje mechanismus pro prolomení krátkých klíčů, někde na straně těch, kteří si to nepřejí, se pravděpodobně naplno pracuje na prolomení nejdelších kombinací elektronického šifrování dat.

Závěr

Na základě výše uvedeného je šifrování RSA bezpečnou metodou zachování důvěrnosti elektronických dat za předpokladu, že jsou vytvořeny dlouhé a informačně bohaté klíče.

Je obtížné je vybrat ručně, proto se používá automatizovaný softwarový produkt Yafu. Instalují a konfigurují ji IT specialisté. Pokud to uděláte sami, může dojít k poškození operačního systému vašeho počítače.
Tento software je navržen pro práci v tandemu s vícejádrovými počítačovými procesory moderní generace.

Hlavním cílem podvodných útoků jsou velké průmyslové a finanční společnosti, takže bez RSA šifrování jejich elektronická správa dokumentů nefunguje. Elektronický podpis dokumentů také podléhá šifrování a platí pro něj stejné bezpečnostní standardy jako pro ostatní informační data. Zásada – čím větší klíč, tím obtížnější je hacknout dokument – ​​by měla platit naprosto pro všechna data, která nejsou určena pro veřejné použití.

Šifrování RSA je jedním z prvních praktických šifrovacích systémů s veřejným klíčem a je široce používáno pro bezpečný přenos dat. Jeho hlavní rozdíl od podobných služeb spočívá v tom, že šifrovací klíč je veřejný a liší se od dešifrovacího klíče, který je držen v tajnosti. Technologie RSA je založena na praktické obtížnosti faktorizace dvou velkých prvočísel (problém faktorizace).

Historie stvoření

Jméno RSA se skládá z počátečních písmen příjmení Rivest, Shamir a Adleman, vědců, kteří je poprvé veřejně popsali v roce 1977. Clifford Cox, anglický matematik, který pracoval pro britské zpravodajské služby, poprvé vyvinul ekvivalentní systém v roce 1973, ale byl odtajněn až v roce 1997.

Uživatel RSA vytvoří a poté publikuje veřejný klíč založený na dvou velkých prvočíslech spolu s pomocnou hodnotou. musí zůstat v tajnosti. Veřejný klíč může k zašifrování zprávy použít kdokoli, ale pokud je dostatečně velký, pak může zprávu dekódovat pouze někdo se znalostí prvočísel. Prolomení šifrování RSA je známo jako velký problém: dnes se vedou otevřené diskuse o tom, jak bezpečný je tento mechanismus.

RSA je relativně pomalý algoritmus, a proto jej přímý uživatel příliš nepoužívá. Nejběžnějším použitím této metody je přenos zašifrovaných sdílených klíčů pro symetrický šifrovací klíč, který zase může provádět hromadné šifrovací a dešifrovací operace mnohem vyšší rychlostí.

Kdy se kryptosystém objevil ve své moderní podobě?

Myšlenka kryptosystému asymetrického klíče je připisována Diffiemu a Hellmanovi, kteří tento koncept publikovali v roce 1976, představili digitální podpisy a pokusili se aplikovat teorii čísel. Jejich formulace používá sdílený tajný klíč vytvořený z exponentu nějakého čísla modulo prvočíslo. Problém implementace této funkce však nechali otevřený, protože principy faktoringu v té době nebyly dobře pochopeny.

Rivest, Adi Shamir a Adleman na MIT se v průběhu roku několikrát pokusili vytvořit jednosměrnou funkci, kterou je obtížné dekódovat. Rivest a Shamir (jako počítačoví vědci) navrhli mnoho potenciálních funkcí, zatímco Adleman (jako matematik) hledal slabiny algoritmu. Použili mnoho přístupů a nakonec v dubnu 1977 vyvinuli konečný systém, dnes známý jako RSA.

Digitální podpis a veřejný klíč

Elektronický digitální podpis neboli EDS je nedílnou součástí elektronických dokumentů. Vzniká určitou kryptografickou změnou dat. Pomocí tohoto atributu je možné zkontrolovat integritu dokumentu, jeho důvěrnost a také určit, kdo je jeho vlastníkem. V podstatě se jedná o alternativu k obvyklému standardnímu podpisu.

Tento kryptosystém (šifrování RSA) nabízí veřejný klíč, čímž se liší od symetrických. Princip jeho fungování spočívá v tom, že se používají dva různé klíče – soukromý (šifrovaný) a veřejný. První slouží ke generování elektronického podpisu a následné schopnosti dešifrovat text. Druhý je pro samotné šifrování a ověřování digitálního podpisu.

Použití podpisu nám umožňuje lépe porozumět šifrování RSA, jehož příklad lze uvést jako běžný utajovaný dokument „zavřený před zvědavýma očima“.

Co je podstatou algoritmu?

Algoritmus RSA se skládá ze čtyř fází: generování klíče, distribuce klíče, šifrování a dešifrování. Jak již bylo řečeno, šifrování RSA zahrnuje veřejný klíč a soukromý klíč. Open může být známý všem a používá se k šifrování zpráv. Jeho podstatou je, že zprávy zašifrované pomocí veřejného klíče lze dešifrovat pouze v určitém časovém období pomocí soukromého klíče.

Chcete-li být v bezpečí, celá čísla by měla být náhodně vybrána a měla by mít stejnou velikost, ale měla by se lišit v délce o několik číslic, aby bylo faktoring obtížnější. Identická čísla lze efektivně najít pomocí testu na jejich primálnost, takže šifrování informací se nutně musí zkomplikovat.

Veřejný klíč se skládá z modulu a veřejného exponentu. Private se skládá z modulu a soukromého indikátoru, který musí zůstat v tajnosti.

Šifrování souborů RSA a slabiny

Existuje však řada mechanismů pro prolomení jednoduchého RSA. Při šifrování s nízkými rychlostmi a malými čísly lze šifru snadno prolomit, pokud najdete kořen šifrového textu přes celá čísla.

Vzhledem k tomu, že šifrování RSA je deterministický algoritmus (tj. nemá žádnou náhodnou složku), může útočník úspěšně zahájit vybraný útok v otevřeném textu proti kryptosystému tím, že zašifruje věrohodné otevřené texty pod veřejným klíčem a zkontroluje, zda se shodují se šifrovaným textem. O kryptosystému se říká, že je sémanticky bezpečný, pokud útočník nedokáže rozlišit dvě šifrování od sebe, i když zná odpovídající texty v čisté podobě. Jak je popsáno výše, RSA, aniž by jej doplňovaly dalšími službami, není sémanticky bezpečný.

Další šifrovací a bezpečnostní algoritmy

Aby se předešlo výše uvedeným problémům, praktické implementace RSA se před šifrováním obvykle zabudují do nějaké formy strukturovaného, ​​náhodného vyplnění. To zajišťuje, že obsah nespadá do rozsahu nezabezpečeného otevřeného textu a že zpráva nemůže být náhodně kompromitována.

Bezpečnost kryptosystému RSA a šifrování informací jsou založeny na dvou matematických problémech: na problému faktorizace velkých čísel a na samotném problému RSA. Úplné zveřejnění šifrovaného textu a digitálního podpisu v RSA je považováno za nepřijatelné za předpokladu, že oba tyto problémy nelze vyřešit společně.

Díky schopnosti obnovit primární faktory však může útočník vypočítat tajný exponent z veřejného klíče a poté text dešifrovat standardním postupem. Přestože dnes nebyla nalezena žádná existující metoda pro faktorizaci velkých čísel na klasickém počítači, nebylo prokázáno, že neexistuje.

Automatizace

Ke zefektivnění tohoto procesu lze použít nástroj zvaný Yafu. Automatizace v YAFU je nejmodernější funkce, která kombinuje faktorizační algoritmy v inteligentní a adaptivní metodologii, která minimalizuje čas na nalezení faktorů libovolných vstupních čísel. Většina implementací algoritmu je vícevláknová, což Yafu umožňuje plně využít více nebo více (včetně SNFS, SIQS a ECM). Především je to spravovaný nástroj příkazového řádku. Čas strávený hledáním šifrovacího faktoru pomocí Yafu na běžném počítači lze zkrátit na 103,1746 sekund. Nástroj produkuje kapacitu zpracování 320 bitů nebo více. Jedná se o velmi složitý software, jehož instalace a konfigurace vyžaduje určitou dávku technických dovedností. Proto může být šifrování RSA C zranitelné.

Hackerské pokusy v moderní době

V roce 2009 Benjamin Moody s pomocí RSA-512 bitového klíče pracoval na dešifrování kryptotextu po dobu 73 dní pouze pomocí běžného softwaru (GGNFS) a průměrného stolního počítače (dvoujádrový Athlon64 na 1900 MHz). Jak tato zkušenost ukázala, pro proces „prosévání“ bylo zapotřebí o něco méně než 5 gigabajtů disku a přibližně 2,5 gigabajtů paměti RAM.

Od roku 2010 bylo největší faktorované číslo RSA dlouhé 768 bitů (232 dekadických číslic nebo RSA-768). Jeho nasazení trvalo dva roky na několika stovkách počítačů současně.

V praxi jsou klíče RSA delší – obvykle od 1024 do 4096 bitů. Někteří odborníci se domnívají, že 1024bitové klíče se mohou v blízké budoucnosti stát nezabezpečenými, nebo mohou být dokonce již prolomeny přiměřeně fundovaným útočníkem. Málokdo by však namítl, že v dohledné době mohou být odhaleny i 4096bitové klíče.

Vyhlídky

Proto se obecně předpokládá, že RSA je bezpečný, pokud jsou čísla dostatečně velká. Pokud je základní číslo 300 bitů nebo kratší, lze šifrový text a digitální podpis rozložit během několika hodin na osobním počítači pomocí softwaru, který je již volně dostupný. 512bitové klíče se ukázaly být prolomitelné již v roce 1999 na několika stovkách počítačů. V dnešní době je to možné během několika týdnů pomocí veřejně dostupného hardwaru. Je tedy docela možné, že v budoucnu bude šifrování RSA snadno prolomeno na prstech a systém bude beznadějně zastaralý.

Oficiálně byla v roce 2003 bezpečnost 1024bitových klíčů zpochybněna. V současné době se doporučuje mít délku alespoň 2048 bitů.

Pod řezem jsou příklady výběru „špatných“ parametrů RSA šifry.

„Je třeba zdůraznit, že je třeba věnovat pozornost výběru modulu RSA (číslo n) pro každého síťového korespondenta. V tomto ohledu lze říci následující. Čtenář si může nezávisle ověřit, že zná jednu ze tří veličin p, q nebo φ(n), můžete snadno najít soukromý klíč RSA...“.

Doplňme tento text. Pokud je volba šifrovacího modulu RSA neúspěšná, jak bylo provedeno v příkladu níže uvedeného manuálu, můžete text dešifrovat bez přítomnosti tajného klíče, tzn. aniž bychom znali některou ze tří jmenovaných veličin.

K tomu stačí mít šifrovaný text určený šifrovacím modulem n, veřejný klíč E zašifrovat a provést pouze tři kroky útoku bezklíčového čtení. Po čtvrtém kroku útoku se zjistí, že zdrojový text byl získán v předchozím kroku a lze jej číst. Pojďme si ukázat, jak snadné je to udělat.

Nejprve uveďme samotný příklad ze str. 313-315 z uvedeného návodu.

Příklad

Šifrování krátká úvodní textová zpráva: RSA.
Příjemce nastaví šifru s charakteristikami n=pq=527, Kde p=17, q=31 A φ(n)=(р –1)(q – 1)=480. Jako veřejný klíč E je vybráno číslo, které je coprime φ(n), e=7. Celá čísla jsou pro toto číslo nalezena pomocí rozšířeného euklidovského algoritmu u A proti, uspokojení vztahu e∙u+φ(n)∙v=1:

480=7∙68+4,
7=4∙1+3,
4=3∙1+1,
1=4–3∙1=4–(7–4∙1)∙1=4∙2–7∙1=(480–7∙68)∙2–7∙1=480∙2–7∙137,
v=2, u=–137
.

Protože –137≡343 (mod480), Že d=343.

Zkouška: 7∙343=2401≡1(mod480).

Textová zpráva je prezentována jako sekvence čísel obsažených v intervalu . K tomu dopisy R, S A A jsou kódována jako pětibitová binární čísla. Sériová čísla těchto písmen v anglické abecedě se používají v jejich binárním vyjádření:

R=1810=(10010) 2, S=1910=(10011) 2,
A=110=(00001) 2.

Pak RSA=(100101001100001) 2. Rozdělením textu do bloků omezené délky vznikne dvoubloková prezentace: RSA=(100101001), (100001)=(M1=297, M2=33).

Bloky zdrojového textu jsou zašifrovány postupně Mi = 297, M2=33:
y1 = E k (M 1) = M 1 e ≡297 7 (mod527) = 474.

Zde jsme použili skutečnost, že:

297 7 =((297 2) 3)297≡(mod527)=(200 3 (mod527)297)(mod527)=474,
y2=Ek(M2)=M2e≡337 (mod527)=407.

Šifrovaný text, stejně jako ten původní, je získán ve formě dvou bloků: yi = 474; y2=407.

Dekódování zdá se být sledem akcí D k (y i) = (y i) d = (y i) 343 (mod 527), i = 1,2.

Výpočty umocňování d je vhodnější provést nejprve reprezentaci exponentu jako součet mocnin čísla 2 , jmenovitě: 343=256+64+16+4+2+1 .

Pomocí této reprezentace exponentu d=343, dostaneme:

474 2 ≡174(mod527),
474 4 ≡237(mod527),
474 8 ≡307(mod527),
474 16 ≡443(mod527),
474 32 ≡205(mod527),
474 64 ≡392(mod527),
474 128 ≡307(mod527),
474 256 ≡443(mod527),

a nakonec 474 343 (mod527)=(443∙392∙443∙237∙174∙474) (mod527)=297.

Hodnota se vypočítá podobně 407 343 (mod527)=33.

Přepnutím na doslovnou reprezentaci dešifrované zprávy získáte: RSA.

Po zhlédnutí příkladu se manuál zabývá robustností systému RSA. Je zdůrazněna potřeba opatrnosti při výběru šifrovacího modulu (čísla) RSA. n) pro každého síťového korespondenta. Je naznačeno, že je nepřípustné ignorovat požadavky na zvolené vlastnosti šifrovacího systému. Mezi těmito požadavky, jejichž porušení je ilustrováno uvedeným příkladem, bohužel není uvedeno.

Útok na šifru RSA

Podívejme se na příklad útoku na šifru RSA. Použijme data z příkladu uvedeného na stranách 313-315 v učebnici „Základy kryptografie“ od A.P. Alferov, A.Yu. Zubov, A.S. Kuzmin, A.V. Cheremushkin, Moskva. "Helios ARV", 2001.

Selhání (nepřípustnost) vybraných parametrů systému v tomto příkladu snadno ukážou výpočty, které implementují útok na bezklíčové čtení zdrojového textu. Podstata takového útoku je následující. Je zadán veřejný klíč šifry RSA ( e=7, n=527) a šifrovaný text. V příkladu je šifrový text reprezentován ve dvou blocích
y=(y1=474, y2=407).

Každý zašifrovaný blok je napaden jednotlivě, nejprve zaútočíme yi = 474, po jeho dešifrování zaútočíme na další blok y2=407.

Dále je posloupnost číselných hodnot tvořena opakovaným šifrováním, uložením výsledků dvou po sobě jdoucích kroků algoritmu útoku a použitím veřejného klíče. y i, y 1 = y dostupný šifrovaný text.

V algoritmu útoku na šifrovaný text je určeno následující číslo kroku: j, pro který y i e j (mod n)=(y i e j–1 (mod n)) e (mod n)=y i, i>1. Z posledního vztahu vidíme, že když je povýšen na moc E hodnoty (y i e j–1 (mod n)) je získán počáteční šifrovaný text y i = y 1.

To ale znamená, že v tomto kroku byl prostý text zašifrován. Přímými výpočty (je jich velmi málo) pomocí kalkulačky na obrazovce tuto hodnotu zjistíme j, kdy šifrovací cyklus končí hodnotou y 1, od kterého cyklus začal.

Útok na první blok yi = 474šifrovaný text.
Krok 1:  474 7 (mod527)=382;
Krok 2:  382 7 (mod527)=423;
Krok 3:  423 7 (mod527)=297;
Krok 4:   v tomto kroku je již nalezený zdrojový text zašifrován, ale musí to být provedeno, protože útočník nezná zdrojový text. Známkou dokončení útoku je shoda počáteční hodnoty šifrového textu ( 474 ) a výsledek 4. kroku šifrování. To je přesně ta náhoda, která se odehrává.

297 7 (mod527) = 474 obdržel počáteční (první) blok šifrovaného textu. Útok na první blok byl úspěšně dokončen yi = 474. Předchozí výsledek kroku 3 se rovná prostému textu Mi = 297.

n=527 r=297 modulo n=527. Píše se to takhle yi =yi =297. Tváření silových zbytků
(((297 7 (mod527)) 7 (mod527)) 7 (mod527)) 7 =297.

Útok na druhý blok y2=407šifrovaný text.
Krok 1:  407 7 (mod527)=16;
Krok 2:  16 7 (mod527)=101;
Krok 3:  101 7 (mod527)=33;
Krok 4:  33 7 (mod527)=407.

Opět ve třetím kroku byl získán blok zdrojového textu ( M2=33), ale útočník to neví a provede další (čtvrtý krok), jehož výsledkem je ( 407 ) odpovídá počátečnímu šifrovému textu y2=407.

V podstatě v kruhu modulo zbytků n=527 byl implementován krátký cyklus zpracování odpočtu r=33 modulo n=527. Píše se to takhle yi =y2=33.
Tváření silových zbytků ((33 7 (mod527)) 7 (mod527)) 7 (mod527)=33.

Výsledek útoku (zdrojový text Mi = 297, M2=33) se získá trojnásobným zašifrováním daného šifrového textu. Těžko si představit větší úspěch pro útočníka na šifrovaný text.

Pokračujeme v diskusi o volbě modulu a dalších parametrech šifry, můžeme dodat, že šifrovací modul ( n=527) některé zdrojové texty nelze zašifrovat vůbec. Volba hodnoty veřejného klíče v tomto případě nehraje velkou roli. Existují hodnoty zdrojového textu, které obecně nelze zašifrovat vybranou šifrou s modulem n=527.

Žádný z uvedených neumí šifrovat zdrojové texty reprezentované čísly
187 , 341 , 154 A 373 .

Příklad (neschopnost zašifrovat hodnoty některých zdrojových textů)

Nechť jsou zdrojové texty reprezentovány čtyřmi bloky y=(y1=154, y2=187, y3=341, y4=373). Vystavovatel E veřejným klíčem šifry může být libovolné hlavní číslo s Eulerovou funkcí φ(n)=φ(527)=480. Pro posuzovaný případ však veřejný klíč E lze libovolně nastavit. Opravdu, nech e=2, 4, 7, 9, 17, 111 Pak:

154 2 (mod527)=1;
154 4 (mod527)=1;
154 7 (mod527) = 154;
154 9 (mod527) = 154;
154 17 (mod527) = 154;
154 111 (mod527)=154;
187 2 (mod527) = 187;
187 4 (mod527) = 187;
187 7 (mod527) = 187;
187 9 (mod527) = 187;
187 17 (mod527) = 187;
187 111 (mod527)=187;
341 2 (mod527)=341;
341 4 (mod527)=1;
341 7 (mod527)=341;
341 9 (mod527)=341;
341 17 (mod527)=341;
341 111 (mod527)=341;
373 2 (mod527)=1;
373 4 (mod527)=373;
373 7 (mod527)=373;
373 9 (mod527)=373;
373 17 (mod527)=373;
373 111 (mod527)=373.

Z uvažovaného příkladu vyplývá jednoduchý závěr. K volbě parametrů pro proces šifrování je skutečně třeba přistupovat velmi pečlivě a provést důkladnou předběžnou analýzu těchto parametrů. Jak to udělat, je samostatný problém a není zvažován v rámci této práce.

Konečně nastal čas začít popisovat kryptosystém RSA. Kromě vysvětlení, jak funguje, musíme podrobně probrat jeho bezpečnost; jinými slovy, proč je tak obtížné prolomit zprávu zašifrovanou pomocí kryptosystému RSA?

§ 12.1. O začátku a konci

Chcete-li implementovat jednouživatelský šifrovací systém RSA, musíte vybrat dvě různá prvočísla p a q a vypočítat jejich součin Prvočísla p a q jsou udržována v tajnosti, zatímco se číslo stává součástí veřejného klíče. V § 12.5 podrobně diskutujeme o metodě výběru klíčových prvočísel a o tom, jak tato volba souvisí se spolehlivostí systému.

Zpráva (kterou lze považovat za celé číslo) je zašifrována zvýšením na nějakou mocninu modulo. Nejprve tedy musíme najít způsob, jak znázornit text zprávy jako seznam tříd modulo proces šifrování, ale pouze přípravu zprávy tak, aby mohla být zašifrována.

Pro zjednodušení předpokládejme, že text zprávy obsahuje pouze slova psaná velkými písmeny. Takže zpráva je nakonec posloupnost písmen a mezer. Prvním krokem je nahradit každé písmeno zprávy číslem vybraným z následující tabulky:

(viz sken)

Mezera mezi slovy je nahrazena číslem 99. Po provedení tohoto postupu získáme číslo, které může být velmi velké, pokud byla zpráva dlouhá. Toto však není konečné číslo, o které usilujeme, ale pouze soubor modulo tříd A nyní musíme rozdělit číselnou reprezentaci zprávy na části, z nichž každá je přirozené číslo nepřesahující Tyto části se obvykle nazývají. bloky zpráv.

Číselné vyjádření hesla „POZNÁM SE“ vypadá například takto:

Výběrem jednoduchých dostaneme součin. Číselnou reprezentaci výše napsané zprávy je tedy třeba rozdělit na bloky menší než 23 393.

Výběr bloků samozřejmě není jednoznačný, ale ani zcela libovolný. Aby se například předešlo nejasnostem na pódiu

dešifrování by nemělo zvýrazňovat bloky začínající nulou.

Při dešifrování zprávy zašifrované pomocí šifrovacího systému RSA se získá sekvence bloků. Poté jsou spojeny dohromady, aby vytvořily číselnou reprezentaci zprávy. A teprve po nahrazení čísel písmeny v souladu s tabulkou výše bude možné přečíst původní zprávu.

Upozorňujeme, že každé písmeno v tabulce je kódováno dvoumístným číslem. To se provádí, aby se zabránilo záměně. Předpokládejme, že jsme písmena očíslovali v pořadí, počínaje 1, tzn. A odpovídá 1, B 2 a tak dále. V tomto případě nebudeme schopni s jistotou říci, zda blok 12 představuje dvojici písmen nebo pouze jedno písmeno, dvanácté písmeno abecedy. Pro číselnou reprezentaci zprávy můžete samozřejmě použít libovolnou vzájemnou korespondenci mezi písmeny a čísly, například -kódování, kdy překlad zprávy do digitální podoby automaticky provede počítač.

§ 12.2. Šifrování a dešifrování

Zpráva připravená k šifrování metodou podle § 12.1 se skládá z posloupnosti bloků, z nichž každý je o číslo menší než Nyní si proberme, jak je každý blok zašifrován. K tomu potřebujeme číslo rovné součinu prvočísel a přirozeného čísla, modulo invertible, tzn. číslo, které splňuje podmínku

Připomeňme, že ze známých p a q lze číslo snadno vypočítat. Opravdu,

Dvojice se nazývá veřejný, neboli kódovací klíč kryptosystému RSA, který popisujeme. Nechť blok zprávy, tedy celé číslo vyhovující nerovnosti Symbolem označíme blok zašifrované zprávy odpovídající Vypočítá se podle následujícího pravidla:

Všimněte si, že každý blok zpráv je šifrován samostatně. Šifrovaná zpráva se tedy ve skutečnosti skládá ze samostatných zašifrovaných bloků. Navíc tyto bloky nemůžeme sloučit do jednoho velkého počtu, protože to znemožní dešifrování zprávy. Brzy uvidíme důvod.

Vraťme se k příkladu, který jsme začali uvažovat v prvním odstavci. Opravili jsme tak, že Nyní musíme vybrat číslo Připomeňme, že musí být coprime s Nejmenší prvočíslo, které nedělí 23088, se rovná 5. Nastavíme Pro zakódování prvního bloku zprávy z § 12.1 máme k určení odčítání čísla 25245 modulo 23393. Pomocí programu pro symbolický výpočet (nebo kalkulačky, pokud máte trpělivost) dostaneme, že požadovaný odpočet je 22 752 Zašifrovaná zpráva je tedy reprezentována následující posloupností bloků :

Podívejme se, jak se dekódují bloky šifrované zprávy. Pro zahájení dešifrování potřebujeme znát inverzní prvek k modulo Posledním z nich je přirozené číslo, které budeme označovat Dvojice se nazývá tajný, neboli dekódovací klíč šifrovacího systému RSA. Pokud a je blok zašifrované zprávy, pak její odpovídající dešifrování

Výsledkem operace je:

Než se vrátíme k příkladu, je nutné několik poznámek. Za prvé, je velmi snadné vypočítat, pokud víte, že tajný klíč je určen pomocí rozšířeného euklidovského algoritmu. Za druhé, pokud je blok původní zprávou, pak máme právo očekávat rovnost Jinými slovy, při dekódování bloku zašifrované zprávy doufáme, že zjistíme odpovídající blok původní zprávy. To, že tomu tak bude, nevyplývá přímo z výše popsaného algoritmu, ale vše si podrobně probereme v dalším odstavci.

A konečně, jak jsme tvrdili v úvodu a v celé knize, k rozbití kryptosystému RSA jej musíte faktorizovat, protože potřebujete vědět, jak dešifrovat zprávu, jakmile je však podrobně popsáno fungování systému, je to jasné poslední tvrzení není zcela přesné. K přečtení šifrování vám kromě samotného prvku stačí znát modulo inverze prvku. K hacknutí systému tedy stačí počítat se známými Ukazuje se, že tento výpočet je ekvivalentní faktorování čísla , jak uvidíme v § 12.4.

V diskutovaném příkladu použijeme rozšířený euklidovský algoritmus na čísla a 5 k určení.

(viz sken)

Tedy, inverzní 5 modulo by bylo -9235 a

Nejmenší přirozené číslo srovnatelné s -9235 modulo Takže, abychom dekódovali blok zašifrované zprávy, musíme jej zvýšit na 13 853 modulo 23 393 V našem příkladu je první zakódovaný blok 22 752 75213853 modulo 23,393 , dostaneme Všimněte si, že i při tak malých počtech požadavky na provoz kryptosystému RSA přesahují možnosti většiny kapesních kalkulaček.

§ 12.3. Proč to funguje?

Jak jsme již dříve poznamenali, výše popsané kroky vedou k funkčnímu kryptosystému pouze tehdy, pokud dekódování každého bloku zašifrované zprávy obnoví odpovídající blok původního. Předpokládejme, že máme co do činění se systémem RSA, který má veřejný klíč a soukromý klíč. Pomocí zápisu v § 12.2 musíme ukázat, že pro jakékoli celé číslo splňující nerovnost platí identita.

Ve skutečnosti to stačí dokázat

Ve skutečnosti jsou jak 6, tak nezáporná celá čísla menší, a proto jsou srovnatelná v absolutní hodnotě právě tehdy, když jsou stejná. To zejména vysvětluje, proč rozdělujeme číselnou reprezentaci zprávy na menší bloky. Navíc je z toho vidět, že blokuje

Zakódovaná zpráva musí být zapsána samostatně: jinak naše uvažování nebude fungovat.

Z receptů na šifrování a dešifrování to vyplývá

Vzhledem k tomu, že prvky jsou vzájemně inverzní v modulu, existuje přirozené k takové, že navíc podle podmínky jsou čísla větší, pokud místo součinu dosadíme v rovnici (3.1).

Nyní použijme Eulerovu větu, která říká, že Odtud, tzn.

a důkaz bychom úplně získali, kdyby se do něj nevloudila malá chybička.

Pokud si znovu pečlivě prostudujete naše úvahy, všimnete si, že jsme nevzali v úvahu podmínky Eulerovy věty. Ve skutečnosti je před aplikací věty nutné se ujistit, že čísla jsou vzájemně prvočísla To, zdá se, je třeba sledovat při přípravě zprávy pro šifrování, tzn. Při dělení numerické reprezentace zprávy do bloků je třeba zajistit, aby všechny výsledné bloky byly coprime to naštěstí není nutné, protože ve skutečnosti se porovnání provádí pro jakýkoli blok. A chyba nespočívá ve výsledku, který chceme dokázat, ale pouze v důkazu samotném. Správný přístup je založen na argumentaci použité v důkazu Corceltovy věty v kapitole 7.

Připomeňme, že kde jsou různá prvočísla. Definujme zbytky čísla modulo Od

výpočty pro obě prvočísla jsou podobné, jen případ podrobně rozpracujeme. Tak to už jsme viděli

pro nějaké celé číslo, proto

Nyní bychom rádi použili Fermatovu větu, ale máme na to právo pouze v případě, že nedělí Nechť je tento požadavek splněn. Pak to dostaneme

Nahrazením Fermatovy věty Eulerovou jsme problém, který vznikl, nevyřešili: srovnání platí jen pro některé, ale ne pro všechny bloky. Nyní je však třeba bloky, u kterých zdůvodnění nefunguje, dělit dále, pokud dělí, pak oba 6 a jsou modulově srovnatelné s 0 a tedy vzájemně srovnatelné. Prokázané srovnání tedy platí i v tomto případě. Porovnání tedy platí pro jakékoli celé číslo. mohl použít podobnou úvahu při aplikaci Eulerova teorému na Ve skutečnosti, nerovnost neznamená srovnání, protože číslo je složené.

Dokázali jsme tedy, že Porovnání je podobně dokázáno Jinými slovy, dělení oběma a But jsou různá prvočísla, takže lemma z § 3.6 nám zaručuje, že dělí A, protože máme pro jakékoli celé číslo Jinými slovy, As. poznamenali jsme na začátku odstavce, to stačí k prokázání rovnosti, protože obě jeho části jsou nezáporná celá čísla menší než Abychom to shrnuli, můžeme říci, že

Algoritmus z předchozího odstavce vede k praktickému kryptosystému. Nyní se musíte ujistit, že je spolehlivý.

§ 12.4. Proč je systém spolehlivý?

Připomeňme, že RSA je šifrovací systém s veřejným klíčem sestávajícím ze součinu různých prvočísel a modulo invertibilního přirozeného čísla Podívejme se pozorně na to, co lze udělat pro prolomení RSA, pokud je známo pouze pár

K dekódování bloku zašifrovaného pomocí RSA potřebujeme znát inverzní hodnotu modulu k. Problém je v tom, že prakticky jediný známý způsob, jak toho dosáhnout, je založen na použití rozšířeného euklidovského algoritmu na výpočet pomocí vzorce z § 9.4. potřebujeme vědět, co potvrzuje původní tvrzení: Prolomení RSA vyžaduje faktorizaci. A protože potíže s rozkladem jsou zásadní, systém RSA je bezpečný.

Dá se samozřejmě předpokládat, že jednoho dne někdo objeví algoritmus, který počítá bez informací o faktorech čísla Co se například stane, když někdo přijde na účinný způsob, jak přímo určit pomocí Ve skutečnosti je to tak maskovaný způsob expanze Přesněji řečeno, pokud

jsou známé, pak můžeme snadno vypočítat Indeed,

takže součet požadovaných prvočíselných dělitelů je znám. Dále,

proto je také znát rozdíl. Nyní, řešením jednoduché soustavy lineárních rovnic, můžeme snadno najít faktorizaci.

To znamená, že algoritmus, který počítá, ve skutečnosti rozloží číslo na faktory, takže je to jako čert. Ale na uklidnění je ještě brzy. Můžete jít ve svých fantaziích dále a předpokládat, že někdo vynalezl algoritmus, který určuje přímo pomocí Ale tak, pokud víme, pak známe číslo, které je jeho násobkem. Ukazuje se, že i taková informace je dostatečná pro rozklad. Pravděpodobnostní algoritmus vedoucí k takovému rozkladu lze nalézt V . Cvičení 7 ukazuje podobný (ale jednodušší) dekompoziční algoritmus za předpokladu, že Rabinův kryptosystém může být rozbit. Dá vám představu o pravděpodobnostním algoritmu z .

Zbývá poslední možnost hackování: pokus o obnovu bloku přímo pomocí modulo zbytku Pokud je dostatečně velký, pak je jediným východiskem systematické prohledávání všech možných kandidátů. Nic lepšího zatím nikdo nevymyslel. Uvedli jsme hlavní argumenty, které vysvětlují, proč je prolomení kryptosystému RSA považováno za faktorizaci, i když zatím neexistuje žádný rigorózní důkaz tohoto tvrzení.

§ 12.5. Výběr jednoduchých

Z předchozí diskuse vyplývá, že pro bezpečnost kryptosystému RSA je důležité zvolit správná prvočísla. Přirozeně, pokud jsou malá, je systém snadno hacknutý. Nestačí však vybrat velké, i když jsou p a q obrovské, ale rozdíl je malý, jejich součin lze snadno faktorizovat pomocí Fermatova algoritmu (viz § 3.4).

To nejsou plané řeči. V roce 1995 dva studenti na americké univerzitě prolomili veřejnou verzi RSA. To bylo možné díky špatnému výběru hlavních faktorů systému.

Na druhou stranu se RSA používá již dlouhou dobu a pokud jsou hlavní faktory pečlivě vybrány, systém se skutečně ukazuje jako docela spolehlivý. Každý programátor šifrování RSA tedy potřebuje efektivní metodu pro úspěšný výběr prvočísel.

Předpokládejme, že chceme vytvořit kryptosystém RSA s veřejným klíčem, ve kterém má celé číslo přibližně číslic. Nejprve si vyberme prvočíslo, jehož počet znaků leží mezi, vezměme si to blízko Aktuálně je velikost klíče doporučená pro osobní použití 768 bitů, tzn. by měl mít přibližně 231 číslic. K sestrojení takového čísla potřebujeme dvě jednoduchá, řekněme, o 104 a 127 číslicích. Upozorňujeme, že takto zvolená prvočísla jsou od sebe dosti vzdálená, tzn. Použití Fermatova algoritmu pro rozklad v této situaci je nepraktické. Kromě toho se musíme ujistit, že při rozkladu čísel na prvočinitele se podílejí nejen malé faktory, ale i velké. V opačném případě se číslo stane snadnou kořistí pro některé známé rozkladové algoritmy (viz). Podívejme se nyní na metodu, pomocí které se najdou prvočísla splňující uvedené podmínky.

Nejprve potřebujeme jeden jednoduchý výsledek o rozdělení prvočísel. Připomeňme si, co označuje počet prvočísel nepřesahujících x. Vzhledem k větě o prvočísle vidíme, že pro velké x je číslo přibližně stejné, kde je přirozený logaritmus

na základě (viz § 4.5). Nechť je to velmi velké, nějaké kladné číslo. Chceme odhadnout počet prvočísel ležících mezi a odhadnout rozdíl Díky větě o prvočíslech a vlastnostem logaritmu je rozdíl přibližně roven

Za předpokladu, že je velmi malý, můžeme předpokládat, že hodnota je rovna 0 a získat rozumný odhad rozdílu, takže počet prvočísel uzavřených mezi je přibližně stejný. Přirozeně je odhad přesnější, čím větší je a tím menší Podrobnější úvod k takovému odhadu viz ([D. 10]).

Předpokládejme, že potřebujeme vybrat prvočíslo v okolí celého čísla x. Pro definitivnost budeme předpokládat, že x je řádu a hledáme prvočíslo v intervalu od x do. Bylo by užitečné předem vědět, kolik prvočísel je v tomto intervalu. K odhadu počtu prvočísel můžete použít právě získaný výsledek. V našem příkladu je hodnota velmi malého řádu: Proto pomocí výše napsaného vzorce dojdeme k závěru, že interval mezi leží přibližně

prvočísla. Na konci druhého odstavce kapitoly 11 jsme formulovali strategii určenou k prokázání prvočísla daného lichého čísla. Skládá se ze tří kroků.




Horní