co je šifrování RSA a jak to funguje?

RSA šifrování je systém, který řeší to, co bylo kdysi jedním z největších problémů v kryptografii: Jak můžete někomu poslat šifrovanou zprávu, aniž by příležitost k dříve sdílet kód s nimi?

Tento článek vás naučí vše, co potřebujete vědět o tom, jak šifrování RSA byl vyvinut, jak to funguje, matematika za to, k čemu se používá, stejně jako některé z největších bezpečnostních problémů, které před ní stojí., Učení o RSA vám poskytne některé základní znalosti, které vám pomohou pochopit, kolik částí našeho online života je udržováno v bezpečí.

co je šifrování RSA?

řekněme, že chcete říct svému příteli tajemství. Pokud jste hned vedle nich, můžete to jen zašeptat. Pokud jste na opačných stranách země, to samozřejmě nebude fungovat. Můžete si to zapsat a poslat jim to, nebo použít telefon, ale každý z těchto komunikačních kanálů je nejistý a kdokoli s dostatečně silnou motivací by mohl zprávu snadno zachytit.,

Pokud by tajemství bylo dostatečně důležité, neriskovali byste, že byste ho normálně zapsali–špióni nebo nepoctivý poštovní zaměstnanec by se mohli dívat poštou. Podobně, někdo by mohl klepat na telefon bez vašeho vědomí a zaznamenávat každý jednotlivý hovor, který provedete.

jedním z řešení, jak zabránit odposlechům v přístupu k obsahu zprávy, je šifrování. To v podstatě znamená přidat do zprávy kód, který jej změní na neuspořádaný nepořádek. Pokud je váš kód dostatečně složitý, pak jediní lidé, kteří budou mít přístup k původní zprávě, jsou ti, kteří mají přístup k kódu.,

Pokud jste měli možnost sdílet kód s vaším přítelem předem, pak buď můžete poslat šifrovanou zprávu na jakoukoli dobu, protože věděl, že ti dva jsou jediní, s schopnost číst obsah zprávy. Ale co když jste neměli možnost sdílet kód předem?

Jedná se o jeden ze základních problémů kryptografie, který byl řešen šifrovacími schématy veřejného klíče (také známými jako asymetrické šifrování), jako je RSA.

pod šifrováním RSA jsou zprávy šifrovány kódem zvaným veřejný klíč, který lze otevřeně sdílet., Vzhledem k některým odlišným matematickým vlastnostem algoritmu RSA, jakmile je zpráva zašifrována veřejným klíčem, může být dešifrována pouze jiným klíčem, známým jako soukromý klíč. Každý uživatel RSA má klíčový pár skládající se z jejich veřejných a soukromých klíčů. Jak název napovídá, soukromý klíč musí být utajen.

schémata šifrování veřejného klíče se liší od šifrování symetrického klíče, kde proces šifrování i dešifrování používá stejný soukromý klíč., Tyto rozdíly činí šifrování veřejného klíče, jako je RSA, užitečným pro komunikaci v situacích, kdy nebyla možnost bezpečně distribuovat klíče předem.

symetrické klíčové algoritmy mají své vlastní aplikace, jako je šifrování dat pro osobní použití,nebo pokud existují bezpečné kanály, které mohou být soukromé klíče sdíleny.

Viz také: kryptografie veřejného klíče

kde se používá šifrování RSA?

RSA šifrování je často používán v kombinaci s jinými šifrovací systémy, nebo pro digitální podpisy, které mohou prokázat pravost a integritu zprávy., Obecně se nepoužívá k šifrování celých zpráv nebo souborů, protože je méně efektivní a těžší než šifrování symetrického klíče.

aby se věci zefektivnily, bude soubor obecně šifrován algoritmem symetrického klíče a symetrický klíč bude šifrován šifrováním RSA. V rámci tohoto procesu bude moci symetrický klíč dešifrovat pouze entita, která má přístup k soukromému klíči RSA.

bez přístupu k symetrickému klíči nelze původní soubor dešifrovat., Tato metoda může být použita k udržení zpráv a souborů v bezpečí, aniž by to trvalo příliš dlouho nebo spotřebovávalo příliš mnoho výpočetních zdrojů.

šifrování RSA lze použít v řadě různých systémů. Může být implementován v OpenSSL, wolfCrypt, cryptlib a řadě dalších kryptografických knihoven.

jako jeden z prvních široce používaných systémů šifrování veřejného klíče položil RSA základy pro většinu naší zabezpečené komunikace. To bylo tradičně používáno v TLS a byl také původní algoritmus používaný v šifrování PGP., RSA je stále vidět v řadě webových prohlížečů, e-mailu, VPN, chatu a dalších komunikačních kanálů.

RSA se také často používá k vytváření bezpečných spojení mezi klienty VPN a servery VPN. V protokolech, jako je OpenVPN, mohou TLS handshakes použít algoritmus RSA k výměně klíčů a vytvoření zabezpečeného kanálu.

pozadí šifrování RSA

jak jsme zmínili na začátku tohoto článku, před šifrováním veřejného klíče bylo výzvou bezpečně komunikovat, pokud nebyla možnost bezpečně vyměňovat klíče předem., Pokud nebyla možnost sdílet kód předem nebo zabezpečený kanál, přes který by mohly být klíče distribuovány, neexistoval způsob, jak komunikovat bez hrozby, že nepřátelé budou moci zachytit a přistupovat k obsahu zprávy.

až v 70. letech se věci skutečně začaly měnit. První hlavní vývoj směrem k tomu, co nyní nazýváme kryptografií veřejného klíče, byl publikován na začátku desetiletí Jamesem h. Ellisem., Ellis nemohl najít způsob, jak realizovat svou práci, ale jeho kolega Clifford Cocks ji rozšířil, aby se stala tím, co nyní známe jako šifrování RSA.

poslední část skládačky je to, čemu nyní říkáme výměna klíčů Diffie-Hellman. Malcolm J. Williamson, další spolupracovník, přišel na schéma, které umožnilo dvěma stranám sdílet šifrovací klíč, i když byl kanál sledován protivníky.

všechny tyto práce byly provedeny v britské zpravodajské agentuře, ředitelství vládních komunikací (GCHQ), které nález utajilo., Částečně kvůli technologickým omezením, GCHQ v té době neviděl použití pro kryptografii veřejného klíče, takže vývoj seděl nečinně na polici a shromažďoval prach. Až v roce 1997 bylo dílo odtajněno a původní vynálezci RSA byli uznáni.

o několik let později se podobné pojmy začaly rozvíjet ve veřejné sféře. Ralph Merkle vytvořil ranou formu kryptografie veřejného klíče, která ovlivnila Whitfield Diffie a Martin Hellman v designu Diffie-Hellman key exchange.,

Diffie a Hellman nápady chybí jeden důležitý aspekt, který by jejich práci základy kryptografie s veřejným klíčem. Jednalo se o jednosměrnou funkci, kterou by bylo obtížné převrátit. V roce 1977 přišli Ron Rivest, Adi Shamir a Leonard Adleman, jejichž příjmení tvoří zkratku RSA, s řešením po roce práce na problému.

akademici se sídlem v MIT dosáhli svého průlomu po pesachové straně v roce 1977., Po noci pití se Rivest vrátil domů, ale místo spánku strávil večer horečně psaním papíru, který formalizoval jeho myšlenku na nezbytnou jednosměrnou funkci.

myšlenka byla patentována v roce 1983 společností MIT, ale až v prvních dnech internetu začal algoritmus RSA považovat rozšířené přijetí za důležitý bezpečnostní nástroj.

jak funguje šifrování RSA?

následující bude trochu zjednodušení, protože příliš mnoho čtenářů pravděpodobně byla poznamenána jejich středoškolský učitel matematiky., Aby matematika příliš out-of-ruky, budeme zjednodušení některých pojmů a pomocí mnohem menší čísla. Ve skutečnosti šifrování RSA používá prvočísla, která jsou mnohem větší a existuje několik dalších složitostí.

existuje několik různých konceptů, které budete muset obejít, než budeme moci vysvětlit, jak to všechno zapadá dohromady. Mezi ně patří padací dveře funkce, generování prvočísel, Carmichael ‚ s totient funkce a samostatné procesy v oblasti výpočetní techniky, veřejných a soukromých klíčů používaných v šifrování a dešifrování procesy.,

Trap Door functions

RSA encryption funguje za předpokladu, že algoritmus je snadno vypočítat v jednom směru, ale téměř nemožné v opačném směru. Jako příklad, pokud vám bylo řečeno, že 701,111 je produkt dvou prvočísel, mohli byste zjistit, jaká jsou tato dvě čísla?

i s kalkulačkou nebo počítačem by většina z nás neměla představu o tom, kde začít, natož aby mohla přijít na odpověď. Ale když to otočíme, bude to mnohem jednodušší., Jaký je výsledek:

907 x 773

Pokud jste se nudili dost, byli byste schopni vytáhnout telefon nebo jej možná vypočítat v hlavě, abyste zjistili, že odpověď je výše uvedená 701,111. Tento 907 a 773 jsou prvočísla, že odpověď na naši první otázku, která nám ukazuje, že určité rovnice lze snadno zjistit, jeden způsob, ale zdánlivě nemožné v opačném směru.

dalším zajímavým aspektem této rovnice je, že je snadné zjistit jedno z prvočísel, pokud již máte druhé, stejně jako produkt., Pokud jste řekl, že 701,111 je výsledkem 907 násobí další prvočíslo, můžete zjistit další prime s následující rovnici:

701,111 ÷ 907 = 773

Protože vztah mezi těmito čísly je jednoduché spočítat v jednom směru, ale neuvěřitelně těžké v opačném směru, rovnice je známá jako padací dveře funkce. Uvědomte si, že zatímco výše uvedený příklad je pro lidi těžké zjistit, počítače mohou operaci provádět v triviálním čase.

Z tohoto důvodu používá RSA mnohem větší čísla., Velikost prvočísel v reálné implementaci RSA se liší,ale v 2048bitové RSA by se spojily, aby vytvořily klíče, které jsou dlouhé 617 číslic. Pomůže vám to představit, klíčem bude číslo této velikosti:

Generování prvočísel

padací dveře funkce uvedené výše, základem pro to, jak veřejný a soukromý klíč šifrování režimy práce. Jejich vlastnosti umožňují sdílení veřejných klíčů bez ohrožení zprávy nebo odhalení soukromého klíče. Umožňují také šifrování dat jedním klíčem způsobem, který lze dešifrovat pouze druhým klíčem z páru.,

prvním krokem šifrování zprávy pomocí RSA je generování klíčů. K tomu potřebujeme dvě prvočísla (p A q), která jsou vybrána s testem primality. Test primality je algoritmus, který efektivně najde prvočísla, jako je rabinův-Millerův prvočíselný test.

prvočísla v RSA musí být velmi velká a také relativně daleko od sebe. Čísla, která jsou malá nebo blíže k sobě, jsou mnohem jednodušší. Navzdory tomu bude náš příklad používat menší čísla, aby se věci snáze sledovaly a vypočítávaly.,

řekněme, že test primality nám dává prvočísla, která jsme použili výše, 907 a 773. Dalším krokem je zjistit modul pružnosti (n), pomocí následujícího vzorce:

n = p x q.

, Kde p = 907 a q = 773

Proto

n = 907 x 773

n = 701,111

Carmichael ‚ s totient funkce

Jakmile máme n, používáme Carmichael ‚ s totient funkce:

λ(n) = lcm (p − 1, q − 1)

Pokud je to už dlouho, co jste hit matematické učebnice, výše uvedené může vypadat trochu děsivé., Můžete přeskočit tuto část a jen věřit, že matematika funguje, jinak se s námi držte ještě několik výpočtů. Vše bude vysvětleno co nejpodrobněji, aby vám pomohlo dostat hlavu kolem základů.

Pro ty, kteří si nejsou vědomi, λ(n) představuje Carmichael ‚ s totient pro n, zatímco lcm znamená, nejmenší společný násobek, což je nejnižší číslo, které oba p a q lze rozdělit do. Existuje několik různých způsobů, jak na to přijít, ale nejjednodušší je důvěřovat online kalkulačce, která Vám provede rovnici., Takže pojďme dát naše čísla do rovnice:

λ(701,111) = lcm (907 − 1, 773 − 1)

λ(701,111) = lcm (906, 772)

Použití kalkulačky souvisí výše, to nám dává:

λ(701,111) = 349,716

Generování veřejného klíče

Nyní, že máme Carmichael ‚ s totient naší prvočísla, je čas přijít na náš veřejný klíč. Podle RSA, veřejné klíče jsou vyrobeny z prvočíslo e, stejně jako n. Číslo e může být něco mezi 1 a hodnota λ(n), což je v našem příkladu je 349,716.,

protože veřejný klíč je sdílen otevřeně, není tak důležité, aby e bylo náhodné číslo. V praxi je e obecně nastavena na 65,537, protože když jsou mnohem větší čísla vybrána náhodně, je šifrování mnohem méně efektivní. Pro dnešní příklad budeme udržovat čísla malá, aby výpočty byly efektivní. Řekněme:

e = 11

naše konečná šifrovaná data se nazývají ciphertext (c). Čerpáme z našich prostý text zprávy (m), použitím veřejného klíče s následující vzorec:

c = me mod n,

už Jsme se přijít s e a víme, že n stejně., Jediné, co musíme vysvětlit, je mod. Je to trochu mimo hloubku tohoto článku, ale odkazuje na operaci modulo, což v podstatě znamená zbytek, který zbyl, když rozdělíte jednu stranu druhou. Například:

10 mod 3 = 1

je to proto, že 3 jde do 10 třikrát, se zbytkem 1.

zpět k naší rovnici. Abychom to udrželi jednoduché, řekněme, že zpráva (m), kterou chceme zašifrovat a udržet v tajnosti, je pouze jedno číslo, 4., Pojďme plug všechno:

c = me mod n,

c = 411 mod 701,111

c = 4,194,304 mod 701,111

Opět, aby se operace modulo snadné, budeme pomocí on-line kalkulačky, ale jste vítáni, aby se na to přijít sami. Pomocí zadání 4,194,304 do on-line kalkulačky, to nám dává:

c = 688,749

Proto, když používáme RSA pro šifrování naši zprávu, 4, s naším veřejným klíčem, a to nám dává ciphertext z 688,749., Předchozí kroky se možná zdály příliš matematické, ale je důležité zopakovat, co se skutečně stalo.

měli jsme zprávu 4, kterou jsme chtěli udržet v tajnosti. Použili jsme na něj veřejný klíč, který nám dal šifrovaný výsledek 688,749. Nyní, když je šifrována, můžeme bezpečně odeslat číslo 688,749 majiteli dvojice klíčů. Jsou jedinou osobou, která ji bude moci dešifrovat svým soukromým klíčem. Když to dešifrují, uvidí zprávu, kterou jsme opravdu posílali, 4.,

Generuje soukromý klíč

V RSA šifrování, jakmile jsou data nebo zprávy se stala šifra s veřejným klíčem, lze dešifrovat pouze soukromým klíčem od stejné dvojice klíčů. Soukromé klíče jsou složené z d a n. Již víme, že n a následující rovnice se používá k nalezení d:

d =1/e mod λ(n)

V Generování veřejného klíče sekci, už jsme se rozhodli, že v našem příkladu, e je rovno 11. Podobně víme, že λ(n) se rovná 349,716 z naší dřívější práce pod carmichaelovou totientní funkcí., Věci se trochu složitější, když jsme narazili na tuhle část vzorce,

1/e mod

Tato rovnice může vypadat, že vás žádá, abyste rozdělit 1 do 11, ale to není tento případ. Místo toho to jen symbolizuje, že musíme vypočítat modulární inverzi e(což je v tomto případě 11) a λ (n) (což je v tomto případě 349,716).

to v podstatě znamená, že namísto provádění standardní modulo operace budeme místo toho používat inverzní., To se obvykle vyskytuje s rozšířeným Euklidovským algoritmem, ale je to trochu mimo rozsah tohoto článku, takže místo toho budeme jen podvádět a používat online kalkulačku., Teď, že jsme pochopili všechno, co se děje, pojďme plug naše informace do vzorce:

d =1/11 mod 349,716

Chcete-li tuto operaci provést, jednoduše zadejte 11 (nebo jakákoli hodnota, kterou může mít pro e pokud jsi se o to s vaší vlastní příklad), kde se říká, že celé Číslo a 349,716 (nebo jakákoli hodnota, kterou může mít pro λ(n), pokud jste se o to s vaší vlastní příklad) kde se říká, že Modulo v on-line kalkulačka, která byla spojena výše., Pokud jste to udělali správně, měli byste dostat výsledek, pokud:

d = 254, 339

Nyní, když máme hodnoty pro d, můžeme dešifrování zpráv, které byly zašifrovány pomocí našeho veřejného klíče pomocí následujícího vzorce:

m = cd mod n,

nyní se můžeme vrátit k ciphertext, že jsme zašifrované pod Generování soukromého klíče oddíl. Když jsme zprávu zašifrovali veřejným klíčem, dala nám hodnotu c 688 749. Shora víme, že d se rovná 254 339. Také víme, že n se rovná 701,111. To nám dává:

m = 688,749254,339 mod 701,111.,

jak jste si možná všimli, pokusit se vzít číslo na výkon 254,339 th může být pro většinu běžných kalkulaček trochu moc. Místo toho budeme používat online dešifrovací kalkulačku RSA. Pokud jsi chtěl použít jinou metodu, by uplatňovat pravomoci, jako byste normálně, a provádět komplexní operace stejným způsobem, jako jsme to udělali v Generování veřejného klíče oddíl.,

V kalkulačce souvisí výše, zadejte 701,111, kde se říká, Nabídky Modul: N, 254,399 kde se říká, že Dešifrovací Klíč: D, a 688,749, kde se říká, Ciphertext Zprávu v číselné podobě, jak je uvedeno níže:

Jakmile jste zadali data, hit Dešifrovat, který se bude dát čísla přes dešifrování vzorec, který byl uveden výše. To vám dá původní zprávu v poli níže. Pokud jste udělali všechno správně, měli byste dostat odpověď 4, což byla původní zpráva, kterou jsme zašifrovali pomocí našeho veřejného klíče.,

jak šifrování RSA funguje v praxi

výše uvedené části by vám měly poskytnout rozumný přehled o tom, jak funguje matematika šifrování veřejného klíče. Může to být trochu matoucí, ale i ti, kteří nerozuměli složitosti rovnic, mohou doufejme odnést některé důležité informace o procesu.

ve výše uvedených krocích jsme ukázali, jak mohou dvě entity bezpečně komunikovat, aniž by dříve sdílely kód předem. Za prvé, každý z nich musí nastavit své vlastní dvojice klíčů a sdílet veřejný klíč mezi sebou., Tyto dva subjekty musí mít své soukromé klíče v tajnosti, aby jejich komunikace zůstala bezpečná.

jakmile má odesílatel veřejný klíč svého příjemce, může jej použít k šifrování dat, která chtějí zachovat v bezpečí. Jakmile je zašifrován veřejným klíčem, může být dešifrován pouze soukromým klíčem ze stejného páru klíčů. Ani stejný veřejný klíč nelze použít k dešifrování dat. To je způsobeno vlastnostmi funkcí pastových dveří, které jsme zmínili výše.

když příjemce obdrží šifrovanou zprávu, použije pro přístup k datům svůj soukromý klíč., Pokud chce příjemce vrátit komunikaci bezpečným způsobem, může pak zašifrovat svou zprávu veřejným klíčem strany, se kterou komunikuje. Opět, jakmile je zašifrován veřejným klíčem, jediný způsob, jak lze k informacím přistupovat, je prostřednictvím odpovídajícího soukromého klíče.

tímto způsobem mohou dříve neznámé strany použít šifrování RSA k bezpečnému odesílání dat mezi sebou. Z této nadace byly vybudovány významné části komunikačních kanálů, které používáme v našem online životě.,

jak jsou složitější zprávy šifrovány pomocí RSA?

v našem příkladu jsme hodně zjednodušili věci, abychom usnadnili pochopení, a proto jsme zašifrovali pouze zprávu „4“. Je schopen šifrovat číslo 4 se nezdá, zvláště užitečné, takže můžete být zvědaví, jak se můžete šifrovat složitější sadu dat, jako je například symetrický klíč (což je nejběžnější použití RSA), nebo dokonce zprávy.,

Někteří lidé mohou být zmateni, jak klíč jako „n38cb29fkbjh138g7fqijnf3kaj84f8b9f…“, nebo zprávy, jako je „koupit mi sendvič“ může být šifrována pomocí algoritmu, jako je RSA, která se zabývá čísla a ne písmena. Realita je taková, že všechny informace, které naše počítače, proces je uložen v binární (1s a 0s) a používáme standardy kódování jako ASCII nebo Unicode, aby je zastupoval v způsoby, které lidé mohou pochopit (písmena).,

To znamená, že klávesy jako „n38cb29fkbjh138g7fqijnf3kaj84f8b9f…“ a zprávy, jako je „koupit mi sendvič“ již existují čísla, která mohou být snadno vypočítány algoritmem RSA. Čísla, která jsou reprezentována, jsou pro nás mnohem větší a těžší, a proto se raději zabýváme alfanumerickými znaky než změť binárních.

Pokud byste chtěli šifrovat delší relační klíč nebo složitější zprávu s RSA, jednoduše by to zahrnovalo mnohem větší číslo.,

polstrování

když je implementována RSA, používá něco, co se nazývá polstrování, aby se zabránilo řadě útoků. Abychom vysvětlili, jak to funguje, začneme příkladem. Řekněme, že jste posílali kódovanou zprávu příteli:

drahá Karen,

doufám, že jste v pořádku. Budeme ještě zítra večeřet?

S pozdravem,

James

Řekněme, že jste kódovali zprávu jednoduchým způsobem změnou každého dopisu na ten, který ji následuje v abecedě. To by změnilo zprávu na:

Efbs Lbsfo,

j ipqf zpv bsf xfmm., Bsf xf tujmm ibwjoh ejoofs upnpsspx?

Zpvst tjodfsfmz,

Kbnft

Pokud vaši nepřátelé zachytili tento dopis, existuje trik, který by mohli použít k vyzkoušení kódu. Mohli by se podívat na formát vašeho dopisu a pokusit se odhadnout, co by zpráva mohla říkat. Vědí, že lidé obvykle začínají své dopisy „Hi“, „Hello“,“ Dear “ nebo řadou dalších konvencí.

Pokud se pokusili použít jako první slovo“ Hi „nebo“ Hello“, viděli by, že by to neodpovídalo počtu znaků. Mohli by pak zkusit „drahá“., Hodí se, ale to nemusí nutně znamenat nic. Útočníci to prostě zkusili a zjistili, kam je to dovedlo. Takže by změnili písmena „e“, „f“, „b“ A „S“ S „S“ d“,“ e“,“ a “ A „r“. To by jim dalo:

Dear Laseo,

J ipqe zpv jsou xemm. Jsou xe tujmm iawjoh djooes upnpsspx?

Zpvrt tjoderemz,

Kanet

stále to vypadá docela matoucí, takže útočníci by se mohli pokusit podívat na některé další konvence, jako je to, jak uzavíráme naše dopisy. Lidé na konci často přidávají „Z“ nebo „laskavé pozdravy“, ale ani jeden z nich neodpovídá formátu., Místo toho by útočníci mohli zkusit „s pozdravem“ a nahradit ostatní dopisy, aby zjistili, kde je dostane. Tím, že mění „z“, „p“, „v“, „t“, „j“, „o“, „d“ a „m“ s „y“, „o“, „u“, „s“, „i“, „n“, „c“ a „l“, respektive, že by si:

Vážení Lasen,

já ioqe jste xell. Jsou xe tuill iawinh dinnes uonossox?

S pozdravem,

Kanet

po této úpravě to vypadá, že se útočníci začínají někam dostat. Našli slova „já“, „vy“ a „jsou“, kromě slov, která tvořila jejich počáteční odhady.,

vzhledem k tomu, že slova jsou ve správném gramatickém pořadí, mohou být útočníci docela přesvědčeni, že míří správným směrem. Nyní si pravděpodobně také uvědomili, že kód zahrnoval každé písmeno, které bylo změněno na písmeno, které jej následuje v abecedě. Jakmile si to uvědomí, usnadňuje překládání zbytku a čtení původní zprávy.

výše uvedený příklad byl jen jednoduchý kód, ale jak vidíte, struktura zprávy může útočníkům poskytnout vodítka o jeho obsahu., Tak určitě, bylo obtížné zjistit zprávu pouze z její struktury a trvalo to nějaké vzdělané dohady, ale musíte mít na paměti, že počítače jsou v tom mnohem lepší než my. To znamená, že mohou být použity k určení mnohem složitějších kódů v mnohem kratším čase na základě stop, které pocházejí ze struktury a dalších prvků.

Pokud struktura může vést k popraskání kódu a odhalení obsahu zprávy, potřebujeme nějaký způsob, jak skrýt strukturu, abychom udrželi zprávu v bezpečí. To nás přivádí k polstrování.,

když je zpráva polstrovaná, přidá se randomizovaná data, která skryjí původní stopy formátování, které by mohly vést k přerušení šifrované zprávy. S RSA jsou věci trochu komplikovanější, protože šifrovaný klíč nemá zřejmé formátování dopisu, který nám pomohl poskytnout vodítka v našem výše uvedeném příkladu.

navzdory tomu mohou protivníci použít řadu útoků k využití matematických vlastností kódu a prolomení šifrovaných dat. Vzhledem k této hrozbě, implementace RSA použít polstrování schémata jako OAEP vložit další data do zprávy., Přidání tohoto polstrování před šifrováním zprávy činí RSA mnohem bezpečnější.

podpisové zprávy

RSA lze použít pro více než jen šifrování dat. Jeho vlastnosti také, aby to užitečný systém pro potvrzení, že zpráva byla odeslána subjektu, který tvrdí, že to poslal, stejně jako prokazující, že zpráva nebyla změněna nebo manipulováno.,

Když někdo chce prokázat pravost své zprávy, může vypočítat hash (funkci, která bere data libovolné velikosti a změní ji na hodnotu s pevnou délkou) prostého textu a poté ji podepsat svým soukromým klíčem. Podepisují hash použitím stejného vzorce, který se používá při dešifrování (m = CD mod n). Jakmile je zpráva podepsána, pošlou tento digitální podpis příjemci vedle zprávy.,

Pokud příjemce obdrží zprávu s digitálním podpisem, může použít podpis zkontrolovat, zda zpráva byla autenticky podepsané soukromým klíčem osoby, která tvrdí, že to poslal. Mohou také zjistit, zda byla zpráva změněna útočníky poté, co byla odeslána.

Chcete-li zkontrolovat digitální podpis, příjemce nejprve použije stejnou funkci hash k nalezení hodnoty hash zprávy, kterou obdržel., Příjemce pak použije veřejný klíč odesílatele na digitální podpis pomocí šifrovacího vzorce (C = Me mod n), aby jim dal hash digitálního podpisu.

porovnáním hash zprávy, která byla přijata spolu s hash ze šifrovaného digitálního podpisu, může příjemce zjistit, zda je zpráva autentická. Pokud jsou obě hodnoty stejné, zpráva nebyla změněna, protože byla podepsána původním odesílatelem. Pokud by byla zpráva změněna dokonce jediným znakem, hodnota hash by byla zcela odlišná.,

RSA security & útoky

stejně jako většina kryptosystémů, bezpečnost RSA závisí na tom, jak je implementována a používána. Jedním důležitým faktorem je velikost klíče. Čím větší je počet bitů v klíči (v podstatě jak dlouho je klíč), tím obtížnější je prolomit útoky, jako je hrubé vynucení a factoring.

Od asymetrických klíčových algoritmů, jako je například RSA může být rozbit číslo faktorizace, zatímco symetrické klíče algoritmy, jako je AES nemůže, klíče RSA musí být mnohem déle, aby se dosáhlo stejné úrovně bezpečnosti.,

v současné době je největší velikost klíče, která byla zohledněna, 768 bitů dlouhá. Za dva roky to udělal tým akademiků, kteří využívali stovky strojů.

Od factoringové byla dokončena do konce roku 2009 a výpočetní výkon výrazně zvýšil od té doby, dá se předpokládat, že pokus o podobné intenzitě může nyní faktor mnohem větší RSA klíč.

navzdory tomu je čas a zdroje potřebné pro tento druh útoku mimo dosah většiny hackerů a do říše národních států., Nejlepší délka klíče k použití bude záviset na vašem individuálním modelu hrozby. Národní institut standardů a technologií doporučuje minimální velikost klíče 2048-bit, ale 4096-bitové klíče se používají také v některých situacích, kdy je úroveň hrozby vyšší.

Factoring je jen jedním ze způsobů, jak může být RSA přerušena. Řada dalších útoků má potenciál prolomit šifrování s menším množstvím zdrojů, ale ty závisí na implementaci a dalších faktorech, ne nutně samotné RSA. Některé z nich zahrnují:

jsou prvočísla opravdu náhodná?,

některé implementace RSA používají slabé generátory náhodných čísel, aby přišli s prvočísly. Pokud tato čísla nejsou dostatečně náhodná, je pro útočníky mnohem snazší je faktor a prolomit šifrování. Tomuto problému lze zabránit použitím Kryptograficky bezpečného generátoru pseudo-náhodných čísel.

špatná generace klíčů

klíče RSA musí spadat do určitých parametrů, aby byly bezpečné. Pokud jsou primes p A q příliš blízko u sebe, klíč lze snadno objevit. Stejně tak číslo d, které tvoří část soukromého klíče, nemůže být příliš malé., Nízká hodnota usnadňuje řešení. Je důležité, aby tato čísla měla dostatečnou délku, aby byl váš klíč v bezpečí.

Side channel attacks

jedná se o typ útoku, který nechci rozbít RSA přímo, ale místo toho použít informace z jeho provádění, aby útočníkům rady o procesu šifrování. Tyto útoky mohou zahrnovat věci, jako je analýza množství energie, která je používána, nebo pobočky predikce analýza, který používá provedení-měření času zjistit soukromý klíč.

jiný typ útoku na postranní kanál je známý jako časový útok., Pokud má útočník schopnost měřit dobu dešifrování v počítači svého cíle pro řadu různých šifrovaných zpráv, mohou tyto informace útočníkovi umožnit zjistit soukromý klíč cíle.

většina implementací RSA se tomuto útoku vyhýbá přidáním jednorázové hodnoty během šifrovacího procesu, který odstraní tuto korelaci. Tento proces se nazývá kryptografické oslepování.

je šifrování RSA bezpečné pro budoucnost?

dobrou zprávou je, že RSA je navzdory těmto možným útokům považována za bezpečnou., Námitka spočívá v tom, že je třeba ji správně implementovat a použít klíč, který spadá do správných parametrů. Jak jsme právě diskutovali, implementace, které nepoužívají polstrování, používají nedostatečně velké prvočísla nebo mají jiné zranitelnosti, nelze považovat za bezpečné.

Pokud chcete použít šifrování RSA, ujistěte se, že používáte klíč nejméně 1024 bitů. Ti, kteří mají vyšší modely hrozeb, by se měli držet klíčů 2048 nebo 4096 bitů, pokud chtějí používat RSA s důvěrou., Pokud jste si vědomi slabých stránek, které má RSA, a používejte je správně, měli byste se cítit bezpečně používat RSA pro sdílení klíčů a další podobné úkoly, které vyžadují šifrování veřejného klíče.

Viz také: běžné typy šifrování vysvětleno

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *