Šifrovací algoritmy vysvětlené příklady

Šifrování kóduje zprávy s úmyslem pouze umožnit zamýšlenému příjemci porozumět významu zprávy. Je to obousměrná funkce (musíte být schopni vrátit zpět cokoli, co jste udělali do zprávy). To je navrženo tak, aby chránilo data v tranzitu.

Jednoduchý šifrovací algoritmus

Pracuji na projektu výtahu jen pro zábavu, je to vlastně hardware. Ale myslím, že se jedná spíše o softwarovou otázku. Tuto funkci nemusím mít, ve skutečnosti je to zcela redundantní, ale byl jsem zvědavý, takže ji stejně přidávám, abych se mohl naučit: P Mám 8bitovou adresu, 8bitovou datovou sběrnici a 8bitové šifrování kód. Mám pána a mnoho otrokových zařízení. Mistr zná adresu otroků a zná šifrovací kód. Otroci znají také jejich adresu a šifrovací kód. Chci opravdu jednoduchý algoritmus takový, že: Master posílá „y“, kde, y = funkce (data, šifrovací kód), otrok přijímá „y“ a může extrahovat data podle dat = function2 (y, šifrovací kód), který jsem se pokusil hrát kolem s a, XOR, nebo atd. a jejich kombinace, ale nemohl to přijít. Znovu hledám jednoduché algoritmy. Pokud vám nevadí, můžete mi udělat větší laskavost a vysvětlit nějakou teorii, jak mohu přijít k takovému řešení/funkcím. Díky moc!

Dotaz 25. dubna 2013 v 15:46
441 1 1 zlatý odznak 5 5 Silver odznaky 12 12 Bronzové odznaky

Jednoduchý a Efektivní šifrování přijde ve formě knihovny, ne něco, co si píšete. Pouze jednoduché šifrování může být rot13.

25. dubna 2013 v 15:48
XTEA je také relativně jednoduchá, RC4, ale je to trochu těžké používat správně.
25. dubna 2013 v 15:50

Velmi jednoduchý přístup – Odeslat y = x xor klíč, pak x = y xor klíč na druhé straně, ale tam nebude mnoho ochrany.

Šifrovací algoritmy vysvětlené příklady

Megan Kaczanowski

Megan Kaczanowski

Šifrovací algoritmy vysvětlené příklady

Kryptografie je ve své nejzákladnější vědě o používání kódů a šifrů k ochraně zpráv.

Šifrování kóduje zprávy s úmyslem pouze umožnit zamýšlenému příjemci porozumět významu zprávy. Je to obousměrná funkce (musíte být schopni vrátit zpět cokoli, co jste udělali do zprávy). To je navrženo tak, aby chránilo data v tranzitu.

Pokud hledáte obecné pozadí rozdílu mezi symetrickými a asymetrickými algoritmy a obecným přehledem, co je šifrování, začněte zde. Tento článek bude primárně pokrývat dva z nejčastěji používaných šifrovacích algoritmů.

Jako obecný přehled byl hlavní problém se symetrickými algoritmy, když byly poprvé vytvořeny – fungovaly pouze tehdy, pokud obě strany již znaly sdílené tajemství. Pokud by tomu tak nebylo, byla si bezpečná výměna klíče bez údery třetí strany nesmírně obtížné.

A pokud třetí strana získala klíč, bylo pro ně velmi snadné porušit šifrování a porazit účel bezpečné komunikace.

Diffie-Hellman tento problém vyřešil tím, že umožnil cizincům vyměňovat si informace přes veřejné kanály, které lze použít k vytvoření sdíleného klíče. Sdílený klíč je obtížné prasknout, i když je monitorována veškerá komunikace.

Jak funguje Diffie-Hellman?

Diffie-Hellman je to, co se nazývá protokol o výměně klíčů. Toto je primární použití pro Diffie-Hellman, i když by to mohlo být také použity pro šifrování (obvykle to není, protože je efektivnější použít D-H k výměně klíčů a poté přepnout na (výrazně rychlejší) symetrické šifrování pro přenos dat ).

Způsob, jakým to funguje, je následující:

Screen-Shot-2019-10-04-AT-5.45.13-PM

V zásadě existují dvě strany, Alice a Bob, které se shodují na počáteční barvě (libovolné, ale pokaždé se musí lišit). Mají také tajnou barvu, kterou si udržují pro sebe. Poté tuto barvu smíchají se sdílenou barvou, což má za následek dvě různé barvy. Poté tuto barvu předají druhé straně, která ji mísí s jejich tajnou barvou, což má za následek stejnou koncovou tajnou barvu.

To se spoléhá na myšlenku, že je relativně snadné smíchat dvě barvy dohromady, ale je velmi obtížné je oddělit, aby bylo možné najít tajnou barvu. V praxi se to děje s matematikou.

  1. Bob a Alice se dohodnou na dvou číslech, velkém prvotřídním, p = 29 a základně g = 5
  2. Nyní Bob vybírá tajné číslo, x (x = 4) a dělá následující: x = g^x % p (v tomto případě % označuje zbytek. Například 3%2 je 3/2, kde zbytek je 1). X = 5 ^4 % 29 = 625 % 29 = 16
  3. Alice také vybírá tajné číslo, y (y = 8) a dělá následující: y = g^y % p. Y = 5 ^ 8 % 29 = 390 625 % 29 = 24
  4. Bob pošle X Alice a Alice pošle y na Boba.
  5. Pak Bob dělá následující: k = y ^ x % p, k = 24 ^ 4 % 29 = 331 776 % 29 = 16
  6. Alice pak provede následující: k = x ^ y % p, k = 16 ^ 8 % 29 = 4 294 967 296 % 29 = 16

Skvělá (možná kouzelná*) je to, že Bob i Alice mají stejné číslo, K, a nyní to mohou používat k tajně, protože nikdo jiný neví k.

Zabezpečení tohoto protokolu je založeno na několika věcech:

  1. (Fakt) Je relativně snadné generovat prvotní čísla, dokonce i velká prvotní čísla (jako P).
  2. (Fakt) Modulární exponentiace je snadná. Jinými slovy, je relativně snadné vypočítat x = g ^ x % p.
  3. (Předpoklad založený na současném výpočetním výkonu a matematice) Modulární extrakce kořenů bez hlavních faktorů je velmi tvrdá. V podstatě je velmi těžké najít K, aniž byste věděli X a Y, i když jste se slíbili na provoz a můžete vidět P, G, X a Y.

Za předpokladu, že za předpokladu, že to bylo správně implementováno, je relativně snadné provádět matematiku potřebnou k vytvoření klíče, ale je velmi obtížné a časově náročné na matematiku potřebnou k pokusu o rozbití klíče tím, že jej vynucujeme tím, že ji nutí.

I kdyby útočník mohl tento klíč ohrozit, Diffie-Hellman umožňuje dokonalé tajemství vpřed.

Co je dokonalé tajemství vpřed?

To je myšlenka, že pokud rozbijete šifrování, které server používá ke komunikaci nyní, neznamená to, že veškerá komunikace, kterou server kdy provedl, lze číst.

Jinými slovy, umožňuje vám pouze vidět komunikaci, která se nyní používá (tj. Tento tajný klíč). Vzhledem k tomu, že každá sada komunikace má jiný tajný klíč, museli byste je všechny prasknout samostatně.

To je možné, pokud má každá relace jiný, pomíjivý klíč pro každou relaci. Protože Diffie-Hellman pro každou relaci vždy používá nové náhodné hodnoty (proto generuje nové klíče pro každou relaci), nazývá se Efemeral Diffie Hellman (EDH nebo DHE). Mnoho šifrových apartmá to používá k dosažení dokonalého tajemství dopředu.

Protože Diffie-Hellman vám umožňuje vyměňovat klíčový materiál v prostém textu, aniž byste se obávali ohrožení sdíleného tajemství, a matematika je příliš komplikovaná pro útočníka na hrubou sílu, útočník nemůže odvodit klíč relace (a to i kdyby mohli, pomocí Různé, pomíjivé, klíče pro každou relaci znamenají, že by se mohli v této relaci jen snižovat – ne v minulosti ani v budoucnosti).

Uzavření dopředu je povoleno s jakoukoli výměnou klíčů Diffie-Hellman, ale pouze výměna efemérních klíčů (jiný klíč pro každou relaci) poskytuje dokonalé tajemství vpřed.

Zde je příspěvek od Scott Helme o tom hlouběji a vysvětluje, jak to povolit na vašich serverech.

Co jsou to omezení Diffie-Hellmana?

Největším omezením D-H je, že neověřuje identitu. Jinými slovy, kdokoli může tvrdit, že je Alice nebo Bob a neexistuje vestavěný mechanismus pro ověření, že jejich prohlášení je pravdivé.

Kromě toho, pokud implementace není prováděna bezpečným způsobem, mohl by být algoritmus prasklý dostatečnými vyhrazenými zdroji (nepravděpodobný, ale pro akademické týmy nebo akademické aktéry národní)).

Například by k tomu mohlo dojít, pokud generátor náhodných čísel není poskytován přiměřenou entropií na podporu požadované síly – jinými slovy, protože počítačově generovaná čísla nejsou nikdy skutečně náhodná, míra, do jaké jste uměle injikovali nejistotu, záleží na síle vaší implementace.

Kromě toho došlo k útoku v roce 2015, který ukázal, že když byla mnoho serverů použito jako začátek výměny klíčů, celková bezpečnost Diffie-Hellman byla nižší, než se očekávalo, celková bezpečnost Diffie-Hellman.

Útočník by v podstatě mohl jednoduše předčasně předcházet útoku proti tomuto hlavnímu.

K tomu došlo, protože miliony serverů používaly stejná prvočísla pro výměny klíčů. Předpokládání tohoto typu útoku stále vyžaduje zdroje akademické nebo národního státu a je nepravděpodobné, že by to ovlivnilo drtivou většinu lidí.

Naštěstí však pro ty, kteří se musí starat o útočníky v národním státě, existuje jiný způsob, jak dosáhnout výměny klíčů DH pomocí kryptografie eliptické křivky (ECDHE). Toto je mimo rozsah tohoto článku, ale pokud máte zájem dozvědět se více o matematice za touto výměnou, podívejte se na tento článek.

Podrobnější pohled na slabiny DH naleznete v tomto whitepaper a na tomto webu.

RSA

RSA je pojmenována pro tvůrce – Rivest, Shamir, Adleman – a je to způsob generování veřejných a soukromých klíčů.

Technicky existují dva algoritmy RSA (jeden se používá pro digitální podpisy a jeden se používá pro asymetrické šifrování.) – Tento článek se týká asymetrického šifrovacího algoritmu.

To umožňuje výměnu klíčů – nejprve přiřadíte každou stranu k transakci veřejné/soukromé klíče, poté vygenerujete symetrický klíč a konečně používáte veřejné/soukromé páry klíčů k bezpečnému sdělení sdíleného symetrického klíče.

Protože asymetrické šifrování je obecně pomalejší než symetrické šifrování a také se nezmenší, použití asymetrického šifrování k bezpečnému výměně symetrických klíčů je velmi běžné.

Jak to tedy funguje?

  1. Vyberte 2 velmi velká prvočítka (nejméně 512 bitů nebo 155 desetinných číslic), x a y (tato čísla musí být tajná a náhodně vybrána)
  2. Najděte produkt, tj. Z = x*y
  3. Vyberte liché veřejné celé číslo, E, mezi 3 a n – 1, a nemá žádné běžné faktory (jiné než 1) s (x -1) (Y -1) (takže je relativně prvotřídní k x – 1 a y – 1 ).
  4. Najděte nejméně běžný násobek x – 1 a y – 1 a nazývejte to l.
  5. Vypočítejte soukromý exponent, d, z x, y a e. DE = 1 % l. d je inverzní E % L (víte, že existuje inverzní, protože E je relativně prvotřídní k Z – 1 a Y – 1). Tento systém funguje, protože p = (p ^ e) ^ d % z.
  6. Výstup (z, e) jako veřejný klíč a (z, d) jako soukromý klíč.

Nyní, pokud by Bob chtěl poslat zprávu Alice, vygeneruje CIPHERTEXT (C) z prostého textu (P) pomocí tohoto vzorce:

Za účelem dešifrování této zprávy vypočítá Alice následující:

Vztah mezi D a E zajišťuje, že funkce šifrování a dešifrování jsou inverze. To znamená, že dešifrovací funkce je schopna úspěšně obnovit původní zprávu a že je docela těžké obnovit původní zprávu bez soukromého klíče (z, d) (nebo hlavní faktory X a Y).

To také znamená, že můžete zveřejnit Z a E, aniž byste ohrozili bezpečnost systému, což usnadňuje komunikaci s ostatními, s nimiž již nemáte sdílený tajný klíč.

Operace můžete také použít v opačném případě k získání digitálního podpisu zprávy. Nejprve používáte dešifrovací operaci na prostém textu. Například S = podpis (p) = p ^ d % z.

Poté může příjemce ověřit digitální podpis použitím funkce šifrování a porovnáním výsledku se zprávou. Například m = ověřte (s) = s ^ e % z.

Často, když se to stane, je prostý text hash zprávy, což znamená, že zprávu můžete podepsat (bez ohledu na délku) pouze s jedním exponentiation.

Zabezpečení systému je založeno na několika věcech:

  1. (Fakt) Je relativně snadné generovat prvočísla, dokonce i velká prvočísla (jako x a y).
  2. (Fakt) násobení je snadné. Je velmi snadné najít z.
  3. (Předpoklad založený na současné matematice) Factoring je těžké. Vzhledem k z, je relativně těžké obnovit x a y. Je to schopné, ale chvíli to trvá a je to drahé.

Jeden odhad říká, že obnovení hlavních faktorů 1024bitového čísla by trvalo rok na stroji, který stojí 10 milionů dolarů. Zdvojnásobení velikosti by exponenciálně zvýšilo množství potřebné práce (několik miliardkrát více práce).

Jak technologie pokračuje v postupu, tyto náklady (a požadované práce) se sníží, ale v tomto okamžiku je tento typ šifrování, správně implementován, nepravděpodobným zdrojem kompromisu.

Screen-Shot-2019-10-05-AT-11.18.45-AM

Obecně jediní hackeři s tímto typem peněz a odhodlání jedinému cíli jsou národní státy. Navíc, pokud existuje jednodušší způsob, jak kompromitovat systém (viz níže), je to pravděpodobně lepší volba.

4. (Fakt) Modulární exponentiace je snadná. Jinými slovy, je relativně snadné spočítat C = P ^ e % z.

5. (Fakt) Modulární extrakce kořenů – zvrácení výše uvedeného procesu – je snadné, pokud máte hlavní faktory (pokud máte z, c, e a hlavní faktory x a y, je snadné najít P tak, že c = p ^ e % z).

6. (Předpoklad založený na současném výpočetním výkonu a matematice) Modulární extrakce kořenů bez hlavních faktorů je velmi obtížná (pokud máte Z, C, E, ale ne x a y, je relativně obtížné najít P takové, že C = P ^ e % Z, zejména pokud je A dostatečně velký).

Chcete se dozvědět více o matematice od mnohem chytřejších lidí? Podívejte se na tento článek.

Skvělé, což je lepší?

Závisí to na vašem případu použití. Mezi těmito dvěma algoritmy existuje několik rozdílů – nejprve, dokonalé tajemství vpřed (PFS), o kterém jsme mluvili dříve v kontextu Diffie -Hellman. Zatímco technicky ty mohl Generujte efemérní páry klíčů RSA a poskytují dokonalé tajemství vpřed s RSA, výpočetní náklady jsou mnohem vyšší než pro Diffie-Hellman-což znamená, že Diffie-Hellman je lepší volbou pro implementace SSL/TLS, kde chcete dokonalé tajemství vpřed.

I když existují určité rozdíly v výkonu mezi těmito dvěma algoritmy (pokud jde o práci požadovanou od serveru), rozdíly v výkonu obecně nejsou dostatečně velké, aby změnily při výběru jednoho nad druhým.

Místo toho, obecně, primární úvaha při určování, která je lepší, záleží na tom, který z nich je více podporován pro váš případ použití (například při implementaci SSL budete chtít Diffie Hellman kvůli dokonalému tajemství vpřed) nebo které je populárnější nebo přijatější Jako standard v oboru.

Například, zatímco Diffie -Hellman byl schválen vládou USA a podporován institucionálním orgánem, standard nebyl uvolněn – zatímco RSA (standardizovaná soukromou organizací) poskytla bezplatný standard, což znamená, že RSA se stala mezi soukromými organizacemi velmi populární.

Pokud máte zájem číst více, je zde skvělé vlákno na rozdílech.

Zájem se naučit, jak hackery používat kryptografické útoky? Vyzkoušejte tuto sadu výzev od kryptopalů.

Čím více se dozvědím o kryptografii, tím více si myslím, že Alice a Bob by měli pravděpodobně mluvit osobně.

– Paul Reinheimer (@Preinheimer) 13. března 2017