it-swarm-eu.dev

Kde se mohu těžko naučit kryptografii / kryptoanalýze, aniž bych chodil do školy? Nějaká dobrá kniha?

Nejsem tak špatný v matematice:

Vím, co jsou p-seznam a p-kombinace, vím maticovou algebru, vím, co a XOR je, vím, jak zjistit, zda je číslo prvočíslo atd.: Nejsem programátor, který nesnáší matematiku, protože je na tom špatný, ale stejně nemám doktorát.

Nejsem ani špatný z počítačových věd, alespoň z hlediska obecné počítačové vědy:

Vím C, C++ (oba se naučili ve škole), python, nějaký haskell, jaké kódování textu jsou tam venku, jak funguje UNICODE, vím, jak může být soubor komprimován nebo šifrován, jaké běžné algoritmy jsou tam (diffie-hellman, algoritmus LZMA, DES, AES, had, Blowfish, SHA, MD5 ...). Mám hodně zájem o kryptografii na wikipedii nebo jiných webových stránkách, ale nemyslím si, že mi wikipedia může naučit kryptografii bez podrobných algoritmů nebo bez praxe; například vím, co je synchronní kryptografie a co je asynchronní (veřejný/soukromý klíč).

Chtěl bych se naučit, jak správně a bezpečně implementovat nejpopulárnější algoritmy a jak je učinit spolehlivými: knihu nebo dobré návody nebo kurzy. Rychle jsem hledal na Khan Academy, ale tento předmět není triviální a vyžaduje znalosti z matematiky, počítačových věd a/nebo elektroniky.

Nechci číst stránky a stránky pouze teorie o základních věcech, které už můžu znát nebo nemusí být ve vztahu k dnešní kryptografii skutečně relevantní, jako papír napsaný výzkumníkem, jen něco praktického, s problémy a problémy kryptoanalýzy, pro studenty.

Mám v současné době hodně volného času, mám jen 26 let a jsem si jistý, že se toho mohu naučit nejen pro zvýšení mezd, které mě může přinést, ale také proto, že jsem kryptografií vždy fascinoval, aniž bych tomu skutečně rozuměl, Nemohu najít žádný dobrý materiál.

39
jokoon

(LZMA je kompresní algoritmus, nikoli kryptografický.)

Za účelem kryptografických algoritmů implementace, generická metoda získává relevantní popisný standard, popadá vaši klávesnici a zkouší. Většina standardů zahrnuje „testovací vektory“, tj. Vzorové hodnoty, které vás informují, zda vaše implementace vrací správné odpovědi. V tomto okamžiku se věci liší v závislosti na tom, jaký druh algoritmu zvažujete.

Symetrická kryptografie:

Symetrické algoritmy zahrnují symetrické šifrování, hashovací funkce a autentizační kódy zpráv (MAC). K jejich zvládnutí nepotřebujete mnoho matematiky; většinou jde o přidání 32bitových a 64bitových celých čísel (to je modulární aritmetika, s 232 nebo 264 jako modulus) a bitové operace (XOR, AND ...).

Takový kód je obvykle prováděn v C. Dobrého výkonu je dosaženo tím, že mají některé představy o tom, jak kompilátor C porozumí a převede kód do instrukcí pro CPU; znalost Shromáždění není striktně povinná, ale docela užitečná. Důležitým parametrem je mezipaměť: odvíjení smyčky je obvykle dobrý nástroj, ale pokud jej přeháníte, výkon prudce poklesne.

Navrhuji začít implementací klasických hašovacích funkcí (rodina SHA, popsaných v FIPS 180- ) a pokusit se je zrychlit. Jako srovnávací bod získejte OpenSSL a pomocí nástroje příkazového řádku openssl speed Zjistěte, jaký druh výkonu lze dosáhnout (tento nástroj je již zahrnut v jakékoli slušné distribuci Linuxu a je to funguje také na Windows a MacOS). Například na mém počítači:

$ openssl speed sha256
Doing sha256 for 3s on 16 size blocks: 4842590 sha256's in 3.00s
Doing sha256 for 3s on 64 size blocks: 2820288 sha256's in 2.99s
Doing sha256 for 3s on 256 size blocks: 1262067 sha256's in 2.99s
Doing sha256 for 3s on 1024 size blocks: 395563 sha256's in 3.00s
Doing sha256 for 3s on 8192 size blocks: 53564 sha256's in 3.00s
OpenSSL 0.9.8o 01 Jun 2010
built on: Wed Feb 23 00:47:27 UTC 2011
options:bn(64,64) md2(int) rc4(ptr,char) des(idx,cisc,16,int) aes(partial) blowfish(ptr2) 
compiler: cc -fPIC -DOPENSSL_PIC -DZLIB -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN
-DHAVE_DLFCN_H -m64 -DL_ENDIAN -DTERMIO -O3 -Wa,--noexecstack -g -Wall -DMD32_REG_T=int
-DOPENSSL_BN_ASM_MONT -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM
available timing options: TIMES TIMEB HZ=100 [sysconf value]
timing function used: times
The 'numbers' are in 1000s of bytes per second processed.
type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes
sha256           25827.15k    60367.37k   108056.57k   135018.84k   146265.43k

což znamená, že OpenSSL obsahuje implementaci SHA-256 ručně optimalizovanou v Assembly, která dosahuje 146 MB/s při zpracování 8 kB zpráv. Na stejném stroji by čistá implementace C měla dosáhnout alespoň 130 MB/s.

Příklad toho, jak jsou hashovací funkce implementovány v C a Java, a jak lze hašovací rychlost měřit smysluplným způsobem, viz sphlib .

Poté můžete vyzkoušet symetrické šifrování, zejména AES ( FIPS 197 ). Trochu pomůže zjistit, jaké je konečné pole charakteristiky 2, ale standard je dostatečně jasný, aby vás provedl dokonalou implementací. Potom zkuste optimalizovat věci. OpenSSL může sloužit jako srovnávací bod a získat inspiraci z implementace AES Briana Gladmana . Pokud jde o bezpečnost, existují určité obavy ohledně toho, jaké informace závislé na klíči by mohly být vynechány pomocí vyhledávacích tabulek v implementaci (zkuste vyhledat „útok načasování mezipaměti AES“); pokusit se reprodukovat tento druh útoku je velmi dobré cvičení (mysl, není to snadné, ale pokud se vám podaří prokázat to v laboratorních podmínkách, pak se naučíte hodně o tom, jak fungují kryptografické implementace).

Asymetrická kryptografie:

Asymetrická kryptografie je o algoritmech, které zahrnují více než jednu stranu. To zahrnuje asymetrické šifrování (RSA, ElGamal), výměnu klíčů (Diffie-Hellman) a digitální podpisy (opět RSA, DSA ...). Obsah matematiky je zde mnohem větší a optimalizace je mnohem širší téma než pro symetrickou kryptografii, protože existuje několik způsobů, jak implementovat každý algoritmus, namísto jediné „zřejmé“ implementační cesty.

Dobrým odkazem je Průvodce eliptickou kryptografií . Ačkoli se jedná hlavně o eliptické křivky, zahrnuje obecné zpracování implementace operací v konečných polích, a tak se stává, že se jedná o ukázkovou kapitolu, kterou si můžete zdarma stáhnout na adrese URL odkazované výše. Tak si to a přečtěte si to hned. Dalším nezbytným odkazem je Příručka aplikované kryptografie , kterou lze volně stáhnout; Zejména kapitola 14 se týká účinné implementace.

RSA je dostatečně jednoduchá a je dostatečně popsána v PKCS # 1 . Existují možné načasování útoků na RSA, které jsou potlačeny maskováním (ano, jedná se o článek „napsaný výzkumníkem“, ale předmětem kryptografie jsou vědci lidé, kteří rozumí tomu, co se děje na). Pokud se dostanete na kloub modulární aritmetiky, můžete zkusit implementovat DSA ( FIPS 186- ). Diffie-Hellman je matematicky jednoduchý (pro implementaci DSA nepotřebuje nic víc, než je nutné), ale jeho popisující standard (ANSI X9.42) nelze stáhnout zdarma.

Eliptické křivky jsou populární budoucí náhradou za modulární aritmetiku; EC varianty DSA a Diffie-Hellman jsou rychlejší a věří se, že jsou bezpečnější díky kratším veřejným klíčům. Ale to je více matematiky. Zde je opět nezbytným referenčním materiálem Průvodce po eliptické kryptografii.

Existují i ​​jiné druhy asymetrických kryptografických algoritmů, např. McEliece kryptosystém (asymetrické šifrování; existuje varianta pro podpisy popsané Niederreiter ) a algoritmy založené na redukci mřížky . Nemají však (zatím) prospěch z publikovaných standardů, které se starají o podrobnosti implementace a není tolik existujících implementací, které by bylo možné porovnat. Raději začněte s RSA a DSA.

Kryptanalýza:

Kryptanalýza používá mnohem vyšší dávku matematiky než implementace.

Pro symetrickou kryptografii jsou dva hlavní nástroje diferenciální a lineární kryptoanalýza; viz tento kurz .

Moje vlastní cesta ke kryptografii začala implementací DES a poté implementováním Matsuiho lineární kryptoanalýzy na redukovanou verzi DES (8 kol místo 16). DES je popsáno v FIPS 46- , což je oficiálně stažené, ale stále dostupné. Z DES lze definovat Triple-DES (tři instance DES) se třemi odlišnými klíči, přičemž prostřední se používá ve směru „dešifrování“ a jsou publikovány testovací vektory pro Triple-DES (také známý jako „TDES“, „3DES“ nebo někdy „DES“, což je pravděpodobně matoucí).

U asymetrických algoritmů kryptoanalýza většinou zahrnuje práci na matematické struktuře klíčů, např. pokusem faktor velká nevlastní celá čísla, aby se rozbily varianty RSA. Matematika se zde pohybuje od netriviální k naprosto nepředstavitelné, takže by to mohlo být příliš strmé křivky učení začít kryptografii pokusem rozbít RSA ...

46
Thomas Pornin

Opravdu dvě věci:

  1. Získejte dobrou knihu. „Aplikovaná kryptografie“ Bruce Schneiera je dostatečná.
  2. Naučte se nástroje „openssl“ a naučte se je používat.

Nejdůležitější věcí, o které se krypto naučit, je pokora. Nechcete nikdy vytvořit nové řešení problém - chcete kopírovat co nejlépe, můžete řešení, která byla dobře testována ostatními. Většina chyb kryptografie je způsobena tím, že lidé mají skvělý nápad a domnívají se, že by mohli provést nějakou optimalizaci, aby se zlepšili na existujícím řešení. Nalezení nových způsobů, jak dělat věci, se nakonec podaří jen velmi skromně.

Další lekcí je, že jste se odcizili předsudky, které jste získali z televize a filmů, kde se hacker posadí k počítači a rozbije krypto. Tito nejsou příbuzní krypto, nebo dramatizace toho, co se opravdu děje. Například film „Sneaker“ je dramatizací toho, co by se stalo, kdyby někdo vyvinul čip, který by mohl zohlednit velká celá čísla.

Nejtěžší věcí při učení krypto je rozlišovat mezi technickými koncepty, které jsou nezbytné k pochopení oboru obecně, a těmi, které budete potřebovat, pouze pokud se specializujete na úzkou oblast. Vezměte si například vysoce hodnocený příspěvek výše. Musíte pochopit rozdíl mezi „symetrickým“ algoritmem vs. „asymetrickým“ algoritmem vs. „hash“, ale když autor tohoto příspěvku říká „Pomáhá trochu vědět, jaké je konečné pole charakteristiky 2“, Nesouhlasil bych: je to smysluplné pouze pro PhDs zkoumající krypto, ne pro nás ostatní, kteří prostě chtějí přijít na to, jak je správně používat.

Dobrým způsobem, jak se projít technickými detaily, je vybrat cíl a pracovat zpět. Dnes například Apple aktualizoval operační systém iPhone/iPad na verzi 4.3.5, aby opravil chybu při ověřování certifikačních řetězců X.509. Porozumění problému a proč museli opravit je to přesně to, o čem diskutujete ve svém původním příspěvku. Zjistěte, co je certifikát X.509, jaké řetězce jsou a proč je třeba je ověřit, a pokud ne, hacker používající nástroj, jako je 'sslsniff', může toto šifrování porazit. Jakmile to všechno plně pochopíte, dosáhnete většiny svých cílů, které jste popsali ve svém původním příspěvku.

Dalším příkladem je příspěvek na blogu Ověření klíče Hackera Comodo

Znovu zjistěte, co hacker Comodo udělal (vytvořil podepsané certifikáty pro Google a Yahoo), jak funguje odvolání certifikátů a jak používat nástroje k ověření tohoto certifikátu. Navrhuji to jako dobrý příspěvek, protože je to dobrý výchozí bod pro používání nástrojů „openssl“, které jsou v našem oboru standardní.

Hodně štěstí!

10

Zaregistrujte se pro Stanfordovo online třída kryptografie , které začíná příští leden. Je to zdarma, online, zahrnuje jak teorii (video přednášky a kvízy), tak i praxi (programovací úkoly), pojďme pracovat vlastním tempem a pokud uspějete, dostanete prohlášení o úspěchu. Vzhledem k různým ozvěnám, které jsem dostal na předchozí Stanfordově předchozí online lekci, se rozhodně do této třídy (stejně jako na počítačovou bezpečnost) přihlašuji.

  • Na straně teorie:

Principy návrhu kryptografického inženýrství a praktické aplikace Nielse Fergusona a Bruce Schneiera. Kniha má být aktualizací úctyhodné kryptografie, autoři jsou v oboru dobře známí a recenze jsou dobré.

  • Na straně praxe:

Můžete se podívat na různé hackerské/bezpečnostní soutěže CTF (Capture The Flag). Obvykle zahrnují kryptografické výzvy. Jsou zábavné a vyvedou vás z vaší zóny pohodlí, aby vyřešili problémy v omezeném čase. Zde je dobrý Kalendář CTF . Podívejme se také na několik zápisů z předchozích CTF, zjistil jsem, že mnohé jsou velmi vzdělávací a dobře vysvětlené.

10
kroosec

Pro kryptografické algoritmy:

Stinsonova kryptografie: teorie a praxe

prochází matematikou mnoha kryptografických algoritmů způsobem, který by je usnadnil implementaci, pokud jste to chtěli udělat.

Scheiner's Applied Cryptography je také hlavní knihou na toto téma. Pravděpodobně se trochu překrývá, ale s některými odlišnými algoritmy.

Pokud jde o knihu, která vám výslovně říká, jak je implementovat - nemám nic. Komerčně nejsou vždy implementovány do softwaru a je to docela specializovaný průmysl. Z pohledu hraní bych řekl knihu, která vysvětluje algoritmus, implementuje jej a porovná váš výsledek s běžně používanou knihovnou pro stejný algoritmus.

Podobně nemám na kryptoanalýze nic, i když mám podezření, že pokud si vyberete algoritmus a google pro věci jako „slabost v“ a „slabé klíče“, najdete nějaké zajímavé papíry a další informace. Naposledy jsem musel psát referát na něco podobného (před 10 lety a více), to je v podstatě to, co jsem udělal ...

6
bethlakshmi

Doporučuji kryptografické inženýrství: zásady návrhu a praktické aplikace . Je to perfektní kniha pro vás. Popisuje, jak navrhnout a implementovat kryptosystémy z pohledu projektanta a implementátora systémů. Je to velmi pragmatická kniha s perspektivou odvozenou z dlouholetých zkušeností autorů. Slovo „inženýrství“ v názvu je skutečně vhodné. Myslím, že pro vás bude neocenitelným zdrojem, který vám pomůže upřednostnit to, co byste měli věnovat většině své energie starosti, co se může pokazit a jak zajistit, aby se vám tyto špatné věci nestaly.

4
D.W.

Chtěl bych také dodat, že se podíváte na Matasano crypto výzvy , jak již máte nějaké programovací dovednosti.

Z jejich webových stránek:

JAK MOHNO CRYPTO POTŘEBUJEM VĚDĚT? Žádný. O to tu jde.

CO CO POTŘEBUJEM VĚDĚT? Budete chtít být schopni kódovat zdatně v jakémkoli jazyce. Obdrželi jsme příspěvky v jazycích C, C++, Python, Ruby, Perl, Visual Basic, X86 Assembly, Haskell a LISP.

Všechny jejich výzvy jsou založeny na zranitelnostech šifrování v reálném světě, takže byste se měli učit pěkné věci, jak je vyřešit.

3
ack__

Pokud chcete porozumět teorii kryptografie, psané způsobem přístupným pro odborníky, zkuste „Úvod do moderní kryptografie“ od Katze a Lindella.

3
user432944

Naučit se kryptografii od nuly se někdy může cítit jako těžká věc, ale pokud máte správné zdroje, budete ji absolutně milovat. Toto jsou moje oblíbené weby, které vám pomohou začít se dnes učit kryptografii.

  1. Naučte se kryptografii na Kifanga pro úplné začátečníky až po pokročilejší úrovně.
  2. Praktická kryptografie je opravdu dobrá pro články o kryptanalýze
  3. Learncryptography je skvělé pro hašovací funkce
0
chris pete