néhány gondolat a kriptográfiai tervezésről

néhány héttel ezelőtt írtam egy hosszú bejegyzést a NSA ‘BULLRUN’ projektje a modern titkosítási szabványok felforgatására. Úgy terveztem, hogy valamikor visszatérek erre, mivel nem volt időm részletesen megvitatni a kérdéseket. De aztán a dolgok útban voltak. Sok mindent, ami azt illeti. Ezek közül néhányról a közeljövőben szeretnék írni.

de mielőtt odaérnék, és megkockáztatva, hogy könnyekig untatlak benneteket, még egyszer vissza akartam térni erre a témára, már csak azért is, hogy egy kicsit elgondolkodjak egy kérdésen, ami engem zavar.

látja, az NSA BULLRUN tájékoztatója megemlíti, hogy az NSA jó néhány titkosítási technológiát tör meg, amelyek közül néhány érdekesebb, mint mások. Az egyik ilyen technológia különösen meglepő számomra, mivel egyszerűen nem tudom kitalálni, hogy az NSA hogyan csinálhatja. Ebben a rendkívül hosszú bejegyzésben megpróbálok egy kicsit mélyebbre ásni az Internet mai legfontosabb kérdésében.

konkrétan: hogy a fenébe töri meg az NSA az SSL-t?

a BULLRUN tájékoztató lap része. Forrás: New York Times.

ahhoz, hogy a dolgok a cél megyek, hogy néhány alapvető szabályokat.

először is jól tudom, hogy az NSA rosszindulatú programokat telepíthet a számítógépére, és a pwn bármilyen kriptográfiát választhat. Ez egyáltalán nem érdekel, azon egyszerű oknál fogva, hogy nem méretezhető jól. Az NSA ezt megteheti veled, de nem tehetik meg egy egész lakosság számára. És ez aggaszt engem a legutóbbi kiszivárogtatásokkal kapcsolatban: az a lehetőség, hogy az NSA feltöri a titkosítást tömeges megfigyelés céljából.

ugyanezen okból nem fogunk aggódni a man-in-the-middle (MITM) támadások miatt. Bár tudjuk, hogy az NSA futtatja ezeket, ők is nagyon célzott támadások. Nem csak az MITM-ek észlelhetők, ha nagy léptékben végezzük őket, hanem nem egyeztethetők össze azzal, amit tudunk arról, hogy az NSA hogyan végez nagyszabású lehallgatást — főleg sugárelosztókon és csapokon keresztül. Más szavakkal: nagyon aggódunk a passzív megfigyelés miatt.

a fenti szabályok természetesen nem abszolútok. Figyelembe vesszük a szerverek elleni korlátozott célzott támadásokat, feltéve, hogy később lehetővé teszik a nagy mennyiségű forgalom passzív visszafejtését; például a nagyobb webhelyekre irányuló forgalom visszafejtését. Megfontoljuk a szoftverek és hardverek önkényes módosítását is — amit tudjuk, hogy az NSA már csinál.

egy utolsó pont: annak érdekében, hogy a dolgok ne menjenek le a sínekről, segítőkészen osztottam ezt a bejegyzést két részre. Az első olyan támadásokra terjed ki, amelyek csak ismert technikákat alkalmaznak. Ebben a szakaszban mindent megvalósíthat egy TAO alkalmazott, aki elegendő rugalmassággal és szoftverhez való hozzáféréssel rendelkezik. A második rész, amit az ‘Alufoil Hat Spectrum’ — nak neveztem el, a szórakoztató és spekulatív dolgokat fedi le-kezdve az új oldalsó csatorna támadásoktól egészen a hatalmas kvantumszámítógépig, amelyet az NSA a BWI mellett tart.

kezdjük a’gyakorlati’.

ismert technikákat használó támadások

RSA kulcsok lopása. Az SSL feltörésének legnyilvánvalóbb módja valójában nem jelent semmit. Miért vesztegeti az idejét és a pénzét kriptoanalízisre, amikor csak ellophatja a kulcsokat? Ez a probléma különösen aggasztó a TLS RSA kézfogáshoz konfigurált kiszolgálóknál, ahol egyetlen 128 bájtos kiszolgálókulcsra van szükség az eszközről létrehozott minden múltbeli és jövőbeli kapcsolat visszafejtéséhez.

valójában ez a technika annyira nyilvánvaló, hogy nehéz elképzelni, hogy az NSA sok erőforrást fordít kifinomult kriptanalitikus támadásokra. Tudjuk, hogy a GCHQ és az NSA tökéletesen kényelmesek még az amerikai szolgáltatók tengerentúli kiszolgálására is. És a határainkon belül hajlandóságot mutattak arra, hogy TLS/SSL kulcsokat szerezzenek be idézési hatáskörökkel és szájkosár parancsokkal. Ha RSA kapcsolatot használ egy nagyobb webhelyhez, ésszerű lehet feltételezni, hogy a kulcs már ismert.

természetesen, még akkor is, ha az NSA nem folyamodik közvetlen intézkedésekhez, mindig van lehetőség a kulcsok távoli szoftver-kihasználással történő megszerzésére. A szépség az, hogy ezek a támadások nem is igényelnek távoli kódfuttatást. A megfelelő biztonsági rés miatt egyszerűen szükség lehet egy maroknyi hibás SSL kérésre az OpenSSL / SChannel halom teljes tartalmának feltérképezéséhez.

forrás: New York Times

hardveres titkosítási chipek. Az internetes SSL forgalom jelentős részét hardvereszközök, például SSL terminátorok és VPN-kompatibilis Routerek állítják elő. Szerencsére nem kell spekulálnunk ezen eszközök biztonságáról — már tudjuk, hogy az NSA/GCHQ együttműködött a hardvergyártókkal a dekódolás engedélyezésében több fő VPN titkosítási chipen.

az NSA dokumentumai nem egyértelműek arról, hogy ez a képesség hogyan működik, vagy egyáltalán tartalmaz-e SSL-t. Ha igen, akkor nyilvánvaló, hogy minden chip titkosítja és exflitrálja a session kulcs bitjeit ‘random’ mezőkön keresztül, mint például az IVs és a handshake nonces. Valójában ezt viszonylag könnyű megvalósítani egy átlátszatlan hardvereszközön. Az érdekes kérdés az, hogyan lehet biztosítani, hogy ezeket a hátsó ajtókat csak az NSA tudja kihasználni-a rivális hírszerző ügynökségek nem. (Néhány gondolat erről itt.)

oldalcsatornás támadások. A kriptográfiai algoritmusok elemzésekor hagyományosan a rendszer várható bemeneteivel és kimeneteivel foglalkozunk. De a valódi rendszerek mindenféle extra információt kiszivárogtatnak. Ezek az ‘oldalsó csatornák’ — amelyek magukban foglalják a működési időt, az erőforrás-felhasználást, a gyorsítótár időzítését és az RF-kibocsátást-gyakran felhasználhatók titkos kulcsanyagok kinyerésére.

a jó hír az, hogy ezeknek a csatornáknak a többsége csak akkor használható, ha a támadó fizikai közelségben van egy TLS-kiszolgálóval. A rossz hír az, hogy vannak olyan feltételek, amelyekben a támadó közel kerülhet. A legkézenfekvőbb példa a virtualizált TLS-kiszolgálók a felhőbeállításban, ahol egy okos támadó fizikai erőforrásokat oszthat meg a céleszközzel.

a támadás második osztálya távoli időzítési információkat használ az RSA kulcs lassú helyreállításához. Ezeket a támadásokat ellenintézkedésekkel lehet letiltani, például az RSA vakításával, bár mulatságosan néhány ‘biztonságos’ hardveres társprocesszor alapértelmezés szerint kikapcsolhatja ezeket az ellenintézkedéseket! Legalábbis ez sebezhetővé teszi a hardvert a helyi felhasználók támadásaival szemben, sőt megkönnyítheti az RSA kulcsok távoli helyreállítását.

gyenge véletlenszám-generátorok. Még akkor is, ha erős Perfect Forward titoktartási titkosítást használ, a TLS biztonsága alapvetően a kiszámíthatatlan véletlen számok elérhetőségétől függ. Nem véletlen, hogy a véletlenszám-generátor szabványainak manipulálása az NSA erőfeszítéseinek különös középpontjában állt.

a véletlen számok kritikusak a TLS számos eleméhez, de három helyen különösen fontosak:

  1. az ügyfél oldalán, az RSA kézfogás során. Az RNG az RSA pre-master secret és encryption padding létrehozására szolgál. Ha a támadó meg tudja jósolni ennek a generátornak a kimenetét, akkor később visszafejtheti az egész munkamenetet. Ironikus módon az RNG szerver meghibásodása sokkal kevésbé pusztító az RSA kézfogása szempontjából.*
  2. kliens vagy szerver oldalon, a Diffie-Hellman kézfogás(ok) során. Mivel a Diffie-Hellman a kapcsolat mindkét oldaláról hozzájárulást igényel, a kiszámítható RNG mindkét oldalon teljesen átláthatóvá teszi a munkamenetet.
  3. hosszú távú kulcsgenerálás során, különösen az RSA kulcsok esetében. Ha ez megtörténik, megszívtad.
és nem kell olyan kifinomultnak lenned, hogy gyengítsd a véletlenszám-generátort. Ezek a generátorok már meglepően törékenyek, és borzasztóan nehéz észlelni, ha valaki elromlik. A Debian karbantartói 2008-ban szépen megfogalmazták ezt a pontot, amikor egy hibás kódtisztítás az OpenSSL tényleges entrópiáját mindössze 16 bitre csökkentette. Valójában az RNG-k annyira sérülékenyek, hogy a kihívás itt nem gyengíti az RNG — t — ezt minden billentyűzettel rendelkező idióta megteheti-anélkül, hogy a megvalósítást triviálisan sebezhetővé tenné mindenki más számára.

a jó hír az, hogy viszonylag könnyű manipulálni egy SSL implementációt, hogy titkosítsa és kiszűrje a jelenlegi RNG magot. Ehhez még mindig szükség van valakire, hogy fizikailag megváltoztassa a könyvtárat, vagy telepítsen egy tartós kihasználást, de okosan megtehető anélkül, hogy sok új kódot hozzáadna a meglévő OpenSSL kódhoz. (Az OpenSSL függvénymutatók iránti szeretete különösen megkönnyíti a dolgok manipulálását.)

ha a manipulálás nem a te stílusod, miért nem teszed a hátsó ajtót szem elől? Ezt a megközelítést alkalmazta az NSA a Dual_EC RNG-vel, amelyet a NIST szabványosított a 800-90 különkiadásban. Meggyőző bizonyíték van arra, hogy az NSA szándékosan tervezte ezt a generátort egy hátsó ajtóval — amely lehetővé teszi számukra, hogy megszakítsák az ezzel létrehozott TLS/SSL kapcsolatot. Mivel a generátor (volt) az alapértelmezett az RSA BSAFE könyvtárában, számíthat arra, hogy az adott szoftverrel létrehozott minden TLS-kapcsolat potenciálisan veszélybe kerül.

és még nem is említettem az Intel terveit, hogy a Linux kernel RNG-t saját hardveres RNG-re cserélje.

ezoterikus gyengeségek a PFS rendszerekben. Sok webszerver, köztük a Google és a Facebook, most már tökéletes előre titoktartási titkosítást használ, mint például az efemer Diffie-Hellman (DHE és ECDHE). Elméletileg ezek a Rejtjelek a lehető legjobbat nyújtják: a kulcsok egy munkamenetig fennmaradnak, majd eltűnnek, ha a kapcsolat véget ér. Bár ez nem ment meg az RNG-problémáktól, sokkal nehezebbé teszi a kulcslopást.

a PFS-titkosítások jó dolog, de számos finom kérdés görcsölheti stílusukat. Egyrészt, a munkamenet folytatásának mechanizmusa válogatós lehet: a munkamenetkulcsokat helyileg kell tárolni, vagy titkosítani kell, és a felhasználóknak munkamenet-jegyek formájában kell átadni. Sajnos a session jegyek használata némileg csökkenti a PFS rendszerek ‘tökéletességét’, mivel a jegyek titkosításához használt kulcsok ma már a rendszer egyik fő gyengeségét jelentik. Ráadásul, nem is tarthatja őket egy szerveren belül, mivel meg kell osztani őket a webhely összes front-end szervere között! Röviden, úgy tűnik, mint egy rémálom.

az utolsó aggodalomra okot adó terület a Diffie-Hellman paraméterek validálása. A jelenlegi SSL kialakítás feltételezi, hogy a DH csoportokat mindig őszintén generálja a szerver. De egy rosszindulatú megvalósítás megsértheti ezt a feltételezést, és rossz paramétereket használhat, amelyek lehetővé teszik a harmadik fél lehallgatását. Ez elég valószínűtlennek tűnik a megfigyelés engedélyezéséhez, de megmutatja, milyen kényesek ezek a rendszerek.

a Tinfoil Hat Spectrum

a következő támadási tételt ‘tinfoil hat’ sebezhetőségként fogom hivatkozni. Ahol az előző kérdések mind jól ismert technikákat használnak, az alábbi javaslatok mindegyike teljesen új kriptanalitikus technikákat igényel. Mindez azt jelenti, hogy a következő szakasz tiszta spekuláció. Természetesen szórakoztató spekulálni. De ez megköveteli, hogy olyan tényeket feltételezzünk, amelyek nem bizonyítékok. Sőt, egy kicsit óvatosnak kell lennünk azzal kapcsolatban, hogy hol állunk meg.

tehát innentől kezdve lényegében egy gondolatkísérletet hajtunk végre. Képzeljük el, hogy az NSA passzív SSL-feltörési képességgel rendelkezik; továbbá, hogy nem támaszkodik az előző szakasz trükkjeire. Mi maradt?

a következő lista a legvalószínűbb elméletekkel kezdődik, és az igazán őrült felé halad.

az RSA kulcsok feltörése. Van egy állandó pletyka a mi területünkön, hogy az NSA feltöri az 1024 bites RSA kulcsokat. Kétséges, hogy ez a pletyka az NSA műveleteinek valódi ismeretéből származik. Valószínűbb, hogy az a tény vezérli, hogy az 1024 bites kulcsok feltörése nagyon megvalósítható egy NSA erőforrásokkal rendelkező szervezet számára.

hogyan megvalósítható? Számos hiteles kutató megpróbálta megválaszolni ezt a kérdést, és kiderül, hogy a költség alacsonyabb, mint gondolná. 2003-ban Shamir és Tromer 10 millió dollárt becsült egy erre a célra épített gépre, amely évente egy 1024 bites kulcsot képes figyelembe venni. 2013-ban a Tromer ezeket a számokat körülbelül 1 millió dollárra csökkentette, figyelembe véve a hardver fejlődését. És lényegesen alacsonyabb is lehet. Ez egy kis aprópénz az NSA – nek.

hasonló módon Bernstein, Heninger és Lange megvizsgálták az RSA feltörésének megvalósíthatóságát szabványos PC-k elosztott hálózatai segítségével. Eredményeik meglehetősen zavaróak: alapvetően egy valós Conficker botnet méretű klaszter komoly erőszakot okozhat az 1024 bites kulcsokkal szemben.

Mindezeket figyelembe véve felmerülhet a kérdés, hogy ez a lehetőség miért szerepel még az alufólia kalap kategóriában is. A válasz egyszerű: mert valójában senki sem tette meg. Ez azt jelenti, hogy legalább elképzelhető, hogy a fenti becslések drámaian túl magasak — vagy akár túl alacsonyak. Ráadásul az RSA-1024 kulcsokat gyorsan fokozatosan megszüntetik. A 2048 bites kulcsok feltörése jelentős matematikai előrelépéseket igényelne, ami sokkal mélyebbre visz minket az alufólia kalapba.**

repedés RC4. Papíron a TLS számos erős titkosítási algoritmust támogat. A gyakorlatban az összes TLS-forgalom körülbelül felét a nyikorgó régi RC4 rejtjel biztosítja. Ennek pedig aggódnia kell — mert az RC4 kezdi megmutatni korát. Valójában, ahogy a TLS-ben használják, már sebezhető a (határvonalas) gyakorlati támadásokkal szemben. Így úgy tűnik, mint egy szép jelölt egy igazi kriptanalitikus előrelépés az NSA részéről.

sajnos ennek az elméletnek az a problémája, hogy egyszerűen nem tudunk olyan támadásról, amely lehetővé tenné az NSA számára az RC4 hasznos feltörését! Az ismert technikák megkövetelik, hogy a támadó több ezer vagy millió rejtjelszöveget gyűjtsön, amelyek vagy (a) kapcsolódó kulcsokkal vannak titkosítva (mint a WEP-ben), vagy (b) ugyanazt a sima szöveget tartalmazzák. A TLS elleni legismertebb támadás az utóbbi formát ölti — megköveteli az áldozattól, hogy több milliárd munkamenetet hozzon létre, sőt akkor is csak rögzített egyszerű szöveges elemeket, például sütiket vagy jelszavakat állít vissza.

az ellenérv az, hogy az állami kutatói közösség az elmúlt évtizedben nem nagyon gondolkodott az RC4 — en-részben azért, mert azt hittük, hogy annyira megtört, hogy az emberek abbahagyták a használatát (Hoppá!) Ha minden figyelmünket erre összpontosítottuk volna (vagy még jobb, az NSA figyelmét), ki tudja, mi lenne ma.

ha azt mondanád, hogy az NSA-nek van egy igazán új kriptanalitikus képessége, egyetértek Jake-kel, és az RC4-re mutatnék. Leginkább azért, mert az alternatívák sokkal ijesztőbbek.

új oldalcsatornás támadások. Javarészt, úgy tűnik, hogy a távoli időzítési támadásokat olyan ellenintézkedések végrehajtása ölte meg, mint pl RSA vakítás, amelyek megzavarják az időzítést azáltal, hogy a dekódolás előtt véletlenszerű vakítási tényezőt szoroznak az egyes rejtjelszövegekbe. Elméletileg ez lényegében értéktelenné teszi az időzítési információkat. A gyakorlatban sok TLS megvalósítás olyan kompromisszumokat valósít meg a vakító kódban, amelyek feltámaszthatják ezeket a támadásokat, például egy vakító tényező négyzetét a dekódolási műveletek között, ahelyett, hogy minden alkalommal újat generálnának. Elég valószínűtlen, hogy itt vannak támadások, de ki tudja.

ostoba dolgok. Talán az NSA-nek van valami igazán csodálatos a tarsolyában. A Pandora szelencéjének kinyitásával az a probléma, hogy nagyon nehéz újra bezárni. Vajon Jerry Solinas tényleg szakács a NIST P-görbék, hogy támogassa néhány csodálatos új támadás (amely NSA tudott módon vissza a 1990-es évek végén, de még nem fedezték fel)? Van-e az NSA-nek egy transtr nevű óriási szuperszámítógépe, amely brute-force bármilyen kriptorendszert képes? Van egy hatalmas kvantum számítógép a BWI barátság melléklet? A választ ezekre a kérdésekre akkor is csak rázza a mágikus 8-Ball, mert én nem nyom.

következtetés

nem tudjuk és nem is tudjuk a választ ezekre a dolgokra, és őszintén szólva megőrjít, ha elkezdesz gondolkodni rajta. Csak annyit tehetünk, hogy az NSA/GCHQ szavukat vesszük, amikor azt mondják nekünk, hogy ezek a képességek rendkívül törékenyek. Ez legalább reményt adhat nekünk.

a kérdés most az, hogy elég jól kitaláljuk-e, hogy ezt a törékenységet figyelmeztetésből ígéretgé változtassuk.
Megjegyzések:

* a kiszolgáló RNG meghibásodása néhány kiszámítható értéket eredményezhet, mint például a ServerRandom és a munkamenet-azonosítók. A támadó, aki meg tudja jósolni ezeket az értékeket, képes lehet aktív támadásokat végrehajtani a protokoll ellen, de — legalábbis az RSA ciphersuite — ban-nem ismeri el a passzív kompromisszumot.

** annak ellenére, hogy az 1024 bites RSA kulcsok megszűnnek, sok szerver továbbra is 1024 bitet használ a Diffie-Hellman számára (főleg hatékonysági okokból). Ezeknek a kulcsoknak a támadása hasonló az RSA elleni támadásokhoz — azonban a fő különbség az, hogy minden új kapcsolathoz friss Diffie-Hellman ‘efemer’ kulcsokat generálnak. A nagy mennyiségű forgalom megszakítása meglehetősen költségesnek tűnik.

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.