et par tanker om kryptografisk teknik

for et par uger siden skrev jeg et langt indlæg om NSA ‘s’ BULLRUN ‘ projekt for at undergrave moderne krypteringsstandarder. Jeg havde tænkt mig at komme tilbage til dette på et tidspunkt, da jeg ikke havde tid til at diskutere problemerne i detaljer. Men så kom tingene i vejen. En masse ting, faktisk. Nogle af dem vil jeg gerne skrive om i den nærmeste fremtid.

men før jeg kommer derhen, og med risiko for at kede jer alle til tårer, ville jeg komme tilbage til dette emne mindst en gang til, hvis kun for at pontificere lidt om et spørgsmål, der har bugget mig.

du ser, NSA BULLRUN briefing sheet nævner, at NSA har brudt en hel del krypteringsteknologier, hvoraf nogle er mere interessante end andre. En af disse teknologier er særligt overraskende for mig, da jeg bare ikke kan finde ud af, hvordan NSA kan gøre det. I dette ekstremt lange indlæg vil jeg prøve at grave lidt dybere ned i det vigtigste spørgsmål, som internettet står over for i dag.

specifikt: hvordan i helvede bryder NSA SSL?

afsnit af BULLRUN briefing sheet. Kilde: Ny Tid.

for at holde tingene på mål vil jeg lave et par grundlæggende grundregler.

for det første er jeg klar over, at NSA kan installere ondsindet program på din computer og putte enhver kryptografi, du vælger. Det interesserer mig slet ikke, af den simple grund, at det ikke skalerer godt. NSA kan gøre dette mod dig, men de kan ikke gøre det for en hel befolkning. Og det er virkelig det, der bekymrer mig om de nylige lækager: muligheden for, at NSA bryder kryptering med henblik på masseovervågning.

af samme grund vil vi ikke bekymre os om man-in-the-middle (MITM) angreb. Mens vi ved, at NSA kører disse, er de også et meget målrettet angreb. Ikke alene er MITM ‘ er detekterbare, hvis du gør dem i stor skala, de sammenligner ikke med det, vi ved om, hvordan NSA gør storstilet aflytning-hovedsagelig via strålesplittere og vandhaner. Med andre ord: vi er virkelig bekymrede over passiv overvågning.

reglerne ovenfor er ikke absolutte, selvfølgelig. Vi vil overveje begrænsede målrettede angreb på servere, forudsat at de senere tillader passiv dekryptering af store mængder trafik; f.eks. dekryptering af trafik til større hjemmesider. Vi vil også overveje vilkårlige ændringer af programmer og udstyr — noget vi ved, at NSA allerede gør.

et sidste punkt: for at holde tingene fra at gå ud af skinnerne, har jeg hjælpsomt opdelt dette indlæg i to sektioner. Den første vil dække angreb, der kun bruger kendte teknikker. Alt i dette afsnit kan implementeres af en TAO-medarbejder med tilstrækkelig gumption og adgang til programmer. Det andet afsnit, som jeg har titlen ‘Tinfoil Hat Spectrum’ dækker de sjove og spekulative ting — lige fra nye sidekanalangreb hele vejen til den store kvantecomputer, som NSA holder ved siden af.

vi starter med det ‘praktiske’.

angreb, der bruger kendte teknikker

tyveri af RSA-nøgler. Den mest oplagte måde at ‘knække’ SSL involverer ikke rigtig at knække noget. Hvorfor spilde tid og penge på kryptanalyse, når du bare kan stjæle nøglerne? Dette problem er af særlig bekymring i servere, der er konfigureret til TLS RSA-håndtrykket, hvor en enkelt 128-byte-servernøgle er alt hvad du behøver for at dekryptere enhver tidligere og fremtidig forbindelse, der er oprettet fra enheden.

faktisk er denne teknik så indlysende, at det er svært at forestille sig, at NSA bruger mange ressourcer på sofistikerede kryptanalytiske angreb. Vi ved, at NSA og NSA er helt komfortable suborning selv amerikanske udbydere i udlandet. Og inden for vores grænser har de demonstreret en vilje til at få TLS/SSL-nøgler ved hjælp af stævningsbeføjelser og gag-ordrer. Hvis du bruger en RSA-forbindelse til en større hjemmeside, kan det være fornuftigt at antage, at nøglen allerede er kendt.

selvfølgelig, selv hvor NSA ikke ty til direkte foranstaltninger, er der altid mulighed for at få nøgler via en fjernbetjening udnytte. Skønheden er, at disse angreb ikke engang kræver fjernkørsel af kode. I betragtning af den rigtige sårbarhed kan det simpelthen kræve en håndfuld misdannede SSL-anmodninger for at kortlægge det fulde indhold af OpenSSL/SChannel-bunken.

kilde: Ny York Times

underborning af krypteringschips. En betydelig del af SSL-trafikken på internettet produceres af udstyrsenheder som SSL-terminatorer og VPN-aktiverede routere. Heldigvis behøver vi ikke at spekulere i sikkerheden på disse enheder-vi ved allerede, at NSA har samarbejdet med maskinproducenter for at ‘aktivere’ dekryptering på flere store VPN-krypteringschips.

NSA-dokumenterne er ikke klare på, hvordan denne funktion fungerer, eller hvis det endda involverer SSL. Hvis det gør det, er det indlysende gæt, at hver chip krypterer og eksflitrerer bits af sessionsnøglen via ’tilfældige’ felter som IVs og handshake nonces. Faktisk er dette relativt let at implementere på en uigennemsigtig udstyrsenhed. Det interessante spørgsmål er, hvordan man sikrer, at disse bagdøre kun kan udnyttes af NSA — og ikke af rivaliserende efterretningsbureauer. (Nogle tanker om det her).)

sidekanalangreb. Traditionelt når vi analyserer kryptografiske algoritmer, beskæftiger vi os med de forventede input og output af systemet. Men rigtige systemer lækker alle former for ekstra information. Disse ‘sidekanaler’ — som inkluderer driftstid, ressourceforbrug, cache-timing og RF-emissioner-kan ofte bruges til at udtrække hemmeligt nøglemateriale.

den gode nyhed er, at de fleste af disse kanaler kun kan udnyttes, når angriberen er i fysisk nærhed til en TLS-server. Den dårlige nyhed er, at der er forhold, hvor angriberen kan komme tæt på. Det mest oplagte eksempel involverer virtualiserede TLS-servere i skyindstillingen, hvor en smart angriber kan dele fysiske ressourcer med målenheden.

en anden klasse af angreb bruger fjerntimingsoplysninger til langsomt at gendanne en RSA-nøgle. Disse angreb kan deaktiveres via modforanstaltninger som RSA blinding, men underholdende kan nogle ‘sikre’ maskinprocessorer faktisk slå disse modforanstaltninger fra som standard! I det mindste gør dette udstyret sårbart over for angreb fra en lokal bruger og kan endda lette fjerngendannelse af RSA-nøgler.

svage tilfældige talgeneratorer. Selv hvis du bruger stærk perfekt fremad hemmeligholdelse ciphersuites, sikkerheden ved TLS afhænger grundlæggende af tilgængeligheden af uforudsigelige tilfældige tal. Ikke tilfældigt synes manipulation med tilfældige talgeneratorstandarder at have været et særligt fokus for NSA ‘ s indsats.

tilfældige tal er kritiske for en række elementer i TLS, men de er især vigtige tre steder:

  1. på klientsiden under RSA-håndtrykket. RNG bruges til at generere RSA pre-master hemmelighed og kryptering polstring. Hvis angriberen kan forudsige udgangen af denne generator, kan hun efterfølgende dekryptere hele sessionen. Ironisk nok er en fejl i serveren RNG meget mindre ødelæggende for RSA-håndtrykket.*
  2. på klient-eller serversiden under Diffie-Hellman-håndtrykket. Da Diffie-Hellman kræver et bidrag fra hver side af forbindelsen, en forudsigelig RNG på begge sider gør sessionen helt gennemsigtig.
  3. under langvarig nøglegenerering, især af RSA-nøgler. Hvis dette sker,er du skruet.
og du behøver bare ikke at være så sofistikeret for at svække en tilfældig talgenerator. Disse generatorer er allerede overraskende skrøbelige, og det er forfærdeligt svært at opdage, når man er brudt. Debians vedligeholdere gjorde dette punkt smukt tilbage i 2008, da en fejlagtig kodeoprydning reducerede den effektive entropi af OpenSSL til kun 16 bit. Faktisk er RNGs så sårbare, at udfordringen her ikke svækker RNG — enhver idiot med et tastatur kan gøre det — det gør det uden at gøre implementeringen trivielt sårbar over for alle andre.

den gode nyhed er, at det er relativt let at manipulere med en SSL-implementering for at få det til at kryptere og filtrere det nuværende RNG-frø. Dette kræver stadig, at nogen fysisk ændrer biblioteket eller installerer en vedvarende udnyttelse, men det kan gøres klogt uden engang at tilføje meget ny kode til den eksisterende OpenSSL-kode. (OpenSSL ‘ s kærlighed til funktionspegere gør det særligt nemt at manipulere med disse ting.)

hvis manipulation ikke er din stil, hvorfor ikke sætte bagdøren i almindeligt syn? Det er den tilgang, NSA tog med Dual_EC RNG, standardiseret af NIST i særlig publikation 800-90. Der er overbevisende beviser for, at NSA bevidst konstruerede denne generator med en bagdør — en, der giver dem mulighed for at bryde enhver TLS/SSL-forbindelse, der er lavet ved hjælp af den. Da generatoren er (var) standard i RSAs BSAFE-bibliotek, bør du forvente, at enhver TLS-forbindelse, der er oprettet ved hjælp af det pågældende program, potentielt kompromitteres.

og jeg har ikke engang nævnt Intels planer om at erstatte kernen RNG med sin egen RNG.

esoteriske svagheder i PFS-systemer. Mange internetservere, herunder Google og Facebook, bruger nu perfekt fremad hemmeligholdelse ciphersuites som ephemeral Diffie-Hellman (DHE og ECDHE). I teorien giver disse ciphersuites det bedste af alle mulige verdener: nøgler vedvarer i en session og forsvinder derefter, når forbindelsen er forbi. Selvom dette ikke sparer dig for RNG-problemer, gør det nøgletyveri meget vanskeligere.

PFS ciphersuites er en god ting, men en række subtile problemer kan kramme deres stil. For det første kan sessionsgenoptagelsesmekanismen være fin: sessionsnøgler skal enten gemmes lokalt eller krypteres og udleveres til brugere i form af sessionsbilletter. Desværre mindsker brugen af sessionsbilletter noget ‘perfektion’ af PFS-systemer, da nøglerne, der bruges til kryptering af billetterne, nu repræsenterer en stor svaghed i systemet. Desuden kan du ikke engang holde dem interne til en server, da de skal deles mellem alle sidens front-end servere! Kort sagt, de virker som et mareridt.

et sidste område af bekymring er validering af Diffie-Hellman parametre. Det nuværende SSL-design forudsætter, at DH-grupper altid genereres ærligt af serveren. Men en ondsindet implementering kan krænke denne antagelse og bruge dårlige parametre, som muliggør aflytning fra tredjepart. Dette virker som en temmelig usandsynlig vej til at muliggøre overvågning, men det viser, hvor sarte disse systemer er.

Tinfoil Hat Spectrum

jeg vil henvise til den næste batch af angreb som ‘tinfoil hat’ sårbarheder. Hvor de tidligere udgaver alle udnytter velkendte teknikker, kræver hvert af de følgende forslag helt nye kryptanalytiske teknikker. Alt dette er en måde at sige, at det følgende afsnit er ren spekulation. Det er sjovt at spekulere, selvfølgelig. Men det kræver, at vi antager fakta, der ikke er bevis. Desuden skal vi være lidt forsigtige med, hvor vi stopper.

så herfra udfører vi i det væsentlige et tankeeksperiment. Lad os forestille os, at NSA har en passiv SSL-breaking-kapacitet; og desuden, at den ikke stoler på tricks fra det foregående afsnit. Hvad er der tilbage?

følgende liste begynder med de mest ‘sandsynlige’ teorier og arbejder hen imod det virkelig vanvittige.

bryde RSA nøgler. Der er et vedvarende rygte på vores område om, at NSA knækker 1024-bit RSA-nøgler. Det er tvivlsomt, at dette rygte stammer fra enhver reel viden om NSA-operationer. Mere sandsynligt er det drevet af det faktum, at krakning af 1024-bit nøgler er meget muligt for en organisation med NSA ‘ s ressourcer.

hvor muligt? Flere troværdige forskere har forsøgt at besvare dette spørgsmål, og det viser sig, at omkostningerne er lavere end du tror. Helt tilbage i 2003 estimerede Shamir og Tromer $10 millioner til en specialbygget maskine, der kunne faktor en 1024-bit nøgle om året. I 2013 reducerede Tromer disse tal til omkring $1 million, factoring i maskinfremskridt. Og det kan være betydeligt lavere. Dette er lommeskift for NSA.

på lignende måde undersøgte Bernstein, Heninger og Lange muligheden for at knække RSA ved hjælp af distribuerede netværk af standard-pc ‘ er. Deres resultater er ret foruroligende: i princippet kan en klynge om størrelsen af det virkelige Conficker botnet gøre alvorlig vold til 1024-bit nøgler.

i betragtning af alt dette kan du spørge, hvorfor denne mulighed endda er i kategorien ‘tinfoil hat’. Det enkle svar er: fordi ingen faktisk har gjort det. Det betyder, at det i det mindste er tænkeligt, at estimaterne ovenfor er dramatisk for høje — eller endda for lave. Desuden bliver RSA-1024 nøgler hurtigt udfaset. Cracking 2048 bit nøgler ville kræve betydelige matematiske fremskridt, der tager os meget dybere ind i tinfoil hat.**

revner RC4. På papir understøtter TLS en række stærke krypteringsalgoritmer. I praksis er omkring halvdelen af al TLS-trafik sikret med den knirkende gamle RC4-kryptering. Og det burde bekymre dig — fordi RC4 begynder at vise sin alder. Faktisk, som det bruges i TLS, er det allerede sårbart over for (borderline) praktiske angreb. Således virker det som en god kandidat til et ægte kryptanalytisk fremskridt fra NSA ‘ s side.

desværre er problemet med denne teori, at vi simpelthen ikke kender til noget angreb, der gør det muligt for NSA med fordel at knække RC4! De kendte teknikker kræver, at en hacker indsamler tusinder eller millioner af krypteringstekster, der enten er (a) krypteret med relaterede nøgler (som i VP) eller (b) indeholder den samme klartekst. Det bedst kendte angreb mod TLS tager sidstnævnte form — det kræver, at offeret opretter milliarder af sessioner, og selv da gendanner det kun faste almindelige tekstelementer som cookies eller adgangskoder.

modargumentet er, at det offentlige forskningsmiljø ikke har tænkt meget hårdt på RC4 i det sidste årti — dels fordi vi troede, det var så ødelagte, at folk var stoppet med at bruge det (ups!) Hvis vi havde fokuseret al vores opmærksomhed på det (eller bedre, NSA ‘ s opmærksomhed), hvem ved hvad vi ville have i dag.

hvis du fortalte mig, at NSA havde en virkelig ny kryptanalytisk evne, ville jeg være enig med Jake og pege fingeren på RC4. Mest fordi alternativerne er langt mere skræmmende.

nye sidekanalangreb. For det meste ser det ud til, at fjerntimingsangreb er blevet dræbt af implementeringen af modforanstaltninger såsom RSA-blinding, som forvirrer timing ved at multiplicere en tilfældig blindingfaktor i hver krypteringstekst inden dekryptering. I teorien skulle dette gøre timingoplysninger i det væsentlige værdiløse. I praksis implementerer mange TLS-implementeringer kompromiser i den blændende kode, der kan genoplive disse angreb, ting som at kvadrere en blændende faktor mellem dekrypteringsoperationer, snarere end at generere en ny hver gang. Det er helt usandsynligt, at der er angreb her, men hvem ved det.

Fedtmule ting. Måske har NSA noget virkelig fantastisk i ærmet. Problemet med at åbne denne Pandoras æske er, at det er virkelig svært at få den lukket igen. Lavede Jerry Solinas virkelig NIST P-kurverne for at støtte nogle fantastiske nye angreb (som NSA vidste om vej tilbage i slutningen af 1990 ‘ erne, men vi har endnu ikke opdaget)? Har NSA en kæmpe supercomputer ved navn TRANSLTR, der kan brute-force ethvert kryptosystem? Er der en kæmpe kvantecomputer i Venskabsbilaget? For svar på disse spørgsmål kan du lige så godt bare ryste den magiske 8-Ball, fordi jeg ikke har en anelse.

konklusion

vi ved ikke og kan ikke kende svaret på disse ting, og ærligt talt vil det gøre dig skør, hvis du begynder at tænke over det. Alt, hvad vi virkelig kan gøre, er at tage NSA/GCHK på deres ord, når de fortæller os, at disse kapaciteter er ‘ekstremt skrøbelige’. Det burde i det mindste give os håb.

spørgsmålet er nu, om vi kan gætte godt nok til at gøre denne skrøbelighed fra en advarsel til et løfte.
bemærkninger:

* en fejl i serveren RNG kan resultere i nogle forudsigelige værdier som ServerRandom og session id ‘ er. En angriber, der kan forudsige disse værdier, kan muligvis køre aktive angreb mod protokollen, men — i RSA ciphersuite, i det mindste — indrømmer de ikke passivt kompromis.

** selvom 1024-bit RSA-nøgler elimineres, bruger mange servere stadig 1024-bit Til Diffie-Hellman (mest af effektivitetshensyn). Angrebene på disse nøgler ligner dem, der bruges mod RSA — den største forskel er dog, at der genereres friske Diffie-Hellman ‘Flygtige’ nøgler til hver nye forbindelse. At bryde store mængder trafik virker ret dyrt.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.