några tankar om kryptografisk teknik

för några veckor sedan skrev jag ett långt inlägg om NSA: s ’BULLRUN’ – projekt för att undergräva moderna krypteringsstandarder. Jag hade tänkt att komma tillbaka till detta någon gång, eftersom jag inte hade tid att diskutera frågorna i detalj. Men då kom saker i vägen. Många saker, faktiskt. Några som jag hoppas kunna skriva om inom en snar framtid.

men innan jag kommer dit, och med risken att tråkiga er alla till tårar, ville jag komma tillbaka till detta ämne åtminstone en gång till, om bara för att pontificera lite om en fråga som har buggat mig.

du ser, NSA BULLRUN briefing sheet nämner att NSA har brutit en hel del krypteringstekniker, varav några är mer intressanta än andra. En av dessa tekniker är särskilt förvånande för mig, eftersom jag bara inte kan räkna ut hur NSA kan göra det. I det här extremt långa inlägget ska jag försöka gräva lite djupare i den viktigaste frågan som Internet står inför idag.

specifikt: hur i helvete bryter NSA SSL?

avsnitt av BULLRUN briefing sheet. Källa: New York Times.

för att hålla saker på mål ska jag göra några grundläggande grundregler.

först är jag väl medveten om att NSA kan installera skadlig kod på din dator och pwn vilken kryptografi du väljer. Det intresserar mig inte alls, av den enkla anledningen att det inte skalar bra. NSA kan göra det här mot dig, men de kan inte göra det för en hel befolkning. Och det är verkligen det som oroar mig för de senaste läckorna: möjligheten att NSA bryter kryptering för massövervakning.

av samma anledning kommer vi inte att oroa oss för man-in-the-middle (MITM) attacker. Medan vi vet att NSA kör dessa, är de också en mycket riktad attack. Inte bara är MITMs detekterbara om du gör dem i stor skala, de överensstämmer inte med vad vi vet om hur NSA gör storskalig avlyssning-mestadels via stråldelare och kranar. Med andra ord: vi är verkligen bekymrade över passiv övervakning.

reglerna ovan är naturligtvis inte absoluta. Vi kommer att överväga begränsade riktade attacker på servrar, förutsatt att de senare tillåter passiv dekryptering av stora mängder trafik; t.ex. dekryptering av trafik till större webbplatser. Vi kommer också att överväga godtyckliga ändringar av programvara och hårdvara — något vi vet att NSA redan gör.

en sista punkt: för att hålla saker från att gå av skenorna har jag hjälpt till att dela upp det här inlägget i två sektioner. Den första kommer att täcka attacker som endast använder kända tekniker. Allt i det här avsnittet kan implementeras av en TAO-anställd med tillräckligt med gumption och tillgång till programvara. Det andra avsnittet, som jag har titeln ’Tinfoil Hat Spectrum’ täcker de roliga och spekulativa sakerna — allt från nya sidokanalattacker hela vägen till den enorma kvantdatorn som NSA håller bredvid BWI.

vi börjar med ’praktisk’.

attacker som använder kända tekniker

stöld av RSA-nycklar. Det mest uppenbara sättet att ’knäcka’ SSL egentligen inte innebära sprickbildning något. Varför slösa tid och pengar på kryptanalys när du bara kan stjäla nycklarna? Det här problemet är särskilt oroande i servrar som är konfigurerade för TLS RSA-handskakningen, där en enda 128-byte-servernyckel är allt du behöver för att dekryptera varje tidigare och framtida anslutning från enheten.

faktum är att denna teknik är så uppenbar att det är svårt att föreställa sig att NSA spenderar mycket resurser på sofistikerade kryptanalytiska attacker. Vi vet att GCHQ och NSA är helt bekväma suborning även amerikanska leverantörer utomlands. Och inom våra gränser har de visat en vilja att få TLS/SSL-nycklar med hjälp av stämningsbefogenheter och gag-order. Om du använder en RSA-anslutning till en stor webbplats kan det vara förnuftigt att anta att nyckeln redan är känd.

naturligtvis, även om NSA inte tillgriper direkta åtgärder, finns det alltid möjlighet att få nycklar via en fjärrprogramvara. Skönheten är att dessa attacker inte ens kräver fjärrkörning av kod. Med rätt sårbarhet kan det helt enkelt kräva en handfull missbildade SSL-förfrågningar för att kartlägga hela innehållet i OpenSSL/SChannel-högen.

källa: New York Times

Suborning hårdvarukrypteringschips. En betydande del av SSL-trafiken på Internet produceras av hårdvaruenheter som SSL-terminatorer och VPN-aktiverade routrar. Lyckligtvis behöver vi inte spekulera om säkerheten för dessa enheter — vi vet redan att NSA/GCHQ har samarbetat med hårdvarutillverkare för att ’aktivera’ dekryptering på flera stora VPN-krypteringschips.

NSA-dokumenten är inte tydliga på hur denna funktion fungerar, eller om det till och med involverar SSL. Om det gör det är det uppenbara gissningen att varje chip krypterar och exflitrates bitar av sessionsnyckeln via ’slumpmässiga’ fält som IVs och handskaknings nonces. Det är faktiskt relativt enkelt att implementera på en ogenomskinlig hårdvaruenhet. Den intressanta frågan är hur man säkerställer att dessa bakdörrar endast kan utnyttjas av NSA — och inte av rivaliserande underrättelsetjänster. (Några tankar om det här.)

sidokanalattacker. Traditionellt när vi analyserar kryptografiska algoritmer handlar vi om de förväntade ingångarna och utgångarna i systemet. Men riktiga system läcker ALLA typer av extra information. Dessa sidokanaler-som inkluderar driftstid, resursförbrukning, cache — timing och RF-utsläpp-kan ofta användas för att extrahera hemligt nyckelmaterial.

den goda nyheten är att de flesta av dessa kanaler endast kan utnyttjas när angriparen är i fysisk närhet till en TLS-server. Den dåliga nyheten är att det finns förhållanden där angriparen kan komma nära. Det mest uppenbara exemplet handlar om virtualiserade TLS-servrar i molninställningen, där en smart angripare kan dela fysiska resurser med målenheten.

en andra klass av attack använder fjärrtidsinformation för att långsamt återställa en RSA-nyckel. Dessa attacker kan inaktiveras via motåtgärder såsom RSA bländande, men underhållande, vissa ’säkra’ hårdvara co-processorer kan faktiskt stänga av dessa motåtgärder som standard! Åtminstone gör detta hårdvaran sårbar för attacker från en lokal användare, och kan till och med underlätta fjärråterställning av RSA-nycklar.

svaga slumptalsgeneratorer. Även om du använder starka Perfect Forward Secrecy ciphersuites, beror TLS-säkerheten i grunden på tillgängligheten av oförutsägbara slumptal. Inte tillfälligt verkar manipulering med slumptalsgeneratorstandarder ha varit ett särskilt fokus för NSA: s ansträngningar.

slumptal är kritiska för ett antal element i TLS, men de är särskilt viktiga på tre ställen:

  1. på klientsidan, under RSA handskakning. RNG används för att generera RSA pre-master hemlighet och kryptering stoppning. Om angriparen kan förutsäga utgången från denna generator kan hon därefter dekryptera hela sessionen. Ironiskt nog är ett fel på servern RNG mycket mindre förödande för RSA-handskakningen.*
  2. på klient-eller serversidan, under Diffie-Hellman-handskakningen. Eftersom Diffie-Hellman kräver ett bidrag från varje sida av anslutningen, gör en förutsägbar RNG på vardera sidan sessionen helt transparent.
  3. under långsiktig nyckelgenerering, särskilt av RSA-nycklar. Om detta händer är du körd.
och du behöver bara inte vara så sofistikerad för att försvaga en slumptalsgenerator. Dessa generatorer är redan förvånansvärt bräckliga, och det är väldigt svårt att upptäcka när man är trasig. Debians underhållare gjorde denna punkt vackert tillbaka i 2008 när en felaktig kodrensning reducerade den effektiva entropin av OpenSSL till bara 16 bitar. Faktum är att RNGs är så sårbara att utmaningen här inte försvagar RNG — någon idiot med ett tangentbord kan göra det — det gör det utan att göra genomförandet trivialt sårbart för alla andra.

den goda nyheten är att det är relativt enkelt att manipulera med en SSL-implementering för att få den att kryptera och exfiltrera det nuvarande RNG-fröet. Detta kräver fortfarande att någon fysiskt ändrar biblioteket eller installerar ett beständigt utnyttjande, men det kan göras smart utan att ens lägga till mycket ny kod till den befintliga OpenSSL-koden. (Openssls kärlek till funktionspekare gör det särskilt lätt att manipulera med dessa saker.)

om manipulering inte är din stil, varför inte sätta bakdörren i vanlig syn? Det är det tillvägagångssätt som NSA tog med Dual_EC RNG, standardiserad av NIST i Specialpublikation 800-90. Det finns övertygande bevis för att NSA medvetet konstruerade denna generator med en bakdörr — en som gör det möjligt för dem att bryta alla TLS/SSL-anslutningar som görs med den. Eftersom generatorn är (var) standard i RSA: s BSAFE-bibliotek, bör du förvänta dig att varje TLS-anslutning som görs med den programvaran potentiellt äventyras.

och jag har inte ens nämnt Intels planer på att ersätta Linux-kärnan RNG med sin egen hårdvara RNG.

esoteriska svagheter i PFS-system. Många webbservrar, inklusive Google och Facebook, använder nu Perfect Forward Secrecy ciphersuites som efemära Diffie-Hellman (DHE och ECDHE). I teorin ger dessa ciphersuites det bästa av alla möjliga världar: nycklar kvarstår för en session och försvinner sedan när anslutningen är över. Även om detta inte sparar dig från RNG-problem, gör det nyckelstöld mycket svårare.

PFS ciphersuites är en bra sak, men en mängd subtila problem kan krama sin stil. För en sak, sessionen återupptagande mekanism kan vara petiga: sessionsnycklar måste antingen lagras lokalt eller krypteras och ges ut till användare i form av sessionsbiljetter. Tyvärr minskar användningen av sessionsbiljetter något av PFS-systemens ’perfektion’, eftersom nycklarna som används för att kryptera biljetterna nu utgör en stor svaghet i systemet. Dessutom kan du inte ens hålla dem interna till en server, eftersom de måste delas mellan alla webbplatsens front-end-servrar! Kort sagt, de verkar som en mardröm.

ett sista problemområde är valideringen av Diffie-Hellman-parametrar. Den nuvarande SSL-designen förutsätter att DH-grupper alltid genereras ärligt av servern. Men en skadlig implementering kan bryta mot detta antagande och använda dåliga parametrar, vilket möjliggör avlyssning av tredje part. Detta verkar vara en ganska osannolik väg för att möjliggöra övervakning, men det visar hur känsliga dessa system är.

Tinfoil Hat Spectrum

jag kommer att hänvisa till nästa sats av attacker som ’tinfoil hat’ sårbarheter. Där de tidigare frågorna alla utnyttjar välkända tekniker, var och en av följande förslag kräver helt nya kryptanalytiska tekniker. Allt detta är ett sätt att säga att följande avsnitt är ren spekulation. Kul att spekulera förstås. Men det kräver att vi antar fakta som inte är bevis. Dessutom måste vi vara lite försiktiga med var vi slutar.

så härifrån utför vi i huvudsak ett tankeexperiment. Låt oss föreställa oss att NSA har en passiv SSL-brytningsförmåga; och dessutom att den inte litar på knepen i föregående avsnitt. Vad finns kvar?

följande lista börjar med de mest’ troliga ’ teorierna och arbetar mot de verkligt galen.

bryta RSA nycklar. Det finns ett ihållande rykte inom vårt område att NSA knäcker 1024-bitars RSA-nycklar. Det är tveksamt att detta rykte härrör från någon verklig kunskap om NSA-operationer. Mer sannolikt drivs det av det faktum att sprickbildning av 1024-bitars nycklar är mycket genomförbart för en organisation med NSA: s resurser.

hur genomförbart? Flera trovärdiga forskare har försökt svara på denna fråga, och det visar sig att kostnaden är lägre än du tror. Långt tillbaka i 2003 uppskattade Shamir och Tromer $10 miljoner för en specialbyggd maskin som kunde faktor en 1024-bitars nyckel per år. Under 2013 minskade Tromer dessa siffror till cirka 1 miljon dollar, med hänsyn till hårdvaruframsteg. Och det kan vara betydligt lägre. Detta är pocket förändring för NSA.

på liknande sätt undersökte Bernstein, Heninger och Lange möjligheten att knäcka RSA med distribuerade nätverk av standarddatorer. Deras resultat är ganska störande: i princip kan ett kluster om storleken på det verkliga Conficker botnet göra allvarligt våld mot 1024-bitars nycklar.

med tanke på allt detta kan du fråga varför denna möjlighet även finns i kategorin ’tinfoil hat’. Det enkla svaret är: för att ingen faktiskt har gjort det. Det betyder att det är åtminstone tänkbart att uppskattningarna ovan är dramatiskt för höga — eller till och med för låga. Dessutom fasas RSA-1024-tangenterna snabbt ut. Att knäcka 2048 bitars nycklar skulle kräva betydande matematiska framsteg, vilket tar oss mycket djupare in i tinfoilhatten.**

sprickbildning RC4. På papper stöder TLS en mängd starka krypteringsalgoritmer. I praktiken säkras ungefär hälften av all TLS-trafik med den knarriga gamla RC4-chifferet. Och detta borde oroa dig — för RC4 börjar visa sin ålder. Faktum är att det som används i TLS redan är sårbart för (borderline) praktiska attacker. Således verkar det som en trevlig kandidat för ett sant kryptanalytiskt framsteg från NSA: s sida.

tyvärr är problemet med denna teori att vi helt enkelt inte känner till någon attack som skulle göra det möjligt för NSA att med fördel knäcka RC4! De kända teknikerna kräver att en angripare samlar tusentals eller miljoner chiffertexter som antingen (A) krypteras med relaterade nycklar (som i WEP) eller (b) innehåller samma klartext. Den mest kända attacken mot TLS tar den senare formen – det kräver att offret etablerar miljarder sessioner, och även då återvinner det bara fasta klartextelement som cookies eller lösenord.

motargumentet är att det offentliga forskarsamhället inte har tänkt mycket hårt på RC4 under det senaste decenniet – delvis för att vi trodde att det var så trasiga människor hade slutat använda det (oops!) Om vi hade fokuserat all vår uppmärksamhet på det (eller bättre, NSA: s uppmärksamhet), vem vet vad vi skulle ha idag.

om du sa till mig att NSA hade en riktigt ny kryptanalytisk förmåga, skulle jag hålla med Jake och peka fingret på RC4. Mest för att alternativen är mycket skrämmande.

nya sidokanalattacker. För det mesta verkar avlägsna tidsattacker ha dödats av genomförandet av motåtgärder som RSA-blindning, vilket förvirrar timing genom att multiplicera en slumpmässig bländande faktor i varje chiffertext före dekryptering. I teorin borde detta göra tidsinformation väsentligen värdelös. I praktiken implementerar många TLS-implementeringar kompromisser i den bländande koden som kan återuppliva dessa attacker, saker som att kvadrera en bländande faktor mellan dekrypteringsoperationer, snarare än att generera en ny varje gång. Det är ganska osannolikt att det finns attacker här, men vem vet.

fåniga saker. Kanske har NSA något riktigt fantastiskt i ärmen. Problemet med att öppna denna Pandoras ask är att det verkligen är svårt att få den stängd igen. Kokade Jerry Solinas verkligen NIST P-kurvorna för att stödja en fantastisk ny attack (vilken NSA visste om vägen tillbaka i slutet av 1990-talet, men vi har ännu inte upptäckt)? Har NSA en jätte superdator som heter TRANSLATR som kan brute-force något kryptosystem? Finns det en jätte kvantdator på BWI Friendship annex? För svar på dessa frågor kan du lika gärna bara skaka Magic 8-Ball, För jag har ingen aning.

slutsats

vi vet inte och kan inte veta svaret på dessa saker, och ärligt talat kommer det att göra dig galen om du börjar tänka på det. Allt vi verkligen kan göra är att ta NSA / GCHQ på deras ord när de säger att dessa förmågor är’extremt bräckliga’. Det borde åtminstone ge oss hopp.

frågan är nu om vi kan gissa tillräckligt bra för att göra den bräckligheten från en varning till ett löfte.
anmärkningar:

* ett fel på serverns RNG kan resultera i vissa förutsägbara värden som ServerRandom och sessions-ID. En angripare som kan förutsäga dessa värden kanske kan köra aktiva attacker mot protokollet, men — i RSA ciphersuite, åtminstone — erkänner de inte passiv kompromiss.

* * även om 1024-bitars RSA-nycklar elimineras, använder många servrar fortfarande 1024-bitars för Diffie-Hellman (mestadels av effektivitetsskäl). Attackerna på dessa nycklar liknar de som används mot RSA-men den stora skillnaden är att färska Diffie-Hellman ’efemära’ nycklar genereras för varje ny anslutning. Att bryta stora mängder trafik verkar ganska dyrt.

Lämna ett svar

Din e-postadress kommer inte publiceras.