Asymetrické šifrování. Jak to funguje? Symetrické šifrování klíče

V naší počítačové době lidstvo stále více odmítá ukládat informace v ručně psané nebo tištěné podobě a dává přednost dokumentům. A pokud dříve jednoduše kradli papíry nebo pergameny, nyní jsou to elektronické informace, které jsou napadeny. Samotné algoritmy šifrování dat jsou známé od nepaměti. Mnoho civilizací upřednostňovalo šifrování svých jedinečných znalostí, aby je mohli získat pouze znalí lidé. Pojďme se ale podívat, jak se to všechno odráží v našem světě.

Co je to systém šifrování dat?

Nejprve se musíte rozhodnout, jaké kryptografické systémy obecně jsou. Zhruba řečeno se jedná o speciální algoritmus pro záznam informací, který by byl srozumitelný pouze určitému okruhu lidí.

V tomto smyslu by pro člověka zvenčí vše, co vidí, mělo (a v zásadě také působí) připadat jako nesmyslná sada symbolů. Takovou sekvenci může přečíst jen ten, kdo zná pravidla pro jejich uspořádání. Jako velmi jednoduchý příklad můžete definovat šifrovací algoritmus se slovy napsanými, řekněme, pozpátku. Samozřejmě je to to nejprimitivnější, co můžete vymyslet. Rozumí se, že pokud znáte pravidla nahrávání, obnovení původního textu nebude obtížné.

Proč je to nutné?

Proč to všechno bylo vymyšleno, asi nemá cenu vysvětlovat. Podívejte se, jaké množství znalostí, které zbylo ze starověkých civilizací, je dnes v zašifrované podobě. Buďto starověcí lidé nechtěli, abychom to věděli, nebo se to všechno dělalo proto, aby je člověk mohl používat, až když dosáhne požadované úrovně rozvoje – o tom se zatím můžeme jen dohadovat.

Pokud se však budeme bavit o dnešním světě, jedním z největších problémů se stává informační bezpečnost. Posuďte sami, protože ve stejných archivech je tolik dokumentů, o kterých by vlády některých zemí nechtěly mluvit, kolik tajných vývojů, kolik nových technologií. Ale to vše je vesměs primárním cílem takzvaných hackerů v klasickém slova smyslu.

Napadá mě pouze jedna věta, která se stala klasikou principů Nathana Rothschilda: „Kdo vlastní informace, vlastní svět“. A proto je třeba informace chránit před zvědavýma očima, aby je někdo jiný nezneužil pro své sobecké účely.

Kryptografie: výchozí bod

Nyní, než se zamyslíme nad samotnou strukturou, kterou má každý šifrovací algoritmus, pojďme se trochu ponořit do historie, do těch vzdálených časů, kdy byla tato věda teprve v plenkách.

Předpokládá se, že umění skrývat data se začalo aktivně rozvíjet před několika tisíci lety před naším letopočtem. Prvenství je připisováno starověkým Sumerům, králi Šalomounovi a egyptským kněžím. Teprve mnohem později se objevily stejné runové znaky a symboly jim podobné. Ale tady je to zajímavé: někdy byl algoritmus pro šifrování textů (a v té době to byli oni, kdo byl zašifrován) takový, že ve stejném symbolu mohl znamenat nejen jedno písmeno, ale také celé slovo, pojem nebo dokonce větu. Z tohoto důvodu je dešifrování takových textů, a to i pomocí moderních kryptografických systémů, které umožňují obnovit původní podobu jakéhokoli textu, absolutně nemožné. V moderním pojetí jde o poměrně pokročilé, jak se nyní říká, symetrické šifrovací algoritmy. Podívejme se na ně samostatně.

Moderní svět: typy šifrovacích algoritmů

Pokud jde o ochranu důvěrných dat v moderním světě, stojí za to se zastavit v dobách, kdy byly počítače lidstvu neznámé. Nemluvě o tom, kolik papíru alchymisté nebo stejní templáři přeložili a snažili se skrýt pravdivé texty o jim známých znalostech, stojí za to připomenout, že od vzniku tohoto spojení se problém jen zhoršil.

A zde možná nejslavnější zařízení lze nazvat německým šifrovacím strojem z druhé světové války s názvem „Enigma“, což v překladu z angličtiny znamená „hádanka“. Opět je to příklad toho, jak se používají symetrické šifrovací algoritmy, jejichž podstatou je, že šifrátor a dešifrovač znají klíč (algoritmus), který byl původně použit ke skrytí dat.

Dnes se takové kryptosystémy používají všude. Za nejvýraznější příklad lze považovat řekněme algoritmus, který je mezinárodním standardem. V počítačové terminologii umožňuje použití 256bitového klíče. Obecně jsou moderní šifrovací algoritmy velmi rozmanité a lze je rozdělit do dvou velkých tříd: symetrické a asymetrické. V závislosti na oblasti určení se dnes používají velmi široce. A výběr šifrovacího algoritmu přímo závisí na nastavených úkolech a způsobu obnovení informací v původní podobě. Ale jaký je mezi nimi rozdíl?

Symetrické a asymetrické šifrovací algoritmy: jaký je rozdíl

Nyní se podívejme, jaký je zásadní rozdíl mezi takovými systémy a na jakých principech je založena jejich aplikace v praxi. Jak je již jasné, šifrovací algoritmy jsou spojeny s geometrickými pojmy symetrie a asymetrie. Co to znamená, bude nyní objasněno.

Symetrický šifrovací algoritmus DES, vyvinutý již v roce 1977, zahrnuje jediný klíč, který je pravděpodobně znám oběma stranám. Se znalostí takového klíče není těžké jej v praxi použít ke čtení stejné nesmyslné sady znaků a uvést ji takříkajíc do čitelné podoby.

Co jsou asymetrické šifrovací algoritmy? Zde se používají dva klíče, to znamená, že jeden se používá pro kódování původní informace a druhý pro dešifrování obsahu, přičemž není vůbec nutné, aby se shodovaly nebo byly současně drženy kódovací a dekódovací stranou. Každému stačí jeden. Tím je zajištěno, že se oba klíče ve vysoké míře nedostanou do rukou třetích stran. Vzhledem k současné situaci však pro mnoho pachatelů trestných činů nepředstavuje tento druh krádeží žádný zvláštní problém. Další věcí je hledání přesně toho klíče (zhruba řečeno hesla), který je vhodný pro dešifrování dat. A zde může být tolik možností, že i nejmodernější počítač je bude zpracovávat několik desítek let. Jak bylo uvedeno, ani jeden počítačový systém na světě k němu nemůže hacknout přístup a získat to, čemu se říká „odposlech“ a v nadcházejících desetiletích se mu to nepodaří.

Nejznámější a nejčastěji používané šifrovací algoritmy

Ale vraťme se do světa počítačů. Co dnes nabízejí hlavní šifrovací algoritmy určené k ochraně informací v současné fázi vývoje počítačových a mobilních technologií?

Ve většině zemí je de facto standardem kryptografický systém AES založený na 128bitovém klíči. Paralelně s ním se však někdy používá algoritmus, který se sice týká šifrování pomocí otevřeného (veřejného) klíče, ale přesto patří k nejspolehlivějším. To mimochodem prokázali všichni přední odborníci, protože samotný systém je určen nejen stupněm šifrování dat, ale také zachováním integrity informací. Pokud jde o raný vývoj, který zahrnuje šifrovací algoritmus DES, je beznadějně zastaralý a pokusy o jeho nahrazení začaly již v roce 1997. Tehdy na jeho základě vznikl nový pokročilý standard šifrování AES (nejprve se 128bitovým klíčem, poté s 256bitovým klíčem).

RSA šifrování

Nyní se zaměřme na technologii RSA, která označuje asymetrický šifrovací systém. Předpokládejme, že jeden účastník odešle další informace zašifrované pomocí tohoto algoritmu.

Pro šifrování se vezmou dvě dostatečně velká čísla X a Y, po kterých se vypočítá jejich součin Z, nazývaný modul. Dále se vybere nějaké cizí číslo A, které splňuje podmínku: 1< A < (X - 1) * (Y - 1). Оно обязательно должно быть простым, то есть не иметь общих делителей с произведением (X - 1) * (Y - 1), равным Z. Затем происходит вычисление числа B, но только так, что (A * B - 1) делится на (X - 1) * (Y - 1). В данном примере A - открытый показатель, B - секретный показатель, (Z; A) - открытый ключ, (Z; B) - секретный ключ.

Co se děje během přepravy? Odesílatel vytvoří šifrový text, označený F, s počáteční zprávou M, následovanou A a vynásobenou mod Z: F = M**A*(mod Z). Příjemce si musí spočítat jednoduchý příklad: M = F**B*(mod Z). Zhruba řečeno, všechny tyto akce se týkají pouze umocňování. Na stejném principu funguje i možnost vytvoření digitálního podpisu, zde jsou však rovnice poněkud složitější. Aby nebyl uživatel obtěžován algebrou, nebude takový materiál prezentován.

Pokud jde o hackování, šifrovací algoritmus RSA pro útočníka představuje téměř nemožný úkol: vypočítat klíč B. To by se teoreticky dalo provést pomocí dostupných faktoringových nástrojů (faktorováním původních čísel X a Y), ale dnes žádné takové nástroje neexistují. proto se samotný úkol stává nejen obtížným – je zcela nemožným.

DES šifrování

Před námi je další, v minulosti docela účinný šifrovací algoritmus s maximální délkou bloku 64 bitů (znaků), z nichž je pouze 56 významných Jak již bylo zmíněno, tato technika je již zastaralá, i když trvá poměrně dlouho jako standard pro kryptosystémy používané v USA i pro obranný průmysl.

Podstatou jeho symetrického šifrování je, že k tomu slouží určitá sekvence 48 bitů. V tomto případě se pro operace používá 16 cyklů ze 48bitového vzorku klíče. Ale! Všechny cykly jsou v principu fungování podobné, takže v tuto chvíli není obtížné vypočítat požadovaný klíč. Například jeden z nejvýkonnějších počítačů ve Spojených státech, který stojí více než milion dolarů, „prolomí“ šifrování během asi tří a půl hodiny. U strojů nižší hodnosti netrvá ani výpočet sekvence v jejím maximálním provedení déle než 20 hodin.

AES šifrování

Konečně máme před sebou nejrozšířenější a donedávna nezranitelný systém - šifrovací algoritmus AES. Dnes se představuje ve třech modifikacích – AES128, AES192 a AES256. První možnost je využívána spíše pro zajištění informační bezpečnosti mobilních zařízení, druhá je využívána na vyšší úrovni. Jako standard byl tento systém oficiálně představen v roce 2002 a jeho podporu okamžitě oznámila společnost Intel Corporation, která vyrábí procesorové čipy.

Jeho podstata, na rozdíl od jakéhokoli jiného symetrického šifrovacího systému, spočívá ve výpočtech založených na polynomiální reprezentaci kódů a výpočtových operacích s dvourozměrnými poli. Podle vlády Spojených států by prolomení 128bitového klíče, i toho nejmodernějšího, trvalo asi 149 bilionů let. Prosíme, abychom se rozcházeli s tak kompetentním zdrojem. Za posledních sto let udělala počítačová technika skok odpovídající tomu, takže není třeba si příliš namlouvat, zvláště když dnes, jak se ukazuje, existují šifrovací systémy ještě lepší než ty, které Spojené státy prohlásily za zcela odolné. k hackování.

Problémy s viry a dešifrováním

Samozřejmě mluvíme o virech. V poslední době se objevily zcela specifické ransomwarové viry, které zašifrují celý obsah pevného disku a logických oddílů na infikovaném počítači, načež oběť obdrží dopis s upozorněním, že všechny soubory jsou zašifrovány a dešifrovat je může pouze určený zdroj po zaplacení poplatku. pořádná suma.

Zároveň je, co je nejdůležitější, naznačeno, že k šifrování dat byl použit systém AES1024, to znamená, že délka klíče je čtyřikrát větší než u současného AES256 a jednoduše se zvyšuje počet možností při hledání vhodného dešifrovače. neuvěřitelně.

A na základě prohlášení vlády USA o době, kterou zabere dešifrování 128bitového klíče, jak je to s časem, který by zabralo nalezení řešení pro případ 1024bitového klíče a jeho variant? Tady Spojené státy udělaly chybu. Věřili, že jejich počítačový kryptografický systém je dokonalý. Bohužel se našli někteří specialisté (zřejmě v postsovětském prostoru), kteří ve všech ohledech překonali „neměnné“ americké postuláty.

S tím vším dokonce i přední vývojáři antivirového softwaru, včetně Kaspersky Lab, specialisté, kteří vytvořili Doctor Web, ESET Corporation a mnoho dalších světových lídrů, jen krčí rameny, říkají, že na rozluštění takového algoritmu prostě nejsou peníze. , přičemž mlčí, že není dost času. Při kontaktování podpory jste samozřejmě požádáni o zaslání zašifrovaného souboru a pokud je k dispozici, nejlépe jeho originálu – v podobě, v jaké byl před zahájením šifrování. Bohužel ani srovnávací analýza zatím nepřinesla hmatatelné výsledky.

Svět, který neznáme

Co můžeme říci, když se honíme za budoucností, aniž bychom byli schopni rozluštit minulost. Když se podíváte do světa našeho tisíciletí, všimnete si, že stejný římský císař Gaius Julius Caesar používal v některých svých zprávách symetrické šifrovací algoritmy. No, když se podíváte na Leonarda da Vinciho, cítíte se obecně nesví už jen z toho, že v oblasti kryptografie tento muž, jehož život je zahalen jistým závojem tajemství, překonal svou současnost po staletí.

Až dosud mnohé pronásleduje takzvaný „úsměv Giocondy“, ve kterém je něco tak atraktivního, co moderní lidé nejsou schopni pochopit. Mimochodem, relativně nedávno byly na obraze nalezeny určité symboly (v oku, na šatech atd.), které jasně naznačují, že to vše obsahuje jakési informace zašifrované velkým géniem, které dnes, bohužel, můžeme extrahovat nelze. Ale ani jsme se nezmínili o různých druzích rozsáhlých struktur, které by mohly způsobit revoluci v chápání fyziky té doby.

Samozřejmě, že někteří lidé se přiklánějí výhradně k tomu, že ve většině případů byl použit takzvaný „zlatý řez“, ale neposkytuje klíč k celému obrovskému úložišti znalostí, které je považováno za nepochopitelné. nás nebo navždy ztraceni. Kryptografové mají zjevně ještě neuvěřitelné množství práce, aby pochopili, že moderní šifrovací algoritmy někdy nelze srovnávat s vývojem starověkých civilizací. Navíc, pokud dnes existují obecně uznávané zásady informační bezpečnosti, tak ty, které se používaly v dávných dobách, jsou pro nás bohužel zcela nedostupné a nepochopitelné.

A ještě jedna věc. Existuje nevyslovené přesvědčení, že většinu starověkých textů nelze přeložit jednoduše proto, že klíče k jejich rozluštění jsou pečlivě střeženy tajnými společnostmi jako Svobodní zednáři, Ilumináti atd. Svou stopu zde zanechali i templáři. Co říci k tomu, že Vatikánská knihovna stále zůstává zcela nepřístupná? Nejsou tam uloženy hlavní klíče k pochopení starověku? K této verzi se přiklání řada odborníků, kteří se domnívají, že Vatikán tyto informace společnosti záměrně zatajuje. Jestli je to pravda nebo ne, to zatím nikdo neví. Jedno však lze říci naprosto jistě – starověké kryptografické systémy nebyly v žádném případě horší (a možná dokonce lepší) než systémy používané v moderním počítačovém světě.

Místo doslovu

Nakonec stojí za zmínku, že zde nebyly zohledněny všechny aspekty související se současnými kryptografickými systémy a technikami, které používají. Faktem je, že ve většině případů by bylo nutné poskytnout složité matematické vzorce a předložit výpočty, ze kterých by se většině uživatelů jednoduše zatočila hlava. Stačí se podívat na příklad popisující algoritmus RSA, abyste si uvědomili, že vše ostatní bude vypadat mnohem komplikovaněji.

Zde jde především o to pochopit a ponořit se takříkajíc do podstaty problematiky. Pokud se budeme bavit o tom, jaké jsou moderní systémy, které nabízejí ukládání důvěrných informací tak, aby byly přístupné omezenému počtu uživatelů, není zde na výběr. Navzdory přítomnosti mnoha kryptografických systémů jsou stejné algoritmy RSA a DES jasně horší než specifika AES. Většina moderních aplikací vyvíjených pro zcela odlišné operační systémy však využívá AES (samozřejmě v závislosti na aplikaci a zařízení). Ale „neautorizovaný“ vývoj tohoto kryptosystému, mírně řečeno, šokoval mnohé, zejména jeho tvůrce. Ale obecně, na základě toho, co je dnes k dispozici, nebude pro mnoho uživatelů těžké pochopit, co jsou systémy šifrování kryptografických dat, proč jsou potřeba a jak fungují.

Ochrana kryptografických informací

Alexandra Prochorová

Výňatek z knihy Alexandra Prochorova „Internet: Jak to funguje“, informace o knize naleznete na adresa .

Podívejme se na konkrétní příklad. Nechte ředitele společnosti A zaslat důležitý dokument řediteli společnosti B e-mailem (obr. 1). Jaké problémy vznikají z hlediska bezpečnosti komunikace?

Po obdržení dopisu ředitel společnosti B pokládá následující otázky. Zda tento dokument skutečně odeslal ředitel A (identifikace odesílatele). Je totiž možné, že dopis pocházel od jiné osoby, která vystupuje jako ředitel společnosti A. Byl dokument zachycen a pozměněn po cestě doručení (ověření zprávy). Zda dokument četl někdo jiný než příjemce (utajení)

E-mail a přiložené soubory lze snadno číst v mezilehlých bodech jeho cesty přes internet, například na serveru poskytovatele

Je známo, že zachování utajení (důvěrnosti zprávy) lze dosáhnout šifrováním dat. Ukazuje se, že všechny tři tyto problémy lze vyřešit pomocí šifrování a kryptografie se těmito otázkami zabývá.

Kryptografie (z řeckého „cryptos“ – tajemství) je věda a technologie šifrování důležitých informací, aby byly chráněny před změnami a neoprávněným přístupem. Kryptografie slouží nejen k převodu textů do nečitelné šifrované podoby, ale umožňuje také řešit problémy s autentizací a identifikací uživatelů při práci na internetu.

Základem bezpečné komunikace je kryptografie. Na Obr. 1 jsme uvedli příklad korespondence mezi dvěma korespondenty. Nutno podotknout, že na internetu komunikujeme nejen s lidmi, ale také s různými službami. Například, když budeme stahovat program ze serveru, je také důležité, abychom věděli, že tento server patří vývojářské společnosti, a nikoli pirátské společnosti, která nelegálně distribuuje pirátský software.

Šifrování pomocí klíče

Proces šifrování pomocí klíče spočívá v tom, že se prostý text kombinuje s řetězcem čísel (klíčem) podle pravidel nějakého algoritmu (kryptografický algoritmus) za účelem získání zašifrované zprávy.

Předpokládejme, že chceme zašifrovat otevřený text „Ahoj Vasya“ pomocí nejjednoduššího algoritmu – nahrazením písmen jejich čísly v abecedě. V důsledku toho obdržíme zašifrovaný text ve tvaru: 17 18 10 3 6 20 3 1 19 33. Je zřejmé, že pokud se někdo zvenčí naučí šifrovací algoritmus, není možné jej v budoucnu použít.

Této nevýhodě se lze vyhnout použitím šifrování klíče. Abychom vysvětlili podstatu procesu šifrování pomocí klíče, uvedeme jednoduchý příklad (obr. 3).

Zapišme si písmena textu a pod ně zapišme jejich čísla v abecedě. Na třetí řádek zapíšeme písmena klíče a toto slovo opakujeme v celém řádku. Pod písmena klíče zapíšeme jejich čísla v abecedě a do čtvrtého řádku zapíšeme částku, která bude zašifrovanou zprávou: 20 19 29 36 atd.

Když znáte klíč a algoritmus, je snadné rozluštit zprávu: 20 - 3 = 17 a sedmnácté písmeno abecedy je „P“ atd. I když útočník zná algoritmus, ale nezná klíč, není možné zprávu přečíst bez zdlouhavé procedury výběru klíče. Lze tedy použít jeden algoritmus s mnoha klíči pro různé komunikační kanály, přičemž každému odpovídajícímu přiřadíme samostatný klíč.

Je zřejmé, že čím delší je šifrovací klíč, tím více je nutné zkoušet různé kombinace při dešifrování a tím obtížnější je dekódování zprávy. Šifry s klíči delšími než 128 bitů se nazývají silné.

Princip šifrování tajným klíčem

Symetrické šifrování klíče

Uvažujme konkrétní příklad: nechme dopisovatele A a B, aby si napsali dopis (obr. 4). Každý z nich má svůj vlastní tajný klíč (specifický tajný kód), který lze použít k šifrování dat před jejich odesláním na internet. Pro názornější znázornění šifrovacího schématu použijeme piktogramy (obr. 2), tedy klíč ve formě běžného klíče a zašifrovanou zprávu ve formě dokumentu zapečetěného v obálce. Poté lze proces šifrování a dešifrování znázornit ve formě Obr. 3.

Šifrovací schéma s tajným (symetrickým) klíčem

Uživatel A zašifruje zprávu svým tajným klíčem, odešle zprávu přes internet a příjemce B (pomocí stejného tajného klíče) zprávu dešifruje. Když se podíváte na obrázek, je snadné vidět, že obvod je symetrický. Levý a pravý uživatel používají stejné (symetrické) klíče, proto se tento typ šifrování nazývá šifrování symetrickým klíčem.

Problém šifrování tajného klíče má určité nevýhody. Za prvé, symetrické šifrování neřeší problém autentizace. Například A může napsat dopis nějaké třetí straně C a tvrdit, že B to udělal.

Před výměnou tajných zpráv musí být na počítači odesílatele a příjemce nainstalován symetrický klíč. To znamená, že musíte předem vědět, které dva počítače spolu budou „mluvit“. Je zřejmé, že šifrování pro bezpečnou komunikaci na internetu má smysl, když se korespondenti nepotřebují setkat osobně. Problém nastává při přenosu soukromého klíče. Opravdu. Pokud A poskytne B tajný klíč v nezašifrované podobě, může být zachycen. Pokud je klíč odeslán v zašifrované podobě, B jej nebude moci přijmout. Chcete-li si dopisovat s několika korespondenty, musíte mít jeden klíč pro každého korespondenta, což je nepohodlné. Za účelem vyřešení výše uvedených problémů bylo navrženo schéma asymetrického šifrování (šifrování veřejným klíčem).

Šifrování veřejného klíče

Šifrování veřejného klíče je založeno na použití páru klíčů: soukromý (soukromý) a veřejný (veřejný) klíč.

Zprávu lze zašifrovat soukromým i veřejným klíčem a dešifrovat pouze druhým klíčem z dvojice. To znamená, že zprávu zašifrovanou soukromým klíčem lze dešifrovat pouze veřejným klíčem a naopak. Soukromý klíč zná pouze vlastník a nelze jej s nikým sdílet, zatímco veřejný klíč je distribuován otevřeně všem korespondentům.

Dvojici klíčů - soukromý a veřejný - lze použít jak pro řešení problémů s autentizací (obr. 4), tak s utajením (důvěrnost) (obr. 6).

Podle prvního schématu (obr. 4): uživatel A předem odešle veřejný klíč svým korespondentům B a C a poté jim pošle zprávu zašifrovanou svým soukromým klíčem.

Zprávu mohl odeslat pouze A (soukromý klíč má pouze on), to znamená, že problém s autentizací je zaručen. Ale například B si není jistý, že dopis nečetl také C. Není tedy zajištěn problém důvěrnosti

Schéma zajišťující utajení (důvěrnost) je na Obr. 6.

Zprávu může číst pouze A, protože pouze on má soukromý klíč, který zprávu odhaluje, to znamená, že problém důvěrnosti je vyřešen. Ale A si nemůže být jistý, že zprávu neposlal B, který předstíral, že je C. Problém s autentizací tedy není vyřešen

Aby byla zajištěna důvěrná výměna zpráv v korespondenci mezi dvěma osobami, je nutné mít dva páry klíčů (obr. 5).

Aby byla zajištěna důvěrná výměna zpráv v korespondenci mezi dvěma osobami, je nutné mít dva páry klíčů

Při šifrování pomocí páru klíčů nemusíte posílat svůj veřejný klíč všem korespondentům. Mnohem pohodlnější je umístit tento klíč na internet na nějaký server s otevřeným přístupem. Pak si každý může stáhnout tento klíč a poslat vám tajnou zprávu, kterou nikdo kromě vás nepřečte.

13. června 2017 v 13:37

Symetrické a asymetrické šifrování. Analýza algoritmu pro přenos šifrovaných dat mezi servery

  • algoritmy,
  • informační bezpečnost,
  • Kryptografie

Shodněme se, že stroj, který přenáší šifrovaná data, je vždy stroj A a stroj, který je přijímá, je označen jako B.

Knihovna řeší dva možné případy (v případě potřeby doplním funkcionalitu):


2) Případ, kdy existuje stroj a potřebuje přenést zašifrovaná data na jiný stroj (B). V tomto případě je iniciátorem přenosu první stroj (A).

Knihovna implementuje obě možnosti, pro každou z nich existuje demo:

Pro první případ ve složce server_b_1 existuje scénář testGetDataFromA.php
Pro druhý případ ve složce server_a_1 existuje scénář testPushDataToB.php

Knihovna pro oba případy je stejná Encode.php, ale v prvním případě jsou vyžadovány některé další skripty, v druhém případě jiné, takže jsem je funkčně rozdělil do složek server_a_1 a server_b_1 (možná následující verze knihovna bude mít jinou strukturu). Pokud tedy oba stroje potřebují implementovat jak první převodovku, tak i druhou, bude mít každý takový stroj obě složky.

Nyní si promluvme o tom, jak jsou obě řešení implementována:

Podstatou obou případů je, že si stroje vymění symetrický klíč pro přenos šifrovaného textu. Pro tuto výměnu se používá asymetrické šifrování, konkrétně jeden ze strojů (X) vygeneruje pár klíčů (veřejný a soukromý) a předá veřejný klíč druhému stroji. Druhý stroj vygeneruje symetrický klíč s tímto veřejným klíčem a vrátí ho prvnímu, který jej dešifruje svým soukromým klíčem. Rozdíl spočívá v tom, kdo je iniciátorem přenosu - pokud je třeba přijmout šifrovaný text, jedna sekvence akcí, pokud je přenášena - jiná. Uvažovaná knihovna také provádí dodatečné kontroly, které se omezují na skutečnost, že spolu se symetrickým klíčem zašifrovaným pomocí veřejného klíče jsou přenášena data, která znají pouze oba stroje a která lze jednou ročně změnit (nebo dokonce přenést při každé transakci, pokud někdo si chce hrát s kódem).

Než začnu analyzovat implementaci, pouze upozorním, že symetrický klíč je šifrován pomocí šifrovacích funkcí Mcrypt PHP podle následujícího schématu:

$encrypted_data = urlencode(base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $sinc_key, $notice_text, MCRYPT_MODE_ECB))); $test_decrypted = trim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256,$sinc_key, base64_decode(urldecode($encrypted_data)),MCRYPT_MODE_ECB));
Asymetrické šifrování je řešeno pomocí php OpenSSL

Tak:

Nejprve se budu zabývat zjednodušenými diagramy obou případů přenosu naznačených na samém začátku a poté podrobněji.

1) Případ, kdy existuje stroj (B), který potřebuje data ze stroje A (např. potřebuje získat klientský token) a tato data musí být přijata bezpečně. Tito. Iniciátorem přesunu je stroj B.

Stroj B vygeneruje pár klíčů (soukromý a veřejný) a požádá stroj A a odešle veřejný klíč (soukromý si ponechá). Stroj A vygeneruje symetrický klíč a zašifruje tajné informace N potřebné pro přenos. Poté stroj A vrátí symetrický klíč zašifrovaný veřejným klíčem, stejně jako tajnou informaci N zašifrovanou symetrickým klíčem jeho soukromý klíč. V dešifrovaných datech obdrží symetrický klíč a data jím zašifrovaná. Pomocí symetrického klíče dešifruje tajná data.

Neexistuje žádná záruka, že auto A je naše auto a ne důstojník FSB Anatoly. Proto je implementace tohoto algoritmu knihovnou mírně upravena dodatečnou kontrolou:

(Ukázka skriptu – server_b_1/testGetDataFromA.php)

Na obou strojích je registrován tajný klíč SIGNATURE_KEY, který se podílí na dodatečném ověření. Stroj B vygeneruje pár klíčů (soukromý a veřejný), aktuální klíč připojení a požádá (http://.../server_a_1/getDataToB.php) na stroj A, odešle aktuální klíč připojení a veřejný klíč ( zachování soukromého). Stroj A vygeneruje symetrický klíč a zašifruje s ním tajnou informaci N potřebnou pro přenos. Vygenerují se také další data M, což je md5 z řádku obsahujícího SIGNATURE_KEY a klíč aktuálního spojení. Poté stroj A vrátí řetězec zašifrovaný veřejným klíčem ze symetrického klíče a dodatečná data M, stejně jako tajnou informaci N zašifrovanou symetrickým klíčem Stroj B dešifruje data pomocí symetrického klíče se svým soukromým klíčem, vygeneruje a řetězec daný M (protože může snadno vypočítat md5 z řetězce obsahujícího SIGNATURE_KEY a klíč aktuálního připojení). Pokud se doplňující data shodují (což je prostě dodatečná kontrola pro každou transakci, kterou stroj A zná SIGNATURE_KEY, a tedy i náš stroj), stroj B extrahuje symetrický klíč, pomocí kterého dešifruje tajné informace N.

2) Případ, kdy existuje stroj a potřebuje přenést zašifrovaná data na jiný stroj (B). V tomto případě je iniciátorem přenosu první stroj (A).

Zjednodušený algoritmus pro takový přenos je následující:

Před přenosem do stroje B potřebuje stroj A veřejný klíč stroje B k přenosu informací. K tomu (stroj A) nejprve zadá požadavek na získání veřejného klíče do stroje B. Po jeho obdržení stroj A vygeneruje symetrický klíč, zašifruje s ním požadované informace a to vše zašifruje přijatým veřejným klíčem. Data jsou odeslána do stroje B, který dešifruje paket pomocí svého soukromého klíče a dešifruje data pomocí symetrického klíče.

Neexistuje žádná záruka, že jsme obdrželi veřejný klíč ze stroje B a ne od agenta FSB Petrova. Proto je implementace tohoto algoritmu knihovnou mírně upravena dalšími kontrolami:

(Ukázka skriptu – server_a_1/testPushDataToB.php)

Na obou počítačích je registrován tajný klíč SIGNATURE_KEY, který je součástí dodatečného ověření. Stroj A, který vygeneroval md5 z klíče aktuálního připojení a SIGNATURE_KEY odešle tato data (spolu s nešifrovaným klíčem aktuálního připojení) do stroje B (http://.../server_b_1/get_public_key.php), který vygeneruje veřejný klíč pouze v případě, že získá jeden stejný md5 ze svého SIGNATURE_KEY a přijatého klíče aktuálního připojení. To neřeší problém, že veřejný klíč bude přijat konkrétně ze stroje A, a ne ze stroje agenta FSB Vasily, ale zaručuje stroji B, že vygeneruje veřejný klíč speciálně pro stroj A (i když generuje veřejný klíč je obecně svévolná záležitost, ale i zde je lepší být v bezpečí). Společně s veřejným klíčem je md5 generován z SIGNATURE_KEY a druhého klíče aktuálního připojení. Druhým klíčem aktuálního připojení je libovolný hash. Data veřejného klíče, druhého klíče libovolného připojení a specifikovaného md5 jsou vrácena do stroje A. Po obdržení druhého klíče libovolného připojení vygeneruje stroj A, zná SIGNATURE_KEY, ověřovací md5 a pokud se shoduje s tím, co přijatý stroj, považuje se veřejný klíč za klíč od stroje B, nikoli od Vasilije.

Dále stroj A (zde je schéma podobné prvnímu případu přenosu dat) vygeneruje symetrický klíč a dodatečnou kontrolu, což je md5 z SIGNATURE_KEY a klíče aktuálního spojení. Tato data jsou zašifrována veřejným klíčem ze stroje B. Dále jsou data spolu s aktuálním klíčem připojení odeslána do stroje B (http://.../server_b_1/pushDataFromA.php), který vygeneruje aktuální připojení klíč a SIGNATURE_KEY md5 na základě dat získaných z těchto dat je zkontroluje s tím, co bylo přijato, což zaručuje, že data nepocházejí od agenta FSB Nikolaje. Pokud je vše v pořádku a kontrola projde, je pomocí soukromého klíče extrahován symetrický klíč, který je již použit k dešifrování zprávy.

Budu rád, když se tyto informace budou někomu hodit.

Tato část se zabývá následujícími problémy:

  • Typy šifer
  • Substituční šifry
  • Permutační šifry
  • Metody šifrování
  • Symetrické a asymetrické algoritmy
  • Symetrická kryptografie
  • Asymetrická kryptografie
  • Blokové a streamové šifry
  • Inicializační vektory
  • Hybridní metody šifrování
Symetrické šifry se dělí na dva hlavní typy: substituční a permutační. Substituční šifry nahradit bity, symboly nebo bloky jinými bity, symboly nebo bloky. Permutační šifry nemění zdrojový text, místo toho přesouvají původní významy ve zdrojovém textu - přeskupují bity, znaky nebo bloky znaků, aby skryly původní význam.

Substituční šifry používají klíč, který určuje, jak má být nahrazení provedeno. V Caesarova šifra každý znak byl nahrazen znakem o tři pozice níže od něj v abecedě. Algoritmus byla abeceda a klíčem byla instrukce „posun o tři znaky“.

Substituce je používána moderními symetrickými algoritmy, ale je obtížné ji srovnávat s tak jednoduchou metodou, jako je Caesarova šifra. Caesarova šifra je však jednoduchým a jasným příkladem konceptu, jak funguje substituční šifra.

V permutační šifře jsou hodnoty zakódovány nebo umístěny v jiném pořadí. Klíč určuje pozici, do které má být hodnota přesunuta, jak je znázorněno na obrázku 6-6.

Obrázek 6-6. Permutační šifra


Toto je nejjednodušší příklad permutační šifry, pouze ukazuje, jak se permutace provádí. Pokud se jedná o složité matematické funkce, permutace může být docela obtížné prolomit. Moderní symetrické algoritmy současně využívají dlouhé sekvence komplexních substitucí a permutací symbolů šifrované zprávy. Algoritmus obsahuje možné metody pro substituční a permutační procesy (reprezentované v matematických vzorcích). Klíčem jsou instrukce pro algoritmus, které přesně specifikují jak by měl zpracování probíhá a v jakém pořadí. Chcete-li porozumět vztahu mezi algoritmem a klíčem, podívejte se na obrázek 6-7. Obrazně řečeno, algoritmus vytváří různé rámečky, z nichž každý má svou vlastní (od ostatních) sadu matematických vzorců indikujících substituční a permutační kroky, které je třeba provést na bitech, které do tohoto rámečku spadají. Pro zašifrování zprávy musí hodnota každého bitu projít různými boxy. Pokud však každá z našich zpráv projde stejnou sadou poštovních schránek ve stejném pořadí, útočník může snadno provést zpětnou analýzu tohoto procesu, prolomit šifru a získat prostý text naší zprávy.

Obrázek 6-7. Vztah mezi klíčem a algoritmem


K zmaření útočníka se používá klíč, což je sada hodnot, které označují, která pole by měla být použita, v jakém pořadí a s jakými hodnotami. Pokud je tedy zpráva A zašifrována klíčem 1, klíč vyžaduje, aby zpráva prošla boxy 1, 6, 4 a 5. Když potřebujeme zašifrovat zprávu B, použijeme klíč 2, který vyžaduje, aby zpráva prošla boxy 8 , 3, 2 a 9. Klíč dodává procesu šifrování náhodnost a utajení.

Jednoduché substituční a permutační šifry jsou zranitelné vůči útokům, které fungují frekvenční analýza (frekvenční analýza). V každém jazyce se některá slova a vzory používají častěji než jiná. Například v anglickém textu se písmeno „e“ obvykle používá častěji. Při provádění frekvenční analýzy zprávy útočník hledá nejčastěji se opakující vzory 8 bitů (které tvoří znak). Pokud v krátké zprávě najde například 12 osmibitových vzorů, může dojít k závěru, že se nejspíše jedná o písmeno „e“ – nejčastěji používané písmeno v jazyce. Nyní může útočník nahradit tyto bity písmenem "e". To mu dá nohu v procesu, který mu umožní provést zpětnou analýzu a obnovit původní zprávu.

Moderní symetrické algoritmy používají substituční a permutační techniky v procesu šifrování, ale používají (měly by používat) matematiku, která je příliš složitá na to, aby umožnila úspěšný útok na tak jednoduchý frekvenční analýzu.

Funkce generování klíčů. Pro generování složitých klíčů se obvykle nejprve vytvoří hlavní klíč, ze kterého se pak generují symetrické klíče. Pokud je například aplikace zodpovědná za generování klíče relace pro každou entitu, která k ní přistupuje, neměla by jednoduše rozdávat kopie stejného klíče. Různé entity vyžadují různé symetrické klíče na každém připojení, aby se minimalizovala doba jejich používání. I když útočník zachytí provoz a prolomí klíč, bude moci zobrazit pouze přenášené informace v rámci odpovídající relace. Nová relace bude používat jiný klíč. Pokud jsou z hlavního klíče vygenerovány dva nebo více klíčů, jsou volány podklíče (podklíč).

Funkce generování klíčů (KDF – key derivation function) slouží ke generování klíčů složených z náhodných hodnot. Různé hodnoty mohou být použity nezávisle nebo společně jako náhodný klíčový materiál. Jsou vytvořeny algoritmy, které používají specifické hashe, hesla a/nebo soli, které jsou mnohokrát předávány matematickými funkcemi určenými algoritmem. Čím vícekrát tento klíčový materiál projde těmito funkcemi, tím větší úroveň důvěry a bezpečnosti může kryptosystém jako celek poskytnout.


POZNÁMKA. Pamatujte, že algoritmus zůstává statický. Nahodilost kryptografických procesů zajišťuje především klíčový materiál.


Přestože proces šifrování má mnoho částí, existují dvě hlavní části: algoritmy a klíče. Jak bylo uvedeno dříve, algoritmy používané v počítačových systémech jsou složité matematické vzorce, které diktují pravidla pro převod otevřeného textu na šifrovaný text. Klíč je řetězec náhodných bitů, který používá algoritmus k přidání náhodnosti do procesu šifrování. Aby dvě entity mohly komunikovat pomocí šifrování, musí používat stejný algoritmus a v některých případech stejný klíč. V některých technologiích šifrování používají příjemce a odesílatel stejný klíč, zatímco v jiných technologiích musí k šifrování a dešifrování informací používat různé, ale související klíče. Následující části vysvětlují rozdíly mezi těmito dvěma typy metod šifrování.

Kryptografické algoritmy se dělí na symetrické algoritmy které používají symetrické klíče (také nazývané tajné klíče) a asymetrické algoritmy , které používají asymetrické klíče (také nazývané veřejné klíče a soukromé klíče).

V kryptosystému, který používá symetrickou kryptografii, používají odesílatel a příjemce dvě kopie stejného klíče k šifrování a dešifrování informací, jak je znázorněno na obrázku 6-8. Klíč má tedy dvojí funkčnost a používá se v procesu šifrování i dešifrování. Nazývají se také symetrické klíče tajné klíče, protože Tento typ šifrování vyžaduje, aby každý uživatel držel klíč v tajnosti a náležitě jej chránil. Pokud útočník získá tento klíč, může jej použít k dešifrování jakékoli zprávy na něm zašifrované, která je zachycena.

Obrázek 6-8. Při použití symetrického algoritmu používají odesílatel a příjemce stejný klíč k šifrování a dešifrování dat


Každá dvojice uživatelů vyžaduje dvě kopie stejného klíče k bezpečné výměně dat pomocí symetrické kryptografie. Pokud si například Dan a Irina potřebují vyměňovat data, oba potřebují získat kopii stejného klíče. Pokud chce Dan také komunikovat s Normem a Davem pomocí symetrické kryptografie, potřebuje mít tři samostatné klíče – jeden pro každého přítele. To není velký problém, dokud Dan nebude potřebovat komunikovat se stovkami dalších lidí během několika měsíců a udržovat historii konverzací. Koneckonců to bude vyžadovat použití příslušného klíče pro korespondenci s každým konkrétním příjemcem. V tomto případě se to může stát skličujícím úkolem. Pokud by deset lidí potřebovalo mezi sebou bezpečně komunikovat pomocí symetrické kryptografie, potřebovali by 45 klíčů. Pokud bude potřebovat interakci sto lidí, budou potřebovat 4950 klíčů. Vzorec pro výpočet požadovaného počtu symetrických klíčů je následující:

Počet klíčů = N(N – 1)/2, kde N je počet účastníků


Při použití symetrických algoritmů používají odesílatel a příjemce stejný klíč pro procesy šifrování a dešifrování informací. Bezpečnost takových algoritmů zcela závisí na tom, jak dobře uživatelé klíče chrání. V tomto případě bezpečnost závisí zcela na personálu, který musí své klíče uchovávat v tajnosti. Pokud je klíč kompromitován, všechny zprávy zašifrované tímto klíčem mohou být dešifrovány a přečteny útočníkem. Ve skutečnosti je to ještě složitější, protože klíče musí být bezpečně distribuovány a v případě potřeby aktualizovány. Pokud Den potřebuje poprvé komunikovat s Normem, musí se Den rozhodnout, jak bezpečně předat Normovi klíč. Pokud to udělá nezabezpečeným způsobem, například pouhým odesláním klíče e-mailem, může být klíč snadno zachycen a použit útočníkem. Dan proto musí dát klíč Normovi netradičním způsobem. Dan by například mohl zapsat klíč na flash disk a položit jej na Normův stůl nebo jej poslat Normovi prostřednictvím důvěryhodného kurýra. Proces distribuce symetrických klíčů může být velmi složitý a těžkopádný úkol.

Protože oba uživatelé používají stejný klíč k šifrování a dešifrování zpráv, symetrické kryptosystémy mohou poskytovat důvěrnost, ale ne autentizaci nebo neodmítnutí. Takový kryptografický algoritmus vám neumožní prokázat, kdo zprávu skutečně poslal, protože oba uživatelé používají stejný klíč.

Ale pokud mají symetrické kryptosystémy tolik nedostatků a problémů, proč se používají téměř všude? Protože poskytují velmi vysokou rychlost zpracování a je velmi obtížné je hacknout. Symetrické algoritmy jsou mnohem rychlejší než asymetrické. Dokážou poměrně rychle zašifrovat a dešifrovat velké množství dat. Kromě toho je velmi obtížné prolomit data šifrovaná symetrickým algoritmem pomocí dlouhého klíče.

Následující seznam popisuje silné a slabé stránky kryptosystémů se symetrickým klíčem:

Přednosti:

  • Mnohem rychlejší než asymetrické systémy
  • Při použití dlouhého klíče je obtížné hacknout
slabé stránky:
  • Vyžaduje bezpečný mechanismus přenosu klíče
  • Každý pár uživatelů potřebuje jedinečný klíč; S rostoucím počtem uživatelů může rostoucí počet klíčů učinit jejich správu jednoduše nerealistickou.
  • Poskytuje důvěrnost, ale neposkytuje ověření ani neodmítnutí
Níže jsou uvedeny některé příklady symetrických algoritmů, které budou podrobně popsány později v části Blokové a proudové šifry.
  • RC4, RC5 a RC6
Související odkazy:
  • Security in Open Systems, Node 208, „Symmetric Key Cryptography“, Paul Markovitz, NIST Special Publication 800-7 (červenec 1994)
V kryptografii symetrických klíčů se pro šifrování a dešifrování používá stejný tajný klíč, zatímco v systémech veřejného klíče se pro tyto účely používají různé klíče. asymetrické ) klíče. V tomto případě spolu matematicky souvisí dva různé asymetrické klíče. Pokud je zpráva zašifrována jedním klíčem, je k jejímu dešifrování vyžadován další klíč.

V systémech s veřejným klíčem je vytvořen pár klíčů, z nichž jeden je soukromý a druhý veřejný. Veřejný klíč(veřejný klíč) může znát každý, a soukromý klíč(soukromý klíč) by měl znát pouze jeho vlastník. Veřejné klíče jsou často uloženy v adresářích a databázích e-mailových adres, které jsou veřejně dostupné komukoli, kdo chce tyto klíče používat k šifrování a dešifrování dat při interakci s jednotlivci. Obrázek 6-9 znázorňuje použití různých asymetrických klíčů.
Veřejný a soukromý klíč asymetrického kryptosystému spolu matematicky souvisí, ale pokud má někdo veřejný klíč jiné osoby, je nemožné znát jeho odpovídající soukromý klíč. Pokud tedy útočník získá kopii Bobova veřejného klíče, neznamená to, že nějakým matematickým kouzlem bude schopen získat Bobův odpovídající soukromý klíč. Pokud se však někdo zmocní Bobova soukromého klíče, nastane velký problém. K privátnímu klíči by tedy neměl mít přístup nikdo jiný než vlastník.

Obrázek 6-9. Asymetrický kryptosystém


Pokud by Bob zašifroval data svým soukromým klíčem, příjemce by k jejich dešifrování potřeboval Bobův veřejný klíč. Příjemce může nejen dešifrovat Bobovu zprávu, ale také odpovědět Bobovi zašifrovanou zprávou. K tomu potřebuje zašifrovat svou odpověď Bobovým veřejným klíčem a Bob pak může tuto odpověď dešifrovat svým soukromým klíčem. Při použití asymetrického algoritmu je nemožné zašifrovat a dešifrovat zprávu stejným klíčem, tyto klíče, i když jsou matematicky příbuzné, nejsou stejné (na rozdíl od symetrických algoritmů). Bob může data zašifrovat svým soukromým klíčem a příjemce je pak může dešifrovat Bobovým veřejným klíčem. Dešifrováním zprávy pomocí Bobova veřejného klíče si může být příjemce jistý, že zpráva skutečně přišla od Boba, protože zprávu lze dešifrovat pomocí Bobova veřejného klíče pouze v případě, že byla zašifrována pomocí Bobova odpovídajícího soukromého klíče. To poskytuje možnosti ověřování, protože Bob je (pravděpodobně) jediný, kdo má tento soukromý klíč. Pokud si příjemce chce být jistý, že jediný, kdo si může jeho odpověď přečíst, bude Bob, musí svou zprávu Bobovi zašifrovat Bobovým veřejným klíčem. Pak bude moci tuto zprávu dešifrovat pouze Bob, protože pouze on má k tomu nezbytný soukromý klíč.

Příjemce se navíc může rozhodnout zašifrovat data svým soukromým klíčem, nikoli Bobovým veřejným klíčem. Co mu to dá? Autentizace. Bob bude vědět, že zpráva přišla od něj a nemohla pocházet od nikoho jiného. Pokud zašifruje data Bobovým veřejným klíčem, nebude to poskytovat autentizaci, protože kdokoli může získat Bobův veřejný klíč. Pokud použije svůj soukromý klíč k zašifrování dat, pak si Bob může být jistý, že zpráva přišla od něj. Symetrické klíče neposkytují ověřování, protože obě strany používají stejný klíč, který nemůže zaručit, že zpráva pochází od konkrétní osoby.

Pokud má odesílatel větší obavy o důvěrnost přenášených informací, měl by svou zprávu zašifrovat veřejným klíčem příjemce. Říká se tomu bezpečný formát zprávy (zabezpečený formát zprávy), protože tuto zprávu bude moci dešifrovat pouze osoba, která má odpovídající soukromý klíč.

Pokud je pro odesílatele důležitější autentizace, měl by přenášená data zašifrovat svým soukromým klíčem. To umožní příjemci mít jistotu, že osoba, která data zašifrovala, je ta, kdo má odpovídající soukromý klíč. Pokud odesílatel zašifruje data veřejným klíčem příjemce, nezajistí to ověření, protože veřejný klíč je dostupný všem.

Zavolá se šifrování dat pomocí soukromého klíče odesílatele otevřený formát zprávy (otevřený formát zprávy), protože kdokoli může tato data dešifrovat pomocí veřejného klíče odesílatele. Důvěrnost není zajištěna.

K šifrování a dešifrování dat lze použít soukromý i veřejný klíč. Nemyslete si, že veřejný klíč je potřeba pouze pro šifrování a soukromý klíč je potřeba pouze pro dešifrování. Je třeba si uvědomit, že pokud jsou data zašifrována soukromým klíčem, nelze je s ním dešifrovat. Data zašifrovaná soukromým klíčem lze dešifrovat příslušným veřejným klíčem. A naopak.

Asymetrický algoritmus je pomalejší než symetrický algoritmus, protože symetrické algoritmy provádějí relativně jednoduché matematické funkce na bitech v procesech šifrování a dešifrování. Nahrazují a přehazují (přesouvají) bity, což není příliš složité a nezabírá moc CPU. Důvodem, proč jsou odolné vůči hackování, je to, že tyto funkce vykonávají mnohokrát. V symetrických algoritmech tedy sada bitů prochází delší řadou substitucí a permutací.

Asymetrické algoritmy jsou pomalejší než symetrické algoritmy, protože k provádění svých funkcí používají mnohem složitější matematiku, což vyžaduje více času CPU. Asymetrické algoritmy však mohou zajistit autentizaci a nepopiratelnost v závislosti na použitém algoritmu. Asymetrické systémy navíc umožňují jednodušší a lépe spravovatelný proces distribuce klíčů než symetrické systémy a nemají problémy se škálovatelností, jako mají symetrické systémy. Důvodem těchto rozdílů je, že u asymetrických systémů můžete poslat svůj veřejný klíč všem lidem, se kterými chcete komunikovat, místo abyste pro každého z nich používali samostatný soukromý klíč. Dále se v části Metody hybridního šifrování této domény podíváme na to, jak lze tyto dva systémy používat společně k dosažení nejlepších výsledků.

POZNÁMKA. Kryptografie veřejného klíče je asymetrická kryptografie. Tyto termíny se používají zaměnitelně.

Níže jsou uvedeny silné a slabé stránky algoritmů asymetrického klíče:

Silné stránky

  • Lepší proces distribuce klíčů než symetrické systémy
  • Lepší škálovatelnost než symetrické systémy
  • Může poskytnout ověření a neodmítnutí
Slabé stránky
  • Pracuje mnohem pomaleji než symetrické systémy
  • Provádějte složité matematické transformace
Níže jsou uvedeny příklady algoritmů s asymetrickými klíči.
  • Kryptosystém eliptické křivky (ECC)
  • Algoritmus Diffie-Hellman
  • El Gamal
  • Algoritmus digitálního podpisu (DSA – Digital Signature Algorithm)
  • Batoh
Těmito algoritmy se budeme dále zabývat v této doméně v části „Typy asymetrických systémů“.

Tabulka 6-1 poskytuje stručný přehled hlavních rozdílů mezi symetrickými a asymetrickými systémy.

Tabulka 6-1. Rozdíly mezi symetrickými a asymetrickými systémy


POZNÁMKA. Digitální podpisy budou diskutovány později v části Digitální podpisy.
Související odkazy:
  • Security in Open Systems, Node 210, "Asymmetric Key Cryptography", Paul Markovitz, NIST Special Publication 800-7 (červenec 1994)
  • Často kladené otázky o dnešní kryptografii, verze 4.1, oddíl 2.1.4.5, „Co je režim výstupní zpětné vazby?“ od RSA Laboratories
Existují dva hlavní typy symetrických algoritmů: blokové šifry, které pracují s bloky bitů, a proudové šifry, které pracují vždy s jedním bitem.

Pokud používáte k šifrování a dešifrování dat bloková šifra , je zpráva rozdělena do bloků bitů. Tyto bloky jsou pak předány matematickým funkcím ke zpracování, jeden blok po druhém. Představte si, že potřebujete zašifrovat zprávu své mámě pomocí blokové šifry, která funguje v 64bitových blocích. Vaše zpráva je dlouhá 640 bitů, takže je rozdělena do 10 samostatných 64bitových bloků. Každý blok je postupně přenášen na vstup matematické funkce. Tento proces pokračuje, dokud není každý blok převeden na šifrovaný text. Poté odešlete zašifrovanou zprávu své matce. Používá stejnou blokovou šifru a stejný klíč. Těchto 10 bloků šifrovaného textu je vkládáno do algoritmu v obráceném pořadí, dokud není získán původní otevřený text.


Aby byla zajištěna síla šifry, musí dostatečně využívat dvě základní metody: záměnu a difúzi. Míchání se obvykle provádí pomocí substituce, zatímco difúze - pomocí přeskupení. Aby byla šifra skutečně silná, musí používat obě tyto metody, aby bylo reverzní inženýrství prakticky nemožné. Úroveň míchání a disperze je indikována náhodností klíčové hodnoty a složitostí použitých matematických funkcí.

V algoritmech může k rozptylu docházet jak na úrovni jednotlivých bitů v blocích, tak na úrovni bloků samotných. Náhodné míchání se provádí pomocí složitých substitučních funkcí, aby se zabránilo útočníkovi pochopit, jak byly původní hodnoty nahrazeny, a získat původní prostý text. Představte si, že mám 500 dřevěných kostek, na každém je písmeno. Zarovnávám je, abych z nich vytvořil zprávu (prostý text). Poté nahradím 300 těchto bloků bloky z jiné sady (zamícháním substitucí). Pak všechny tyto bloky přeskupím (rozložím promícháním) a nechám tuto hromadu. Abyste mohli rekonstruovat moji původní větu, musíte bloky nahradit správnými a umístit je ve správném pořadí. Hodně štěstí!

Míchání se provádí za účelem vytvoření vztahu mezi klíčem a výsledným šifrovým textem. Tento vztah musí být co nejsložitější, aby nebylo možné otevřít klíč na základě analýzy šifrovaného textu. Každá hodnota v šifrovém textu musí záviset na několika částech klíče, ale pro pozorovatele se tento vztah mezi hodnotami klíče a hodnotami šifrového textu musí jevit zcela náhodně.

Rozptyl na druhé straně znamená, že jeden bit holého textu ovlivňuje více bitů šifrovaného textu. Nahrazení hodnoty v prostém textu by mělo vést k nahrazení více hodnot v šifrovém textu, nikoli pouze jedné. Ve skutečnosti, ve skutečně silné blokové šifře, když se změní jeden bit v otevřeném textu, mělo by se změnit asi 50 % bitů v šifrovaném textu. Tito. Pokud změníte pouze jeden bit v otevřeném textu, změní se asi polovina šifrovaného textu.

Blokové šifry používají ve svých provozních metodách míchání i rozptyl. Obrázek 6-10 ukazuje koncepční příklad jednoduché blokové šifry. Ke zpracování jsou mu přiděleny čtyři bloky po čtyřech bitech. Uvažovaný blokový algoritmus má dvě úrovně čtyřbitových náhradních boxů, nazývaných S-boxy. Každý S-box obsahuje vyhledávací tabulky používané algoritmem jako instrukce pro šifrování bitů.

Obrázek 6-10. Zpráva je rozdělena do bloků bitů, na kterých se provádějí substituční a rozptylové funkce


Klíč určuje (viz Obrázek 6-10), které S-boxy by měly být použity v procesu míchání původní zprávy z čitelného prostého textu do nečitelného šifrovaného textu. Každý S-box obsahuje různé substituční a permutační metody, které lze provádět na každém bloku. Toto je velmi jednoduchý příklad. Ve skutečnosti většina blokových šifer pracuje s bloky 32, 64 nebo 128 bitů a může používat mnohem více S-boxů.

Jak bylo uvedeno dříve, blokové šifry provádějí matematické funkce na blocích bitů. Na rozdíl od nich, proudové šifry (streamová šifra) nerozdělujte zprávu do bloků. Zpracovávají zprávu jako proud bitů a provádějí matematické funkce na každém bitu zvlášť.

Při použití proudové šifry převádí proces šifrování každý bit prostého textu na bit šifrovaného textu. Proudové šifry používají generátor toku klíčů, který vytváří proud bitů, které jsou XORed s bity prostého textu, aby se vytvořil šifrovaný text. To je znázorněno na obrázku 6-11.

Obrázek 6-11. V proudové šifře jsou bity generované generátorem toku klíčů XORed s bity prostého textu zprávy.

POZNÁMKA. Tento proces je velmi podobný použití šifrovacích jednorázových podložek popsaných výše. Jednotlivé bity v jednorázové podložce se používají k šifrování jednotlivých bitů zprávy pomocí operace XOR a v algoritmu streamu jsou jednotlivé bity vytvářeny generátorem toku klíčů, který se také používá k šifrování bitů zprávy pomocí Operace XOR.

Pokud kryptosystém závisí pouze na algoritmu symetrického streamu, útočník může získat kopii holého textu a výsledného šifrovaného textu, XOR je dohromady a skončit s použitým tokem klíčů, který může později použít k dešifrování dalších zpráv. Chytří lidé se proto rozhodli vložit klíč do tohoto proudu.

U blokových šifer klíč určuje, které funkce se aplikují na otevřený text a v jakém pořadí. Klíč zajišťuje náhodnost procesu šifrování. Jak již bylo řečeno, většina šifrovacích algoritmů je open source, takže lidé vědí, jak fungují. Jediným tajemstvím je klíč. V proudových šifrách je náhodnosti dosaženo také pomocí klíče, díky čemuž je proud bitů, s nimiž je prostý text kombinován, co možná nejnáhodnější. Tento koncept je znázorněn na obrázku 6-12. Jak můžete vidět na tomto obrázku, odesílatel i příjemce musí mít stejný klíč pro generování stejného toku klíčů, aby mohli správně zašifrovat a dešifrovat informace.

Obrázek 6-12. Odesílatel a příjemce musí mít stejný klíč, aby mohli vygenerovat stejný tok klíčů



Inicializační vektory (IV) jsou náhodné hodnoty, které používá algoritmus, aby zajistil, že v procesu šifrování nebudou žádné vzory. Jsou sdíleny s klíči a při odesílání příjemci není nutné je šifrovat. Pokud není použit žádný inicializační vektor, výsledkem dvou identických otevřených textů zašifrovaných stejným klíčem bude stejný šifrovaný text. Taková šablona výrazně zjednoduší útočníkovi úkol prolomit šifrovací metodu a odhalit klíč. Pokud má vaše zpráva opakovanou část (fráze nebo slovo), musíte se ujistit, že při zašifrování každé opakované části otevřeného textu zprávy se vytvoří jiný šifrovaný text, tzn. nebude vytvořena žádná šablona. Inicializační vektor se používá společně s klíčem k zajištění větší náhodnosti v procesu šifrování.

Silné a účinné proudové šifry mají následující vlastnosti:

  • Dlouhá období neopakujících se vzorů v hodnotách klíčového proudu. Bity generované tokem klíčů musí být náhodné.
  • Statisticky nepředvídatelný tok klíčů. Bity produkované na výstupu generátoru toku klíčů by neměly být předvídatelné.
  • Klíčový proud nemá lineární vztah ke klíči. Pokud někdo získal hodnoty toku klíčů, nemělo by to vést k tomu, že obdrží hodnotu klíče.
  • Statisticky jednotný tok klíčů (přibližně stejný počet nul a jedniček). V klíčovém proudu by neměly dominovat nuly nebo jedničky.
Streamové šifry vyžadují náhodnost a šifrují jeden bit po druhém. To vyžaduje více prostředků CPU než bloková šifra, takže proudové šifry jsou vhodnější pro implementaci v hardwaru. A blokové šifry, protože nevyžadují tolik procesorových zdrojů, se snadněji implementují na softwarové úrovni.
POZNÁMKA. Samozřejmostí jsou jak blokové šifry, implementované na hardwarové úrovni, tak proudové šifry, fungující na softwarové úrovni. Výše uvedené prohlášení je jednoduše „nejlepším postupem“ pro návrh a implementaci.


Streamové šifry a jednorázové bloky. Streamové šifry poskytují stejný typ zabezpečení jako jednorázové bloky, takže fungují podobným způsobem. Streamové šifry ve skutečnosti nemohou poskytnout stejnou úroveň zabezpečení jako jednorázové bloky, protože jsou implementovány ve formě softwaru a automatizovaných nástrojů. Díky tomu jsou však proudové šifry praktičtější.


Dříve jsme se zabývali symetrickými a asymetrickými algoritmy a poznamenali jsme, že symetrické algoritmy jsou rychlé, ale mají některé nevýhody (špatná škálovatelnost, složitá správa klíčů, poskytující pouze důvěrnost), zatímco asymetrické algoritmy tyto nevýhody nemají, ale jsou velmi pomalé. Nyní se podíváme na hybridní systémy, které používají jak symetrické, tak asymetrické šifrovací metody.

Kombinované použití asymetrických a symetrických algoritmů


Kryptografie veřejného klíče používá dva klíče (veřejný a soukromý) generované asymetrickým algoritmem, slouží k ochraně šifrovacích klíčů a jejich distribuci. Tajný klíč je generován symetrickým algoritmem a používá se pro hlavní šifrovací proces. Jedná se o hybridní použití dvou různých algoritmů: symetrického a asymetrického. Každý algoritmus má své výhody a nevýhody a jejich společné použití vám umožní získat z každého z nich to nejlepší.

V hybridním přístupu se tyto dvě technologie vzájemně doplňují a každá plní své vlastní funkce. Symetrický algoritmus vytváří klíče používané k šifrování většiny dat a asymetrický algoritmus vytváří klíče používané k automatické distribuci symetrických klíčů.

Symetrický klíč se používá k šifrování zpráv, které odesíláte. Když váš přítel obdrží zprávu, kterou jste zašifrovali, musí ji dešifrovat, což vyžaduje symetrický klíč, na kterém je vaše zpráva zašifrována. Ale nechcete tento klíč poslat nezabezpečeným způsobem, protože... zpráva může být zachycena a nechráněný klíč z ní může být útočníkem extrahován pro pozdější použití k dešifrování a čtení vašich zpráv. Symetrický klíč byste neměli používat k šifrování zpráv, pokud není řádně chráněn. K zabezpečení symetrického klíče lze k jeho zašifrování použít asymetrický algoritmus (viz obrázek 6-13). Proč bychom ale používali symetrický klíč k šifrování zpráv a asymetrický klíč k šifrování symetrického klíče? Jak již bylo zmíněno dříve, asymetrický algoritmus je pomalý, protože používá složitější matematiku. A protože vaše zpráva bude s největší pravděpodobností delší než klíč, je smysluplnější použít k jejímu zašifrování rychlejší (symetrický) algoritmus a pro zašifrování klíče je vhodný pomalejší (asymetrický), který poskytuje další bezpečnostní služby.

Obrázek 6-13. V hybridním systému se asymetrický klíč používá k šifrování symetrického klíče a symetrický klíč se používá k šifrování zpráv.


Jak to funguje ve skutečnosti? Řekněme, že Bill pošle Paulovi zprávu a chce, aby si ji mohl přečíst pouze Paul. Bill zašifruje zprávu tajným klíčem, nyní má šifrovaný text a symetrický klíč. Klíč musí být bezpečný, takže Bill zašifruje symetrický klíč pomocí asymetrického klíče. Asymetrické algoritmy používají soukromý a veřejný klíč, takže Bill zašifruje symetrický klíč Pavlovým veřejným klíčem. Bill má nyní šifrový text zprávy a šifrový text symetrického klíče. Proč Bill zašifroval symetrický klíč Pavlovým veřejným klíčem a ne jeho soukromým klíčem? Pokud to Bill zašifroval svým vlastním soukromým klíčem, kdokoli by to mohl dešifrovat Billovým veřejným klíčem a získat symetrický klíč. Bill však nechce, aby někdo s jeho veřejným klíčem mohl číst jeho zprávy Paulovi. Bill chce, aby tuto příležitost měl pouze Paul. Bill tedy zašifroval symetrický klíč Paulovým veřejným klíčem. Kdyby si Paul dobře chránil svůj soukromý klíč, mohl by Billovu zprávu přečíst jen on.

Paul obdrží Billovu zprávu a použije svůj soukromý klíč k dešifrování symetrického klíče. Paul pak použije symetrický klíč k dešifrování zprávy. Nyní si Paul může přečíst důležitou a důvěrnou zprávu od Billa.

Když říkáme, že Bill používá klíč k šifrování zprávy a Paul používá stejný klíč k jejímu dešifrování, neznamená to, že všechny tyto operace provádějí ručně. Moderní software to vše dělá za nás, aniž bychom k jeho používání museli mít speciální znalosti.

Všechno je zde docela jednoduché, musíte si pamatovat následující aspekty:

  • Asymetrický algoritmus provádí šifrování a dešifrování pomocí soukromých a veřejných klíčů, které jsou matematicky příbuzné.
  • Symetrický algoritmus provádí šifrování a dešifrování pomocí sdíleného tajného klíče.
  • K šifrování skutečných zpráv se používá symetrický (tajný) klíč.
  • Veřejný klíč se používá k zašifrování symetrického klíče pro bezpečný přenos.
  • Tajný klíč je stejný jako symetrický klíč.
  • Asymetrický klíč může být soukromý nebo veřejný.
Při použití hybridního systému tedy symetrický algoritmus vytvoří tajný klíč používaný k šifrování dat nebo zpráv a asymetrický klíč zašifruje tajný klíč.

Klíč relace (klíč relace) je symetrický klíč používaný k šifrování zpráv vyměňovaných mezi dvěma uživateli. Klíč relace se neliší od symetrického klíče popsaného výše, ale je platný pouze pro jednu komunikační relaci mezi uživateli.

Pokud má Tanya symetrický klíč, který neustále používá k šifrování zpráv mezi ní a Lancem, tento symetrický klíč není třeba znovu vytvářet ani měnit. Jednoduše používají stejný klíč pokaždé, když interagují pomocí šifrování. Dlouhodobé opakované použití stejného klíče však zvyšuje pravděpodobnost jeho zachycení a ohrožení zabezpečené komunikace. Abyste tomu zabránili, měli byste vygenerovat nový symetrický klíč pokaždé, když Tanya a Lance potřebují komunikovat, a použít jej pouze pro jednu komunikační relaci a poté jej zničit (viz Obrázek 6-14). I když potřebují znovu komunikovat za pouhou hodinu, vygeneruje se nový klíč relace.

Obrázek 6-14. Klíč relace se generuje pro každou relaci interakce s uživatelem a je platný pouze v rámci této relace


Digitální obálky. Když se lidé poprvé seznámí s kryptografií, může společné používání symetrických a asymetrických algoritmů způsobit zmatek. Těmto konceptům je však velmi důležité porozumět, protože jsou skutečně základními základními koncepty kryptografie. Tento proces se používá nejen v e-mailovém klientovi nebo v několika produktech, určuje pořadí, ve kterém jsou data a symetrické klíče zpracovávány při přenosu.
Kombinované použití těchto dvou technologií se nazývá hybridní přístup, ale má také obecnější název - digitální obálka (digitální obálka).




Klíč relace poskytuje vyšší úroveň ochrany ve srovnání se statickým symetrickým klíčem, protože platí pouze pro jednu komunikační relaci mezi dvěma počítači. Pokud je útočník schopen zachytit klíč relace, bude jej moci použít k získání neoprávněného přístupu k přenášeným informacím pouze na krátkou dobu.

Pokud dva počítače potřebují komunikovat pomocí šifrování, musí nejprve projít procesem „handshake“, ve kterém se dohodnou na šifrovacím algoritmu, který bude použit k přenosu klíče relace k dalšímu šifrování dat při komunikaci počítačů. V podstatě dva počítače navazují virtuální spojení mezi sebou, nazývané relace. Po ukončení relace každý počítač zničí všechny datové struktury vytvořené pro danou relaci, uvolní prostředky a mimo jiné zničí použitý klíč relace. Operační systém a aplikace tyto věci provádějí na pozadí a uživatel se o to nemusí starat. Bezpečnostní profesionál však musí rozumět rozdílům mezi typy klíčů a problémům s nimi spojenými.


POZNÁMKA. Soukromé a symetrické klíče nesmí být uloženy a/nebo přenášeny v prostém textu. Ačkoli se to zdá samozřejmé, mnoho softwarových produktů již bylo kompromitováno právě z tohoto důvodu.

Problémy se zabezpečením bezdrátového připojení. Podívali jsme se na různé standardy 802.11 a protokol WEP v doméně 05. Mezi rozsáhlým seznamem problémů s WEP patří problém související se šifrováním dat. Pokud se k šifrování bezdrátového provozu používá pouze WEP, pak většina implementací používá k šifrování paketů pouze jeden statistický symetrický klíč. Jednou ze změn a výhod standardu 802.11i je, že šifruje každý paket jedinečným klíčem relace.

Málokdo přesně ví, jak asymetrické šifrování funguje. Jsou například lidé, kteří protokol https nepovažují za žádnou adekvátní ochranu přenášených dat. A zpravidla, když se je snaží přesvědčit o opaku, reagují něčím ve smyslu „pokud přenášíme zašifrovaná data, musíme říci, jak je dešifrovat, a tyto informace lze zachytit, a proto lze data dešifrovat." A na argumenty, že tomu tak není a že základem je asymetrické šifrování, je odpověď „No a co?“

Dobře, chápu, že ne každý potřebuje znát všechny složitosti implementace asymetrického šifrování. Ale myslím, že každý, kdo má něco společného s počítači, by měl znát obecný princip fungování.

Rád bych shrnul podstatu tohoto příspěvku v této anotaci: Pamatujte, asymetrické šifrování je bezpečné samozřejmě při splnění všech podmínek. A abych to dokázal, pokusím se popsat algoritmus srozumitelným jazykem, aby každý pochopil, že je bezpečný. Seznamte se s Alicí, Bobem a Evou a předáváním jejich tajné zprávy pod řezem.

Mimochodem, proč Alice a Bob? Na Wikipedii je o tom krátký článek: Alice, Bob a Eva. Aby to bylo jasnější, Alice a Bob si chtějí vyměňovat zprávy a Eva se snaží tyto zprávy zachytit a přečíst.

Trocha historie

Kryptografie minulých století měla jeden obrovský problém – problém přenosu klíčů. V té době existovaly pouze tzv. „symetrické“ šifry – šifry, ve kterých jsou data šifrována a dešifrována stejným klíčem.

Alice například zašifrovala nějakou zprávu a chce ji poslat Bobovi. Aby si ji Bob mohl přečíst, přirozeně potřebuje klíč, kterým byla zpráva zašifrována. A pak nastává problém, jak přenést klíč, aby ho nikdo nezachytil. Zvídavé mysli udělají nabídku – nechejte je předat osobně, a pak komunikujte, jak chtějí. Ano, nehádám se, je to cesta ven. Nyní si na chvíli představte, že vaše internetová pošta, než se k ní přihlásíte, bude vyžadovat, abyste cestovali do fyzického umístění poštovního serveru. Komfortní? Možná moc ne.

Klíč lze samozřejmě přenést i přes jiný komunikační kanál. Ale kryptografie považuje všechny nezabezpečené komunikační kanály za nezabezpečené. To znamená, že předání klíče Bobovi například po telefonu je považováno za nebezpečné, stejně jako nic nebrání Evě v poslechu telefonu.

Až do 70. let se tento problém stal tak běžným, že byl považován za axiom, že pro přenos zprávy je třeba předat klíč, kterým je zpráva zašifrována (a někteří lidé stále uvažují tímto způsobem). Ale v roce 1976 Diffie a Hellman navrhli svou „metodu exponenciální výměny klíčů“. Od těchto let začal vývoj asymetrických kryptosystémů.

Trochu skutečného života

Než začnete studovat jakýkoli algoritmus, musíte si představit, jak to funguje. A nejjednodušší je porovnat to s tím, jak něco funguje ve skutečnosti.

Představme si, že Alice a Bob žijí v zemi, kde je celý poštovní systém zcela nemorální a zaměstnanci pošty čtou veškerou nezabezpečenou poštu. Alice, ne hloupá dívka, předtím, než poslala zprávu Bobovi, vzala železnou krabici, vložila dopis dovnitř a zavřela jej zámkem a poslala tuto krabici Bobovi.

Pošta samozřejmě nemůže tento dopis přečíst, ale sám Bob ho nemůže přečíst, protože nemá klíč, kterým se zámek zavírá. Alice samozřejmě může vzít další železnou krabici, vložit do ní klíč od té předchozí a poslat ji Bobovi, ale Bob ji také neotevře...

Jediný způsob je vyrobit duplikát klíče a předat ho Bobovi osobně...

A tak se začíná zdát, že výměna klíčů je nevyhnutelnou součástí šifrování – nebo ne?

Představme si jiný obrázek. Napíšu to krok za krokem:

  1. Alice vloží svůj dopis do železné krabice, zamkne ji a pošle Bobovi.
  2. Bob po obdržení krabice (pozor!) vezme svůj zámek a poté, co jím krabici dodatečně zamkne, pošle ji zpět.
  3. Alice už dostává krabici se dvěma zámky (připomenu vám, první zámek Alice, ke kterému má klíč, a druhý Bobův, od kterého má klíč pouze Bob).
  4. Alice odstraní zámek a pošle krabici zpět Bobovi
  5. Bob obdrží krabici s jedním ze svých zámků, ke kterému má klíč
  6. Bob odemkne svůj zbývající zámek klíčem a přečte si zprávu

Význam této povídky je obrovský. Ukazuje, že dva lidé mohou předat tajnou zprávu bez výměny klíčů. Přemýšlejte o tom! Tento příběh vlastně boří všechny axiomy, na kterých byla tehdejší kryptografie postavena. Ano, dostáváme nějakou komplikaci procesu (krabička se musela poslat třikrát), ale výsledek...

Vraťme se ke kryptografii

Zdálo by se, že řešení bylo nalezeno. Odesílatel a příjemce zašifrují svou zprávu a účastníci rozhovoru se střídají v dešifrování jejich zprávy.


Jde ale o to, že neexistují žádné šifry, které by umožňovaly odstranit šifru z jiné šifry. To znamená, že fáze, kdy Alice odstraní svou šifru, je nemožná:


Bohužel všechny dostupné algoritmy stále vyžadují odstranění šifer ve frontě, ve které byly použity. Bojím se to nazvat axiomem (protože historie už zná případy, kdy byly takové axiomy roztříštěny na kusy), ale stále je to tak.

Vraťme se k matematice

Nápad s krabicí, který jsem popsal výše, inspiroval Diffieho a Hellmana k hledání způsobu, jak předat zprávu. Nakonec skončili pomocí jednosměrných funkcí.

Co je to jednosměrná funkce? Existuje například funkce zdvojení, tzn. double(4)=8, je oboustranný, protože z výsledku 8 lze snadno získat počáteční hodnotu 4. Jednosměrná funkce je funkce, po které je téměř nemožné získat počáteční hodnotu. Například míchání žluté a modré barvy je příkladem jednosměrné funkce. Smíchejte je snadno, ale získat zpět původní komponenty - nemožné. Jednou z takových funkcí v matematice je modulový výpočet.

Jako základ pro algoritmus navrhl Hellman funkci Y x (mod P). Inverzní transformace pro takovou funkci je velmi obtížná a dá se říci, že v podstatě spočívá v úplném výčtu původních hodnot.

Například vám to bylo řečeno 5 x (mod 7) = 2, zkuste najít x, A? Našli jste to? Nyní si představte, že čísla v řádu 10 300 jsou brána jako Y a P.

Mimochodem, pro zvýšení odolnosti, počet P musí být prvočíslo a Y- být primitivní kořenový modulo P. Ale protože se stále snažíme pochopit teorii, nevidím smysl se tím zabývat.

Algoritmus Diffie-Hellman

A pak jednoho dne Hellmanovi svitlo a byl schopen vyvinout funkční algoritmus výměny klíčů. Chcete-li pracovat s tímto algoritmem, musíte provést kroky na obou stranách, takže to dám do tabulky:

Alice Fazole
Fáze 1 Oba účastníci se shodují na významu Y A P pro obecnou jednosměrnou funkci. Tato informace není tajná. Řekněme, že byly vybrány hodnoty 7 A 11 . Obecná funkce by vypadala takto: 7 x (mod 11)
Fáze 2 Alice vybere například náhodné číslo 3 A Bob například vybere náhodné číslo 6 , tají, označme to jako číslo B
Fáze 3 Alice dosadí číslo A 7 3 (mod 11)= 343 (mod 11) = 2 A Bob zadá číslo B do obecné funkce a vypočítá výsledek 7 6 (mod 11)= 117649 (mod 11) = 4 , označuje výsledek tohoto výpočtu jako číslo b
Fáze 4 Alice předá číslo A Bobe Bob předá číslo b Alice
Fáze 5 Alice dostane b od Boba a vypočítá hodnotu b A (mod 11)= 4 3 (mod 11) = 64 (mod 11) = 9 Bob dostane A od Alice a vypočítá hodnotu a B (mod 11)= 2 6 (mod 11) = 64 (mod 11) = 9
Fáze 6 Oba účastníci skončili s číslem 9 . To bude klíč.

Kouzlo? Nehádám se, není to na první pohled jasné. Ale po přečtení a přemýšlení o této tabulce je jasné, jak to funguje. Pokud to však není jasné, přejděte na konec kapitoly, kde jsem zveřejnil vysvětlující video.

Kromě toho mějte na paměti, že pro získání klíče v konečném vzorci musí mít každá osoba tři hodnoty:

  • Hodnoty A A P a Bobovo tajné číslo B
  • nebo významy b A P a Alicino tajné číslo A

Ale tajná čísla nejsou přenášena přes kanál! Eva nebude schopna získat klíč bez něčího tajného čísla. Proč - psal jsem výše, tato funkce je jednosměrná. Zkuste vyřešit rovnici 4 x (mod 11) = 2 y (mod 11) s nalezením x A y.

Aby bylo jasnější, jak Hellmanovo schéma funguje, představte si šifru, která nějakým způsobem používá barvu jako klíč:

Předpokládejme nejprve, že každý, včetně Alice, Boba a Evy, má třílitrovou nádobu, do které se nalije jeden litr žluté barvy. Pokud se Alice a Bob chtějí dohodnout na tajném klíči, přidají si do sklenic každý jeden litr své vlastní tajné barvy.

Alice může přidat fialovou barvu a Bob může přidat karmínovou. Poté každý z nich pošle svou sklenici s namíchaným obsahem tomu druhému.

Nakonec Alice vezme Bobovu směs a přidá k ní jeden litr své tajné barvy a Bob si vezme Alicinu směs a přidá k ní jeden litr své tajné barvy. Barva v obou plechovkách bude mít nyní stejnou barvu, protože každá plechovka obsahuje jeden litr žluté, fialové a karmínové barvy.

Právě tato barva, získaná dvojitým přidáním do sklenic s barvou, bude použita jako klíč. Alice netuší, jaký druh barvy Bob přidal, a Bob také netuší, jakou barvu Alice nalila, ale oba dosáhli stejného výsledku.

Mezitím Eva zuří. I když se jí podaří zachytit sklenice obsahující meziprodukt, nebude schopna určit konečnou barvu, která bude dohodnutým klíčem. Eva může vidět barvu barvy získané smícháním žluté barvy a Aliciny tajné barvy v nádobě zaslané Bobovi a může vidět barvu barvy získané smícháním žluté barvy a Bobovy tajné barvy v nádobě zaslané Alici. , ale k nalezení klíče je ve skutečnosti nutné znát barvy původních tajných barev Alice a Boba. Při pohledu na sklenice s namíchanými barvami však Eva nebude schopna identifikovat tajné barvy Alice a Boba. I když odebere vzorek jedné ze smíšených barev, nebude ji moci rozdělit na původní barvy, aby našla tu tajnou, protože míchání barvy je jednosměrná funkce.

Stále to není jasné? Pak se podívejte na video:

Doufám, že chápete, že existuje velmi reálný způsob, jak si bezpečně vyměnit klíče. Upozorňujeme však, že tento algoritmus zatím není možné nazvat asymetrickou šifrou, protože se v podstatě jedná pouze o algoritmus výměny klíčů.

Asymetrické šifrování

asymetrický algoritmus předpokládá přítomnost dvou klíčů – veřejného a soukromého. To znamená, že zpráva je zašifrována veřejným klíčem a dešifrována soukromým klíčem a ničím jiným. Ve skutečnosti to byl tento koncept, který formuloval Diffie.

Obecně je podstatou tohoto algoritmu to, že přijímající strana před přijetím zprávy vygeneruje dvojici klíčů na základě modulárního aritmetického algoritmu (princip je stejný jako v algoritmu Diffie-Hellman), skutečný soukromý a veřejný klíč. Odesílatel před odesláním obdrží veřejný klíč a tímto klíčem zprávu zašifruje, poté lze tuto zprávu dešifrovat pouze soukromým klíčem, který je přijímající stranou utajen.


Pokud se vrátíme k analogii se zámky, pak si šifrování veřejného klíče můžeme představit takto:

Každý může zamknout zámek pouhým kliknutím, dokud se nezavře, ale odemknout jej může pouze ten, kdo má klíč. Uzamčení zámku (šifrování) je snadné, zvládne to téměř každý, ale otevřít jej může pouze majitel klíče (dešifrování). Pochopení toho, jak uzamknout zámek, aby se zavřel, vám neřekne, jak jej odemknout.

Lze vyvodit hlubší analogii.

Představte si, že Alice navrhuje zámek a klíč. Ostražitě hlídá klíč, ale zároveň vyrábí tisíce duplicitních zámků a posílá je na pošty po celém světě. Pokud chce Bob poslat zprávu, vloží ji do krabice, zajde na místní poštu, požádá o „Alice lock“ a krabici jím zamkne. Nyní již nebude moci krabici otevřít, ale když Alice krabici obdrží, bude ji moci otevřít svým jediným klíčem.

Vložení zámku a kliknutí na něj pro zavření je ekvivalentní sdílenému klíči pro šifrování, protože k zámkům má přístup každý a každý může použít zámek k zamknutí zprávy ve schránce. Klíč k zámku je ekvivalentní tajnému dešifrovacímu klíči, protože jej má pouze Alice, pouze ona může otevřít zámek a pouze ona má přístup ke zprávě ve schránce.

Existuje několik algoritmů, které implementují asymetrické šifrování. Nejznámější z nich je RSA. Nevidím smysl to popisovat, protože stejně nebudu schopen hned pochopit, jak to funguje, a stejně to nebudu schopen napsat lépe, než co je napsáno na Wikipedii.

Závěr

Doufám, že jakmile pochopíte, jak funguje asymetrické šifrování zevnitř, začnete mu více důvěřovat a podle toho používat SSL častěji =)

Byly použity materiály z knihy Singh Simon - Book of Codes. Mimochodem, nejlepší kniha pro ty, kteří chtějí kryptografii alespoň trochu rozumět. Doporučuji všem, aby si to přečetli.

  1. televize

    Výběr takového klíče vám zabere spoustu času. O něco víc než vesmír existuje. I na velmi výkonných počítačích.

  2. Igore

    K čemu je ten nesmysl s veřejnými klíči? Ty symetrické jsou spolehlivější.
    Dobré odpoledne
    Dobré stránky, materiál je přehledně podaný, moc děkuji autorovi. Dostal jsem se sem náhodou v září, když jsem hledal informace o praktickém šifrování.
    Píši, protože se chci zeptat: Chce někdo vědět, jak najít čísla pro symetrické šifrování? Mohu vás naučit, jak rychle zkontrolovat primálnost čísla P (bez hledání čísla g) - ale pravděpodobně to nebude zajímavé. Nejzajímavější:
    Najděte číslo P libovolné délky a k němu číslo g. Nepoužívám žádné 2 na mocninu n plus jedna (nebo mínus jedna). Přirozeně je to zdarma. Existuje dokonce webová stránka, kde jsem zveřejnil svou práci.

  • Uasya Petrovič

    Chápu, že uplynulo hodně času, ale stejně odpovím pro nové čtenáře, jako jsem já.

    Tohle nebude fungovat, protože... po akcích 2 a 3 vidíme rozdíl, o který se změnil počet každého z bloků, proto se nám Bobovo tajné číslo stane zřejmé a zprávu můžeme zachytit až po 4. akci (tedy bez Aliciny šifry) a použít to, co je nám již známé Bobovo číslo.

  • Jevgenij

    Moc děkuji za článek!
    Po přečtení téměř vše padlo na vlastní police a získalo strukturu, kterou bylo snadné rozšířit.
    S takovou strukturou je snadné generovat správné otázky (MiTM útok police, speciální díky Michail :)).

    Z pedagogického hlediska jste vše zvládli na výbornou. Myslím, že máte pravdu, že jste do tohoto článku nepřidali MiTM útoky, jinak by došlo k přetížení informací.

    Video je rozkošné, zvlášť vzhledem k jeho stáří.

    PS: použití metafor k vysvětlení „složitých“ systémů je upřímně těžké přeceňovat. Ještě jednou díky!

  • dbzix

    Z tohoto článku jsem nezachytil okamžik přechodu z algoritmu Diffie-Hellman, kde si dva účastníci vyměňují veřejná data a mezivýsledky výpočtů za účelem získání tajného klíče (v příkladu bylo až 6 stupňů) do fáze, kdy k šifrování se používá určitý veřejný klíč, který se následně dešifruje pomocí soukromého klíče (počítám zde pouze 2 fáze přenosu dat - odeslání veřejného klíče a odeslání zprávy zašifrované tímto klíčem).
    Tito. Chápu, že někde mezi těmito dvěma vysvětleními je pravděpodobně skryto mnoho matematiky a nakonec se vysvětlení scvrkne na „takto to funguje, jen mi věřte“. Pravděpodobně by však bylo snazší pochopit tento náhlý přechod, kdyby byla analogie s barvami rozšířena tak, aby vysvětlila podstatu šifrování veřejným klíčem, po kterém by následovalo dešifrování soukromým klíčem. Mezitím se ukazuje, že „B funguje, protože A“, zatímco mezi A a B není jasné spojení. Alespoň pro mě.
    Vážený autore, byl byste tak laskav a vysvětlil mi tento mystický skok z A do B? :) Děkuji!

  • Jevgenij

    Dobré odpoledne,

    Dáno: existuje vzorec Y^x (mod P).
    příklad v článku je založen na vzorci 7^x (mod 11)

    Vzal jsem 4^x (mod 7) pro svůj příklad
    a nemohl jsem přijít na společný klíč.
    Otázka: Proč algoritmus v příkladu funguje pro 7^x (mod 11) a ne pro 4^x (mod 7)?

  • Jessi-jane
  • Andrey

    Děkuji, skvělý článek!
    Teprve teď jsem téměř přišel na algoritmus, jak vypočítat pomocí modulu.
    Mohl byste mi říct, jak vypočítat číslo B, pokud je číslo A menší než modul?
    No například:
    3 (mod 13) = ?

    Vím, že pokud například potřebujete vypočítat 625 (mod 13), potřebujete 625/13 a pak vynásobte největšího možného celočíselného dělitele (48) modulem (který zde bude roven 624) a nakonec 625-624 = 1
    Čísla 625 a 1 jsou srovnatelné modulo 13, protože 624 je dělitelné 13.
    Tomu rozumím. Ale co když je modul větší než číslo a?

  • Žlutý horor

    1. Útok typu Man-in-the-middle je vážný problém. Pokud mohu říci, v rámci samotné kryptografie nelze tento problém v zásadě vyřešit: pokud připustíme, že Eva je schopna zachytit a nepostřehnutelně nahradit VŠECHNA data přicházející k Alici nebo z ní pocházející JAKÝMIkoli komunikačními kanály, žádné šifrování pomůže. Alespoň jeden certifikát musí Alice získat ze zcela důvěryhodného zdroje. Pokud však útočník může pouze naslouchat komunikačnímu kanálu a neměnit v něm data, je asymetrické šifrování docela spolehlivé.
    2. Pokud jde o schopnost odstranit jednu „šifrovací vrstvu“ pod druhou, tuto vlastnost má banální funkce XOR, široce používaná v kryptografii od starověku až dodnes. Myslím, že to nejde patentovat :(

    1. Dmitrij Amirov Autor

      Ano, máte pravdu, útok mitm dnes nelze nijak řešit, pokud jste absolutně paranoidní. Pokud tomu tak není, pak pohrávání s certifikáty a podpisy poskytne „nezbytnou a dostatečnou“ ochranu.

      Pokud jde o funkci XOR, těžko ji lze nazvat šifrou, protože ve své podstatě není jedno.

      1. Žlutý horor

        No tak? Vygooglujte si Vernamovu šifru. Toto je systém zpráv s absolutní kryptoodolné. A je založen právě na XOR. Pomineme-li některé organizační potíže (vytváření skutečně náhodných klíčů s jednotnou distribucí, udržování utajení šifrovací podložky v nepřívětivém prostředí a bezpečné ničení použitých klíčů), lidstvo zatím na nic jednoduššího a spolehlivějšího nepřišlo.

      2. Žlutý horor

        I když po rozumném uvážení jsem si uvědomil, že metoda dvojitého reverzibilního šifrování nefunguje, pokud útočník zná šifrovací algoritmus. Podívejme se na Michailovy nápady jako příklad:

        1. Šifrované informace rozdělíme do bloků. Každý blok je reprezentován číslem. Velikost bloku (počet bitů) určuje počet možných hodnot bloku a (podle toho?) sílu šifrování.
        2. Pro zašifrování zprávy vybere Alice tajné číslo (které nikomu neposílá), které přidá ke každému číslu v blocích a takto zašifrovanou zprávu odešle Bobovi.

        Zatím dobrý: Eva nemůže číst Alicinu zprávu, protože... nezná číslo klíče. Pokud jsou bloky dostatečně velké, je obtížné obnovit Alicinu zprávu, ale pokud je blok delší než zpráva a klíč nemá zranitelná místa, je to nemožné. Ale Eva umí a také kopíruje Alicin šifrovací gram.

        3. Bob přijme zašifrovanou zprávu, vybere si své tajné číslo (které také nikomu nepošle), přidá toto číslo ke každému z čísel v blocích zprávy zašifrované Alicí a tuto dvojitě zašifrovanou zprávu odešle Alici. .

        A tady začínají problémy: Eva stále nemůže přečíst Alicinu zprávu, ale když má kopii šifrovaného gramu, který Bob obdržel, a dvojité šifrování, které poslal, může ji snadno obnovit. klíč Boba.

        4. Alice odečte své tajné číslo od každého čísla v blocích této dvojitě zašifrované zprávy a pošle výslednou zprávu Bobovi.

        Alice odstranila svou „vrstvu“ šifry a nyní posílá Bobovi svůj dopis zašifrovaný pouze Bobovým klíčem. Což Eva už má! Eva dopis dešifruje a přečte a pro každý případ může pomocí dešifrovaného textu dopisu a prvního šifrovaného gramu, který zachytila, získat Aliciin klíč.

  • Dmitrij

    Ahoj. Dobrý článek, ale také jsem nepochopil některé body popsané výše.
    Jde o přechod od algoritmu pro získání tajného klíče oběma partnery (Alice a Bob) (aniž by je zpřístupnili veřejnosti) k asymetrickému šifrování.
    Píšete, že zpráva je zašifrována na straně Alice veřejným klíčem obdrženým od Boba. Ale když zašifrujeme veřejným klíčem, pak ho Eve snadno získá a dešifruje sama, ne?
    Stále mi není jasné, jak můžete šifrovat pomocí veřejného klíče a dešifrovat pouze tajemství na Bobově straně. To znamená, že jej zašifrovali slovem „Domov“ a rozluštili slovem „Svět“. Pro mě je to nějaký nesmysl.
    Na základě těchto zjevných mezer (ať už vašich nebo mých) jsem usoudil, že obvod zde musí být složitější než na obrázku. Šipka z Bobova veřejného klíče k Alici s největší pravděpodobností znamená něco jiného, ​​konkrétně celou sekvenci akcí k získání „Y“ a „P“, získání průběžných výsledků atd. Jinými slovy si myslím, že když je původní zpráva zašifrována údajně veřejným klíčem, je ve skutečnosti zašifrována nikoli veřejným klíčem, ale tajným, který se počítá na každé straně zvlášť.

    Také jsem měl otázku ohledně dešifrování dvojitě zašifrované zprávy. Vezmeme-li dejme tomu Caesarovu šifru, kde je každé písmeno zašifrováno dalším písmenem, stojícím řekněme o 3 pozice dále. Pokud Alice zašifruje písmeno A ve zprávě písmenem B a Bob zašifruje toto písmeno B písmenem G, pak bude snadné získat písmeno A z G a v libovolném pořadí. Je pravda, že to s největší pravděpodobností bude fungovat pouze v případech, kdy oba znají typ šifrování partnera a s poměrně jednoduchými typy šifrování (monoalfabetické/polyalfabetické). Jsem také nový v kryptografii, takže toto je můj názor ;)

    1. Dmitrij

      Zapomněl jsem se zeptat.
      Jaký je rozdíl mezi symetrickými a asymetrickými metodami?

      1. Dmitrij

        Četl jsem to, víceméně tak nějak seskupoval vše v mé mysli.
        Odpovím na otázky, které jsem napsal, snad tím pomůžu dalším čtenářům.
        1. O

        Píšete, že zpráva je zašifrována na straně Alice veřejným klíčem obdrženým od Boba. Ale když zašifrujeme veřejným klíčem, pak ho Eve snadno získá a dešifruje sama, ne?
        Zůstává mi také nejasné, jak je možné šifrovat veřejným klíčem a dešifrovat pouze tajným na Bobově straně. To znamená, že jej zašifrovali slovem „Domov“ a rozluštili slovem „Svět“. Pro mě je to nějaký nesmysl.

        Tento článek zmiňuje algoritmus RSA. Symetrický šifrovací algoritmus. Ve skutečnosti používá následující algoritmus:
        1) Na základě určité funkce jednosměrného šifrování (funkce, která se v jednom směru snadno počítá, ve druhém velmi obtížně. A) vytvoříme pár na příjemce (veřejný klíč; soukromý klíč). Tento pár je jedinečný, to znamená, že každý veřejný klíč odpovídá jedinečnému soukromému klíči pro tuto jednosměrnou funkci.

        3) Odesílatel zprávu zašifruje
        4) Převody příjemci

        Jak vidíte, odesílatel nezná soukromý klíč a není schopen dešifrovat vlastní zašifrovanou zprávu. Proto se to nazývá asymetrické, protože jeden má všechny klíče a druhý má pouze část potřebnou pro šifrování.

        Jaký je rozdíl mezi symetrickými a asymetrickými metodami?
        Pokud bych k přenosu tajného klíče použil algoritmus Diffie a Hellman a poté byl schopen bezpečně přenést zašifrovanou zprávu, byla by tato metoda symetrická?

        Algoritmus Daffy-Hellman, který slouží pro výměnu klíčů a další symetrické šifrování. To znamená, že jeho podstatou je, že nejprve oba obdrží úplný klíč pro šifrování a dešifrování a poté začnou nejběžnější symetrické šifrování.

        Asymetrická metoda - jeden uzel má všechny informace pro šifrování/dešifrování a druhý zpravidla pouze pro šifrování

        Symetrické - oba uzly znají všechny informace pro šifrování/dešifrování.

        Doufám, že jsem někomu pomohl; 3

        1. Dmitrij

          Tento článek zmiňuje algoritmus RSA. Asymetrický šifrovací algoritmus Zapečetil jsem to.

        2. Dmitrij Amirov Autor

          Hmm... právě teď jsem si všiml vašich komentářů. Omlouvám se.

          Všechno se zdá být správné. Na vašem posledním odstavci je jedna věc, konkrétně termíny:

          • Daffy-Hellmanův algoritmus- je algoritmus, který vám umožňuje získat jeden sdílený tajný klíč a nic víc
          • Asymetrické/symetrické šifrování- Obecně platí, že u vás je vše v pořádku
          • RSA- algoritmus, který je kombinací těchto věcí. Na vašich prstech: pomocí asymetrického šifrování pomocí protokolu Deffie-Helman je vytvořen tajný klíč, pomocí kterého jsou zprávy mezi účastníky šifrovány metodou symetrického šifrování.
        3. Dmitry

          Stále jsem nepochopil výrok:
          2) Veřejný klíč je předán odesílateli.
          3) Odesílatel zprávu zašifruje
          4) Převody příjemci
          5) Příjemce dešifruje pomocí soukromého klíče. Tuto zprávu nelze dešifrovat pomocí veřejného klíče.

          Ukázalo se, že jste měli na mysli od samého začátku. Šifrujeme slovem Home a dešifrujeme slovem Svět. Znamená to, že existuje další algoritmus, který spojuje svět a domov?

  • Roberte

    Díky moc!!!

  • Román

    Děkuju. Nakonec jsem se rozhodl přijít na to, jak to funguje, a poučil jsem se z tohoto článku. Věřím, že pokud se spolupachatelé znají a je možné si bezpečně vyměnit veřejné klíče, pak se to vyplatí. Eliminovat neblahý dopad možného výskytu osoby uprostřed při výměně klíčů, která se bude vydávat za A jako B a B za A, nahradí klíče svými vlastními a nakonec si prohlédne všechny informace.

    A ve videu si myslím, že je marné, že používají toto 3^(24*54), protože Není vůbec zřejmé, odkud pochází, nebo by vysvětlili, že je to podmíněné.

  • Rinswind

    Díky za článek. Vše je vysvětleno velmi jasně.

  • Grigory

    Tato pravopisná negramotnost dráždí každého - „jednostranný“, „aplikovaný“, „dlouhý“, jako v 5. třídě. A tak to není špatné pro pochopení základů.

  • Grigory

    Někdy je otázka jednoduchá. Ransomware viry používají soukromý klíč. Existuje původní soubor, existuje zašifrovaný soubor. Úkol: najít algoritmus, abych tak řekl, který hledá algoritmus pro převod prvního souboru na druhý...

  • Allexys

    Děkuji za jasný a zábavný článek! Konečně jsem se dostal k základům :).

  • Jaroslav

    Bohužel všechny dostupné algoritmy stále vyžadují odstranění šifer ve frontě, ve které byly použity.

    Není to tak úplně pravda. Dám vám příklad:
    — předpokládejme, že každé písmeno odpovídá číslicovému kódu A = 1, B = 2, C = 3 atd.;
    — předpokládejme, že Alice pošle Bobovi dopis skládající se z jediného písmene A (pro zjednodušení příkladu);

    Alice: zadá svou šifru A + 2 = B

    Bob: vloží svou šifru B + 3 = E
    Bob: posílá dopis Alici
    Alice: odstraní svou šifru E - 2 = G
    Alice: posílá dopis Bobovi
    Bob: odstraní svou šifru G - 3 = A

    Zde číslo 2 je Alicin tajný klíč, 3 je Bobův tajný klíč. Navíc nemusí být jednoznakový. V zásadě je její délka neomezená.

  • Dmitry

    Dlouho jsem se vyhýbal teoretickým základům asymetrického šifrování. Věděl jsem povrchně – existuje veřejný klíč, kterým se data šifrují, a soukromý klíč, kterým se data dešifrují. Ale myšlenka na implementaci takového šifrování mě vždy trápila.
    Tvůj článek mi moc pomohl, moc za něj děkuji!
    Teprve na konci jsem znovu viděl tento nesmysl - „zašifrováno veřejným klíčem“. Koneckonců, přísně vzato, zpráva není zašifrována veřejným klíčem, ale klíčem získaným na základě soukromého klíče odesílatele a veřejného klíče příjemce (který byl naopak vygenerován na základě soukromého klíče příjemce). Ve skutečnosti v tabulce o Alici a Bobovi - oni a jen oni byli schopni získat stejný klíč „9“ - se používá k šifrování a dešifrování zprávy. Tento klíč lze ale získat pouze na základě dvojice klíčů – tajného (Alice/Bob) a veřejného (Bob/Alice).
    Obrazně - ano, zpráva je vždy zašifrována tajným klíčem odesílatele (ten je zhruba konstantní) a veřejným klíčem příjemce (záleží na konkrétním příjemci), proto v popisu šifrování "tajným" klíčem je vynechán – a toto opomenutí porušuje celý řád uvažování.

  • Clarkson

    Přečetl jsem si článek a moc jsem mu nerozuměl, i když to bylo lepší než na wiki. Ale je tu jedna věc, kterou nechápu. Pokud někdo umí správně odpovědět, pomozte.

    když všem pošlu otázku „kolik je 2+2?“, řeknu jim, jak mi zašifrovat odpověď (všem říkám veřejný klíč), a všichni mi pošlou odpověď na otázku, jak zjistím od koho přesně čekám na odpověď, tedy s kým Opravdu jsem chtěl navázat spojení?

    1. Dmitrij Amirov Autor

      Tady pokládáte otázku trochu špatně.

      Pokud potřebujete s někým navázat spojení, pak musíte jít z opačného směru. Připojíte se ke svému partnerovi a už on ti to řekne poskytuje váš veřejný klíč, ne vy.

      UPD: napsal článek o, myslím, že to bude správná odpověď na vaši otázku.

      1. Clarkson

        Budu muset bojovat se svou hloupostí. téma je diskutováno v komentářích a ve vašem článku, zdá se, že vše bylo vysvětleno.

        stále. Proč musím zveřejnit jeho klíč? řekni mi, jestli tomu dobře nerozumím.
        Jsem iniciátor (potřebuji odpovědi, v příkladu jsem přijímající strana), což znamená, že generuji pár. je to on, kdo odpovídá (odesílatel ve vašem příkladu), kdo potřebuje moji veřejnost

        Odesílatel před odesláním obdrží veřejný klíč a tímto klíčem zprávu zašifruje, poté lze tuto zprávu dešifrovat pouze soukromým klíčem, který je přijímající stranou utajen.

  • Beshot

    Přečetl jsem si tento článek a další na toto téma několikrát, ale algoritmus pro použití digitálních podpisů v e-mailu je nejasný. dokumenty Pokud je to zde: https://ru.wikipedia.org/wiki/Electronic_signature, pak vznikají nesrovnalosti. Šifrujeme tedy stále pomocí soukromého klíče nebo veřejného?

    1. Dmitrij Amirov Autor

      Pokud něco podepisujeme, tvoříme podpis na základě našeho soukromého klíče. A příjemce musí mít náš veřejný klíč, pomocí kterého bude schopen tento podpis dešifrovat.

      Pokud je podpis „dešifrován“, pak veřejný klíč odpovídá soukromému klíči a od a priori má soukromý klíč pouze odesílatel, což znamená, že dokument podepsal odesílatel.

      1. Beshot

        Dmitry, tvůj článek mi moc pomohl, máš dobrý styl. Ale je tu jeden nepochopitelný bod: tvrdíte, že asymetrický algoritmus předpokládá přítomnost dvou klíčů – veřejného a soukromého. To znamená, že zpráva je zašifrována veřejným klíčem a dešifrována soukromým klíčem a ničím jiným.

        Může to být záležitost původního úkolu, například příjemce potřebuje ověřit posla.
        Pak si nedovedu představit, jak může toto schéma pomoci?

        1. Dmitrij Amirov Autor

          To znamená, že zpráva je zašifrována veřejným klíčem a dešifrována soukromým klíčem a ničím jiným.

          Není to tak úplně pravda. Zpráva je zašifrována jedním klíčem a dešifrována jiným. Tito. Je docela možné jej zašifrovat soukromě a dešifrovat veřejně.

          Podívejme se na příklad. Chcete mi poslat zprávu, chci se ujistit, že jste to byl vy, kdo mi ji poslal. Krok za krokem:
          1) Zašifrujete zprávu soukromým klíčem
          2) Pošlete mi to
          3) Kontaktuji vás a obdržím od vás váš veřejný klíč
          4) Přijatou zprávu dešifruji vaším veřejným klíčem
          5) Pokud je zpráva dešifrována, znamená to, že jste to byl vy, kdo ji odeslal

          Nikdo jiný nemůže odeslat tuto zprávu předstírat, že jste vy, protože pouze vy máte soukromý klíč.

          1. Beshot

            Dobře, ale co když potřebujete skrýt zprávu před zvědavýma očima?

  • Anya

    Dobré odpoledne Článek se mi líbil, přesto jsem měl dotazy (v komentářích dokonce pár podobných bylo, ale bez odpovědí).
    Pokud ve druhé části článku přejdeme k analogii s Alicí a Bobem, zejména k číslům A, B, a, b, P a číslu 9 získanému v příkladu, které z nich bude soukromý klíč a který bude veřejný klíč? Předem děkuji za odpověď!

    1. Anya

      Není jasné, zda byl můj komentář zveřejněn nebo ne :(

    2. Dmitrij Amirov Autor

      Správnější by bylo říci, že v procesu výměny dat obdrží Alice a Bob společný klíč 9 , které lze později použít k šifrování jejich zpráv. Ve skutečnosti jsem v článku nepopisoval samotné asymetrické šifrování, ale protokol výměny klíčů, který dal impuls k rozvoji asymetrického šifrování.
      Algoritmus pro generování páru soukromý/veřejný klíč je ve skutečnosti trochu složitější, i když je podobný algoritmu nastíněnému výše, ale i tak si pravděpodobně zaslouží samostatný článek. Nebudu to hned psát do komentářů, protože bych mohl spoustu věcí zmást.

  • Gregory


  • 
    Nahoru