před několika týdny jsem napsal dlouhý příspěvek o projektu „BULLRUN“ NSA, který podvrací moderní šifrovací standardy. Měl jsem v úmyslu se k tomu někdy vrátit, protože jsem neměl čas podrobně diskutovat o problémech. Ale pak se věci postavily do cesty. Vlastně hodně věcí. O některých z nich doufám, že budu psát v blízké budoucnosti.
ale než se tam dostanu a riskuji, že vás všechny nudím k slzám, chtěl jsem se k tomuto tématu vrátit ještě jednou, i když jen trochu pontifikovat otázku, která mě otravuje.
vidíte, instruktážní list NSA BULLRUN uvádí, že NSA porušuje několik šifrovacích technologií, z nichž některé jsou zajímavější než jiné. Jedna z těchto technologií je pro mě obzvláště překvapivá, protože prostě nedokážu přijít na to, jak by to NSA mohla dělat. V tomto extrémně dlouhém příspěvku se pokusím kopat trochu hlouběji do nejdůležitější otázky, které dnes čelí Internet.
konkrétně: jak sakra NSA porušuje SSL?
část instruktážního listu BULLRUN. Zdroj: New York Times.
abych udržel věci na cíli, udělám několik základních základních pravidel.
Za prvé, jsem si dobře vědom toho, že NSA může nainstalovat malware do vašeho počítače a pwn jakoukoli kryptografii, kterou si vyberete. To mě vůbec nezajímá, z toho prostého důvodu, že to není dobře měřítko. NSA vám to může udělat, ale nemohou to udělat pro celou populaci. A to je opravdu to, co mě znepokojuje z nedávných úniků: možnost, že NSA porušuje šifrování pro účely hromadného sledování.
ze stejného důvodu se nebudeme obávat útoků typu man-in-the-middle (MITM). I když víme, že NSA je provozuje, jsou také velmi cíleným útokem. Nejen, že jsou MITM detekovatelné, pokud je děláte ve velkém měřítku, neslučují se s tím, co víme o tom, jak NSA provádí rozsáhlé zachycení-většinou prostřednictvím rozdělovačů paprsků a kohoutků. Jinými slovy: jsme opravdu znepokojeni pasivním sledováním.
výše uvedená pravidla samozřejmě nejsou absolutní. Budeme zvažovat omezené cílené útoky na servery za předpokladu, že později umožní pasivní dešifrování velkého množství provozu; například dešifrování provozu na hlavní webové stránky. Budeme také zvažovat libovolné úpravy softwaru a hardwaru-něco, o čem víme, že NSA již dělá.
poslední bod: abych zabránil tomu, aby se věci dostaly z kolejí, pomohl jsem tento příspěvek rozdělit na dvě části. První bude zahrnovat útoky, které používají pouze známé techniky. Vše v této části může být implementováno zaměstnancem TAO s dostatečnou vynalézavostí a přístupem k softwaru. Druhá část, kterou jsem nazval „Tinfoil Hat Spectrum“, pokrývá zábavné a spekulativní věci — od nových útoků postranních kanálů až po obrovský kvantový počítač, který NSA drží vedle BWI.
začneme „praktickým“.
útoky, které používají známé techniky
krádež klíčů RSA. Nejviditelnější způsob, jak „crackovat“ SSL, ve skutečnosti nezahrnuje nic praskání. Proč ztrácet čas a peníze na kryptoanalýzu, když můžete jen ukrást klíče? Tento problém se týká zejména serverů nakonfigurovaných pro handshake TLS RSA, kde jediný 128bajtový serverový klíč je vše, co potřebujete k dešifrování každého minulého a budoucího připojení vytvořeného ze zařízení.
ve skutečnosti je tato technika tak zřejmá, že je těžké si představit, že NSA utrácí spoustu zdrojů na sofistikované kryptanalytické útoky. Víme, že GCHQ a NSA jsou naprosto pohodlné suborning i amerických poskytovatelů v zahraničí. A uvnitř našich hranic prokázali ochotu získat klíče TLS / SSL pomocí předvolání a příkazů gag. Pokud používáte připojení RSA k hlavní webové stránce, může být rozumné předpokládat, že klíč je již znám.
samozřejmě, i když se NSA neuchýlí k přímým opatřením, vždy existuje možnost získat klíče pomocí vzdáleného využití softwaru. Krása je, že tyto útoky nevyžadují ani vzdálené spuštění kódu. Vzhledem k správné zranitelnosti může jednoduše vyžadovat několik chybných požadavků SSL pro mapování celého obsahu haldy OpenSSL/SChannel.
zdroj: New York Times
Suborning hardwarové šifrovací čipy. Významná část provozu SSL na internetu je produkována hardwarovými zařízeními, jako jsou terminátory SSL a směrovače podporující VPN. Naštěstí nemusíme spekulovat o bezpečnosti těchto zařízení – již víme, že NSA / GCHQ spolupracují s výrobci hardwaru na „povolení“ dešifrování na několika hlavních šifrovacích čipech VPN.
dokumenty NSA nejsou jasné, jak tato schopnost funguje, nebo pokud dokonce zahrnuje SSL. Pokud ano, zřejmým odhadem je, že každý čip šifruje a exflitruje bity klíče relace pomocí „náhodných“ polí, jako jsou IVs a handshake nonces. Ve skutečnosti je to relativně snadné implementovat na neprůhledném hardwarovém zařízení. Zajímavou otázkou je, jak lze zajistit, aby tyto zadní vrátka mohla využívat pouze NSA – a nikoli konkurenční zpravodajské agentury. (Některé myšlenky na to zde.)
útoky postranních kanálů. Při analýze kryptografických algoritmů se tradičně zabýváme očekávanými vstupy a výstupy systému. Ale skutečné systémy unikají všechny druhy dalších informací. Tyto „boční kanály“ – které zahrnují provozní dobu, spotřebu zdrojů, načasování mezipaměti a emise RF — lze často použít k extrakci tajného klíčového materiálu.
dobrou zprávou je, že většina těchto kanálů je využitelná pouze tehdy, když je útočník ve fyzické blízkosti serveru TLS. Špatnou zprávou je, že existují podmínky, za kterých se útočník může přiblížit. Nejviditelnějším příkladem jsou virtualizované servery TLS v nastavení cloudu, kde chytrý útočník může sdílet fyzické prostředky s cílovým zařízením.
druhá třída útoku používá vzdálené informace o časování k pomalému obnovení klíče RSA. Tyto útoky lze deaktivovat pomocí protiopatření, jako je oslepení RSA, i když zábavně, některé „bezpečné“ hardwarové procesory mohou ve výchozím nastavení Tato protiopatření vypnout! Přinejmenším to činí hardware zranitelným vůči útokům místního uživatele a může dokonce usnadnit vzdálené obnovení klíčů RSA.
slabé generátory náhodných čísel. I když používáte silné šifry Perfect Forward Secrecy, bezpečnost TLS závisí zásadně na dostupnosti nepředvídatelných náhodných čísel. Ne náhodou se zdá, že manipulace se standardy generátoru náhodných čísel byla zvláštním zaměřením úsilí NSA.
náhodná čísla jsou kritická pro řadu prvků v TLS, ale jsou zvláště důležitá na třech místech:
- na straně klienta, během podání ruky RSA. RNG se používá ke generování RSA pre-master tajné a šifrovací polstrování. Pokud útočník dokáže předpovědět výstup tohoto generátoru, může následně dešifrovat celou relaci. Je ironií, že selhání serveru RNG je pro RSA handshake mnohem méně zničující.*
- na straně klienta nebo serveru během podání ruky Diffie-Hellman. Protože Diffie-Hellman vyžaduje příspěvek z každé strany připojení, předvídatelný RNG na obou stranách činí relaci zcela průhlednou.
- během dlouhodobého generování klíčů, zejména klíčů RSA. Pokud se to stane, jste v háji.
dobrou zprávou je, že je relativně snadné manipulovat s implementací SSL, aby bylo možné šifrovat a exfiltrovat aktuální semeno RNG. To stále vyžaduje, aby někdo fyzicky změnil knihovnu nebo nainstaloval trvalé zneužití,ale lze to provést chytře, aniž by do existujícího kódu OpenSSL přidal mnoho nového kódu. (Láska OpenSSL k funkčním ukazatelům usnadňuje manipulaci s těmito věcmi.)
pokud manipulace není váš styl, proč ne dát zadní vrátka na očích? To je přístup, který NSA přijala s Dual_EC RNG, standardizovaným NIST ve speciální publikaci 800-90. Existují přesvědčivé důkazy o tom, že NSA úmyslně vytvořil tento generátor s backdoor-ten, který jim umožňuje přerušit jakékoli připojení TLS/SSL vytvořené pomocí něj. Vzhledem k tomu, že generátor je (byl) výchozí v knihovně BSAFE RSA, měli byste očekávat, že každé připojení TLS vytvořené pomocí tohoto softwaru bude potenciálně ohroženo.
a ani jsem nezmínil plány společnosti Intel nahradit linuxové jádro RNG vlastním hardwarovým RNG.
esoterické slabiny v systémech PFS. Mnoho webových serverů, včetně Google a Facebook, nyní používá perfektní šifry Forward Secrecy jako efemeral Diffie-Hellman (DHE a ECDHE). Teoreticky tyto šifry poskytují to nejlepší ze všech možných světů: klíče přetrvávají pro jednu relaci a poté zmizí, jakmile spojení skončí. I když vás to nezachrání před problémy s RNG, krádež klíčů je mnohem obtížnější.
PFS šifry jsou dobrá věc, ale řada jemných problémů může jejich styl stísnit. Pro jednu věc, mechanismus obnovení relace může být vybíravý: klíče relace musí být buď uloženy lokálně, nebo šifrovány a rozdány uživatelům ve formě vstupenek na relace. Bohužel použití vstupenek na relace poněkud snižuje „dokonalost“ systémů PFS, protože klíče používané pro šifrování vstupenek nyní představují hlavní slabost systému. Navíc je nemůžete ani udržovat interní na jednom serveru, protože musí být sdíleny mezi všemi front-end servery webu! Ve zkratce, vypadají jako noční můra.
Poslední oblastí zájmu je validace parametrů Diffie-Hellman. Současný návrh SSL předpokládá, že skupiny DH jsou vždy poctivě generovány serverem. Škodlivá implementace však může tento předpoklad porušit a použít špatné parametry, které umožňují Odposlouchávání třetích stran. Zdá se to jako docela nepravděpodobná cesta k umožnění dohledu, ale ukazuje to, jak choulostivé jsou tyto systémy.
spektrum Staniolového klobouku
budu odkazovat na další dávku útoků jako zranitelnosti „staniolového klobouku“. Tam, kde všechny předchozí problémy využívají dobře známé techniky, každý z následujících návrhů vyžaduje zcela nové kryptanalytické techniky. To vše je způsob, jak říci, že následující část je čistá spekulace. Je samozřejmě zábavné spekulovat. Ale vyžaduje to, abychom předpokládali fakta, která nejsou důkazem. Navíc musíme být trochu opatrní, kde zastavíme.
takže od této chvíle v podstatě provádíme myšlenkový experiment. Představme si, že NSA má pasivní schopnost prolomit SSL; a navíc, že se nespoléhá na triky předchozí části. Co zbylo?
následující seznam začíná nejpravděpodobnějšími teoriemi a pracuje na skutečně šílených.
lámání RSA klíče. V našem oboru přetrvává pověst, že NSA praskne 1024bitové klíče RSA. Je pochybné, že tato fáma pramení z jakýchkoli skutečných znalostí operací NSA. Pravděpodobně je to způsobeno skutečností, že praskání 1024bitových klíčů je pro organizaci se zdroji NSA velmi proveditelné.
jak je to možné? Několik důvěryhodných vědců se pokusilo odpovědět na tuto otázku a ukázalo se, že náklady jsou nižší, než si myslíte. V roce 2003 Shamir a Tromer odhadovali 10 milionů dolarů za účelový stroj, který by mohl započítat jeden 1024bitový klíč za rok. V roce 2013 Tromer snížil tato čísla na přibližně 1 milion dolarů, což zohlednilo pokroky v hardwaru. A může být výrazně nižší. To je změna kapsy pro NSA.
v podobném duchu Bernstein, Heninger a Lange zkoumali proveditelnost praskání RSA pomocí distribuovaných sítí standardních počítačů. Jejich výsledky jsou docela znepokojující: v zásadě by cluster o velikosti botnetu Conficker v reálném životě mohl způsobit vážné násilí na 1024bitových klíčích.
vzhledem k tomu všemu se můžete zeptat, proč je tato možnost dokonce v kategorii „staniol hat“. Jednoduchá odpověď zní: protože to vlastně nikdo neudělal. To znamená, že je přinejmenším možné, že výše uvedené odhady jsou dramaticky příliš vysoké — nebo dokonce příliš nízké. Kromě toho jsou klíče RSA-1024 rychle vyřazovány. Praskání 2048 bitových klíčů by vyžadovalo významné matematické pokroky, což by nás zavedlo mnohem hlouběji do klobouku na staniol.**
praskání RC4. Na papíře podporuje TLS řadu silných šifrovacích algoritmů. V praxi je asi polovina veškerého provozu TLS zabezpečena starou šifrou RC4. A to by vás mělo znepokojovat-protože RC4 začíná ukazovat svůj věk. Ve skutečnosti, jak se používá v TLS, je již zranitelný vůči (hraničním) praktickým útokům. Vypadá to tedy jako pěkný kandidát na skutečný kryptanalytický pokrok ze strany NSA.
bohužel problém s touto teorií je, že prostě nevíme o žádném útoku, který by umožnil NSA užitečně crack RC4! Známé techniky vyžadují, aby útočník shromáždil tisíce nebo miliony šifertextů, které jsou buď (a) šifrovány souvisejícími klíči (jako ve WEP) nebo (b) obsahují stejný prostý text. Nejznámější útok proti TLS má druhou podobu-vyžaduje, aby oběť vytvořila miliardy relací, a dokonce i poté obnoví pouze pevné prvky prostého textu, jako jsou soubory cookie nebo hesla.
protiargument je, že veřejná výzkumná komunita nebyla přemýšlet velmi těžké o RC4 za posledních deset let-částečně proto, že jsme si mysleli, že to bylo tak rozbité lidé přestali používat (Jejda!) Kdybychom na to soustředili veškerou svou pozornost (nebo lépe, pozornost NSA), kdo ví, co bychom dnes měli.
pokud jste mi řekli, že NSA má jednu skutečně novou kryptanalytickou schopnost, souhlasil bych s Jakem a ukázal prstem na RC4. Většinou proto, že alternativy jsou mnohem děsivější.
Nové útoky postranních kanálů. Z větší části, zdá se, že útoky na vzdálené načasování byly zabity implementací protiopatření, jako je oslepení RSA, které zmást načasování vynásobením náhodného oslepujícího faktoru do každého šifrovaného textu před dešifrováním. Teoreticky by to mělo učinit informace o načasování v podstatě bezcenné. V praxi mnoho implementací TLS implementuje kompromisy v oslepujícím kódu, které by mohly tyto útoky vzkřísit, věci jako kvadratura oslepujícího faktoru mezi dešifrovacími operacemi, spíše než generování nového pokaždé. Je docela nepravděpodobné, že by zde došlo k útokům, ale kdo ví.
praštěné věci. Možná má NSA v rukávu něco opravdu úžasného. Problém s otevřením této Pandořiny skříňky spočívá v tom, že je opravdu těžké ji znovu zavřít. Opravdu Jerry Solinas vařil NIST P-křivky, aby podpořil nějaký úžasný nový útok(o kterém NSA věděla už v pozdních 1990ech, ale ještě jsme neobjevili)? Má NSA obrovský superpočítač s názvem TRANSLTR, který dokáže hrubou silou jakýkoli kryptosystém? Je v příloze přátelství BWI obrovský kvantový počítač? Pro odpovědi na tyto otázky můžete také jen zatřást kouzelným 8-míčem, protože nemám ponětí.
závěr
nevíme a nemůžeme znát odpověď na tyto věci a upřímně Vás to zblázní, pokud o tom začnete přemýšlet. Jediné, co můžeme opravdu udělat, je vzít NSA / GCHQ za slovo, když nám řeknou, že tyto schopnosti jsou „extrémně křehké“. To by nám mělo dát alespoň naději.
otázkou nyní je, zda dokážeme dostatečně dobře odhadnout, abychom tuto křehkost změnili z varování na slib.
poznámky:
* selhání RNG serveru by mohlo mít za následek některé předvídatelné hodnoty, jako jsou id ServerRandom a session. Útočník, který dokáže předpovědět tyto hodnoty, může být schopen spustit aktivní útoky proti protokolu — ale-alespoň v RSA ciphersuite-nepřipouští pasivní kompromis.
* * i když jsou eliminovány 1024bitové RSA klíče, mnoho serverů stále používá 1024bitové pro Diffie-Hellman (většinou z důvodů účinnosti). Útoky na tyto klíče jsou podobné útokům používaným proti RSA-hlavní rozdíl je však v tom, že pro každé nové připojení jsou generovány čerstvé Diffie-Hellmanovy ‚efemérní‘ klíče. Přerušení velkého množství provozu se zdá být docela nákladné.