câteva gânduri despre ingineria criptografică

acum câteva săptămâni am scris un post lung despre proiectul BULLRUN al NSA de a submina standardele moderne de criptare. Intenționasem să revin la acest lucru la un moment dat, deoarece nu am avut timp să discut problemele în detaliu. Dar apoi lucrurile au stat în cale. O mulțime de lucruri, de fapt. Despre unele dintre ele sper să scriu în viitorul apropiat.

dar înainte de a ajunge acolo și cu riscul de a vă plictisi pe toți până la lacrimi, am vrut să revin la acest subiect cel puțin încă o dată, chiar dacă doar pentru a pontifica un pic despre o întrebare care mă deranjează.

vedeți, foaia de informare NSA BULLRUN menționează că NSA a rupt destul de multe tehnologii de criptare, dintre care unele sunt mai interesante decât altele. Una dintre aceste tehnologii este deosebit de surprinzătoare pentru mine, deoarece pur și simplu nu-mi dau seama cum ar putea face NSA. În acest post extrem de lung, voi încerca să sap un pic mai adânc în cea mai importantă întrebare cu care se confruntă Internetul astăzi.

mai exact: cum naiba încalcă NSA SSL?

secțiunea din foaia de informare BULLRUN. Sursa: New York Times.

pentru a ține lucrurile la țintă, voi face câteva reguli de bază.

în primul rând, sunt conștient de faptul că NSA poate instala malware pe computer și pwn orice criptografie pe care o alegeți. Asta nu mă interesează deloc, pentru simplul motiv că nu se scalează bine. NSA poate face acest lucru pentru tine, dar ei nu pot face acest lucru pentru o întreagă populație. Și asta mă îngrijorează cu privire la scurgerile recente: posibilitatea ca NSA să spargă criptarea în scopul supravegherii în masă.

din același motiv, nu ne vom îngrijora de atacurile omului în mijloc (MITM). În timp ce știm că NSA nu rula aceste, ele sunt, de asemenea, un atac foarte bine direcționate. Nu numai că MITM-urile sunt detectabile dacă le faci la scară largă, dar nu se comportă cu ceea ce știm despre modul în care NSA interceptează pe scară largă — mai ales prin separatoare de fascicule și robinete. Cu alte cuvinte: suntem foarte preocupați de supravegherea pasivă.

regulile de mai sus nu sunt absolute, desigur. Vom lua în considerare atacuri direcționate limitate asupra serverelor, cu condiția ca acestea să permită ulterior decriptarea pasivă a unor cantități mari de trafic; de exemplu, decriptarea traficului către site-uri web majore. Vom lua în considerare, de asemenea, modificări arbitrare ale software — ului și hardware-ului-ceva ce știm că NSA face deja.

un ultim punct: pentru a împiedica lucrurile să iasă de pe șine, am împărțit util acest post în două secțiuni. Primul va acoperi atacurile care folosesc doar tehnici cunoscute. Totul din această secțiune poate fi implementat de un angajat TAO cu suficientă tupeu și acces la software. A doua secțiune, pe care am intitulat — o ‘Tinfoil Hat Spectrum’ acoperă lucrurile distractive și speculative-variind de la noi atacuri ale canalelor laterale până la acel computer cuantic imens pe care NSA îl ține lângă BWI.

vom începe cu ‘practic’.

atacuri care folosesc tehnici cunoscute

furtul cheilor RSA. Cel mai evident mod de a ‘crack’ SSL nu implică într-adevăr cracare nimic. De ce să pierdeți timp și bani pe criptanaliză când puteți fura cheile? Această problemă este deosebit de îngrijorătoare în serverele configurate pentru strângerea de mână TLS RSA, unde o singură cheie de server de 128 de octeți este tot ce aveți nevoie pentru a decripta fiecare conexiune trecută și viitoare realizată de pe dispozitiv.

de fapt, această tehnică este atât de evidentă încât este greu de imaginat că NSA cheltuiește o mulțime de resurse pe atacuri criptanalitice sofisticate. Știm că GCHQ și NSA sunt perfect confortabile suborning chiar și furnizorii americani de peste mări. Și în interiorul granițelor noastre, au demonstrat dorința de a obține chei TLS/SSL folosind puteri de citație și ordine de gag. Dacă utilizați o conexiune RSA la un site web major, poate fi sensibil să presupunem că cheia este deja cunoscută.

desigur, chiar și în cazul în care NSA nu recurge la măsuri directe, există întotdeauna posibilitatea de a obține chei printr-un exploit software la distanță. Frumusețea este că aceste atacuri nu necesită nici măcar executarea codului la distanță. Având în vedere vulnerabilitatea corectă, poate necesita pur și simplu o mână de Cereri SSL malformate pentru a cartografia conținutul complet al heap-ului OpenSSL/SChannel.

Sursa: New York Times

chips-uri de criptare hardware Suborning. O fracțiune semnificativă din traficul SSL pe Internet este produsă de dispozitive hardware, cum ar fi TERMINATOARELE SSL și routerele compatibile VPN. Din fericire, nu trebuie să speculăm despre securitatea acestor dispozitive — știm deja că NSA/GCHQ colaborează cu producătorii de hardware pentru a permite decriptarea pe mai multe cipuri majore de criptare VPN.

documentele NSA nu sunt clare cu privire la modul în care funcționează această capacitate sau dacă implică chiar SSL. Dacă da, presupunerea evidentă este că fiecare cip criptează și exflitrează biți ai cheii sesiunii prin câmpuri aleatorii, cum ar fi IVs și nonces de strângere de mână. Într-adevăr, acest lucru este relativ ușor de implementat pe un dispozitiv hardware opac. Întrebarea interesantă este cum se asigură că aceste uși din spate pot fi exploatate doar de NSA — și nu de agențiile de informații rivale. (Câteva gânduri despre asta aici.)

atacuri de canal lateral. În mod tradițional, atunci când analizăm algoritmii criptografici, ne preocupăm de intrările și ieșirile așteptate ale sistemului. Dar sistemele reale scurg tot felul de informații suplimentare. Aceste ‘canale laterale’ — care includ timpul de funcționare, consumul de resurse, sincronizarea cache-ului și emisiile RF-pot fi adesea folosite pentru a extrage materialul cheie secretă.

vestea bună este că majoritatea acestor canale sunt exploatabile numai atunci când atacatorul se află în apropierea fizică a unui server TLS. Vestea proastă este că există condiții în care atacatorul se poate apropia. Cel mai evident exemplu implică serverele TLS virtualizate în setarea cloud, unde un atacator inteligent poate partaja resurse fizice cu dispozitivul țintă.

o a doua clasă de atac utilizează informații de sincronizare la distanță pentru a recupera încet o cheie RSA. Aceste atacuri pot fi dezactivate prin contramăsuri, cum ar fi RSA orbitoare, deși amuzant, unele co-procesoare hardware ‘sigure’ pot dezactiva aceste contramăsuri în mod implicit! Cel puțin, acest lucru face ca hardware-ul să fie vulnerabil la atacurile unui utilizator local și ar putea chiar să faciliteze recuperarea de la distanță a cheilor RSA.

generatoare de numere aleatoare slabe. Chiar dacă utilizați cifruri puternice Perfect Forward Secret, securitatea TLS depinde în mod fundamental de disponibilitatea numerelor aleatorii imprevizibile. Nu întâmplător, manipularea standardelor generatorului de numere aleatorii pare să fi fost un accent special al eforturilor NSA.

numerele aleatorii sunt critice pentru un număr de elemente din TLS, dar sunt deosebit de importante în trei locuri:

  1. pe partea clientului, în timpul strângerii de mână RSA. RNG este folosit pentru a genera RSA pre-master secret și criptare padding. Dacă atacatorul poate prezice ieșirea acestui generator, ea poate decripta ulterior întreaga sesiune. În mod ironic, un eșec al serverului RNG este mult mai puțin devastator pentru strângerea de mână RSA.*
  2. pe partea de client sau server, în timpul strângere de mână Diffie-Hellman(e). Deoarece Diffie-Hellman necesită o contribuție din fiecare parte a conexiunii, un RNG previzibil pe fiecare parte face sesiunea complet transparentă.
  3. în timpul generării cheilor pe termen lung, în special a cheilor RSA. Dacă se întâmplă asta, ești terminat.
și nu trebuie să fii atât de sofisticat pentru a slăbi un generator de numere aleatorii. Aceste generatoare sunt deja surprinzător de fragile, și este extrem de dificil de detectat atunci când unul este rupt. Întreținătorii Debian au făcut acest lucru frumos în 2008, când o curățare eronată a codului a redus entropia efectivă a OpenSSL la doar 16 biți. De fapt, RNG — urile sunt atât de vulnerabile încât provocarea de aici nu slăbește RNG — orice idiot cu tastatură poate face asta-o face fără a face implementarea trivial vulnerabilă pentru toți ceilalți.

vestea bună este că este relativ ușor să manipulați o implementare SSL pentru a face criptarea și exfiltrarea semințelor RNG actuale. Acest lucru necesită în continuare ca cineva să modifice fizic biblioteca sau să instaleze un exploit persistent, dar se poate face inteligent fără a adăuga chiar mult cod nou la Codul OpenSSL existent. (Dragostea OpenSSL a indicatoarelor funcționale face deosebit de ușor să manipulați aceste lucruri.)

dacă manipularea nu este stilul tău, de ce să nu pui ușa din spate la vedere? Aceasta este abordarea pe care NSA a luat-o cu Dual_EC RNG, standardizată de NIST în publicația specială 800-90. Există dovezi convingătoare că NSA a proiectat în mod deliberat acest generator cu un backdoor — unul care le permite să rupă orice conexiune TLS/SSL făcută folosind-o. Deoarece generatorul este (a fost) implicit în biblioteca BSAFE a RSA, ar trebui să vă așteptați ca fiecare conexiune TLS realizată folosind acel software să fie potențial compromisă.

și nici măcar nu am menționat planurile Intel de a înlocui nucleul Linux RNG cu propriul hardware RNG.

slăbiciuni ezoterice în sistemele PFS. Multe servere web, inclusiv Google și Facebook, folosesc acum cifruri perfecte pentru secretul înainte, cum ar fi efemer Diffie-Hellman (DHE și ECDHE). În teorie, aceste ciphersuite oferă cel mai bun dintre toate lumile posibile: cheile persistă pentru o sesiune și apoi dispar odată ce conexiunea s-a încheiat. Deși acest lucru nu vă salvează de problemele RNG, face furtul de chei mult mai dificil.

PFS ciphersuites sunt un lucru bun, dar o varietate de probleme subtile pot crampa stilul lor. În primul rând, mecanismul de reluare a sesiunii poate fi fin: cheile de sesiune trebuie fie stocate local, fie criptate și oferite utilizatorilor sub formă de bilete de sesiune. Din păcate, utilizarea biletelor de sesiune diminuează oarecum perfecțiunea sistemelor PFS, deoarece cheile utilizate pentru criptarea biletelor reprezintă acum o slăbiciune majoră a sistemului. Mai mult, nici măcar nu le puteți păstra interne pe un singur server, deoarece acestea trebuie partajate între toate serverele front-end ale unui site! Pe scurt, par a fi un fel de coșmar.

un domeniu final de îngrijorare este validarea parametrilor Diffie-Hellman. Designul SSL actual presupune că grupurile DH sunt întotdeauna generate sincer de server. Dar o implementare rău intenționată poate încălca această ipoteză și poate folosi parametri răi, care permit ascultarea terților. Aceasta pare a fi o cale destul de puțin probabilă pentru a permite supravegherea, dar arată cât de delicate sunt aceste sisteme.

spectrul pălăriei de staniol

mă voi referi la următorul lot de atacuri ca vulnerabilități ale pălăriei de staniol. În cazul în care problemele anterioare folosesc toate tehnicile bine cunoscute, fiecare dintre următoarele propuneri necesită tehnici criptanalitice complet noi. Toate acestea sunt un mod de a spune că următoarea secțiune este pură speculație. Este distractiv să speculezi, desigur. Dar ne cere să presupunem fapte care nu sunt dovezi. Mai mult, trebuie să fim puțin atenți unde ne oprim.

deci, de aici încolo, în esență, efectuăm un experiment de gândire. Să ne imaginăm că NSA are o capacitate pasivă de rupere SSL; și, în plus, că nu se bazează pe trucurile secțiunii anterioare. Ce a mai rămas?

următoarea listă începe cu cele mai probabile teorii și lucrează spre cei cu adevărat nebuni.

ruperea tastelor RSA. Există un zvon persistent în domeniul nostru că NSA sparge cheile RSA pe 1024 de biți. Este îndoielnic că acest zvon provine din orice cunoaștere reală a operațiunilor NSA. Mai probabil este condus de faptul că fisurarea cheilor pe 1024 de biți este foarte fezabilă pentru o organizație cu resursele NSA.

cât de fezabil? Mai mulți cercetători credibili au încercat să răspundă la această întrebare și se dovedește că costul este mai mic decât credeți. În 2003, Shamir și Tromer au estimat 10 milioane de dolari pentru o mașină construită special, care ar putea lua o cheie de 1024 de biți pe an. În 2013, Tromer a redus aceste numere la aproximativ 1 milion de dolari, factorizând progresele hardware. Și ar putea fi semnificativ mai mic. Asta e mărunțiș pentru NSA.

pe linii similare, Bernstein, Heninger și Lange au examinat fezabilitatea fisurării RSA folosind rețele distribuite de PC-uri standard. Rezultatele lor sunt destul de deranjante: în principal, un cluster cu privire la dimensiunea botnetului Conficker din viața reală ar putea face violență gravă tastelor pe 1024 de biți.

având în vedere toate acestea, s-ar putea întreba de ce această posibilitate este chiar în categoria ‘tinfoil hat’. Răspunsul simplu este: pentru că nimeni nu a făcut-o de fapt. Asta înseamnă că este cel puțin posibil ca estimările de mai sus să fie dramatic prea mari — sau chiar prea mici. Mai mult, tastele RSA-1024 sunt eliminate rapid. Cracarea cheilor de biți 2048 ar necesita progrese matematice semnificative, ducându-ne mult mai adânc în pălăria de staniol.**

cracare RC4. Pe hârtie, TLS acceptă o varietate de algoritmi puternici de criptare. În practică, aproximativ jumătate din traficul TLS este asigurat cu vechiul cifru RC4 scârțâit. Și acest lucru ar trebui să vă îngrijoreze — deoarece RC4 începe să-și arate vârsta. De fapt, așa cum este utilizat în TLS, este deja vulnerabil la atacuri practice (limită). Astfel, pare un candidat frumos pentru un adevărat avans criptanalitic din partea NSA.

din păcate, problema cu această teorie este că pur și simplu nu știm de niciun atac care să permită NSA să spargă în mod util RC4! Tehnicile cunoscute necesită ca un atacator să colecteze mii sau milioane de texte cifrate care sunt fie (a) criptate cu chei conexe (ca în WEP), fie (B) conțin același text clar. Cel mai cunoscut atac împotriva TLS ia ultima formă — cere victimei să stabilească miliarde de sesiuni și chiar și atunci recuperează doar elemente de text fix, cum ar fi cookie-urile sau parolele.

contraargumentul este că comunitatea publică de cercetare nu s — a gândit foarte mult la RC4 în ultimul deceniu-în parte pentru că am crezut că este atât de rupt încât oamenii au încetat să-l folosească (oops!) Dacă ne-am fi concentrat toată atenția asupra acesteia (sau mai bine zis, atenția NSA), cine știe ce am avea astăzi.

dacă mi-ai spune că NSA are o capacitate criptanalitică cu adevărat nouă, aș fi de acord cu Jake și aș arăta cu degetul spre RC4. Mai ales pentru că alternativele sunt mult mai înfricoșătoare.

noi atacuri pe canale laterale. În cea mai mare parte, atacurile de sincronizare la distanță par să fi fost ucise prin implementarea unor contramăsuri precum RSA orbire, care confundă sincronizarea prin înmulțirea unui factor orbitor aleatoriu în fiecare text cifrat înainte de decriptare. În teorie, acest lucru ar trebui să facă informațiile de sincronizare în esență lipsite de valoare. În practică, multe implementări TLS implementează compromisuri în codul orbitor care ar putea reînvia aceste atacuri, lucruri precum pătratul unui factor orbitor între operațiunile de decriptare, mai degrabă decât generarea unuia nou de fiecare dată. Este destul de puțin probabil să existe atacuri aici, dar cine știe.

chestii Goofy. Poate că NSA are ceva cu adevărat uimitor în mânecă. Problema cu deschiderea acestei cutii a Pandorei este că este foarte greu să o închizi din nou. Jerry Solinas a gătit într-adevăr curbele P NIST pentru a susține un nou atac uimitor (despre care NSA știa despre drumul înapoi la sfârșitul anilor 1990, dar nu am descoperit încă)? NSA are un supercomputer gigant numit TRANSLTR care poate forța brute orice criptosistem? Există un computer cuantic uriaș la anexa Prieteniei BWI? Pentru răspunsuri la aceste întrebări s-ar putea la fel de bine doar se agită Magic 8-Ball, pentru că nu am un indiciu.

concluzie

nu știm și nu putem ști răspunsul la aceste lucruri și, sincer, te va înnebuni dacă începi să te gândești la asta. Tot ce putem face cu adevărat este să credem NSA/GCHQ pe cuvânt atunci când ne spun că aceste capacități sunt extrem de fragile. Asta ar trebui cel puțin să ne dea speranță.

întrebarea acum este dacă putem ghici suficient de bine pentru a transforma această fragilitate dintr-un avertisment într-o promisiune.
Note:

* un eșec al serverului RNG ar putea duce la unele valori previzibile, cum ar fi ID-urile ServerRandom și sesiune. Un atacator care poate prezice aceste valori poate fi capabil să execute atacuri active împotriva protocolului, dar — cel puțin în RSA ciphersuite — nu admite compromisuri pasive.

** chiar dacă tastele RSA pe 1024 de biți sunt eliminate, multe servere folosesc încă 1024 de biți pentru Diffie-Hellman (mai ales din motive de eficiență). Atacurile asupra acestor chei sunt similare cu cele utilizate împotriva RSA — cu toate acestea, diferența majoră este că tastele efemere Diffie-Hellman proaspete sunt generate pentru fiecare nouă conexiune. Spargerea unor cantități mari de trafic pare destul de costisitoare.

Lasă un răspuns

Adresa ta de email nu va fi publicată.