NSAs gennembrud -- eller noget

Min mailbox er ret interessant i disse dage, på grund af den klumme jeg skrev til ACM's Queue: "More encryption is not the solution".

Der er f.eks en del der gerne vil vide om jeg har "inside scoop" på Snowdens dokumenter, eftersom noget af det jeg skrev efterfølgende er blevet næsten ordret bekræftet af artikler i Guardian og New York Times.

Nej, det har jeg selvfølgelig ikke.

Men jeg har det samme som de fleste andre IT sikkerhedsfolk har: En kritisk fantasi og alt hvad jeg havde brug for at gøre, var at spørge mig selv: "Hvad ville jeg gøre som direktør for NSA, givet nogle hundrede millioner dollars..."

Indtil videre er der faktisk ikke noget af det der er blevet afsløret der er kommet som en overraskelse for mig, min kritiske fantasi har holdt sig et par skridt foran afsløringerne indtil videre.

Men hvad så med det "kryptografiske gennembrud" der tales om nu, hvad er det ?

Lad os tage mulighederne fra mest spændende til mest sandsynlig:

"NSA ved at P == NP" Game & match over for alt andet krypto end PSK og selv det er i svære problemer. Ikke ret sandsynligt, i særdeleshed ikke sandsynligt at de kan holde det hemmeligt, men på ingen måde umuligt.

"NSA kan faktorere store tal" Symmetriske algoritmer som DES, AES og RC4 er hverken mere eller mindre i problemer, men alle de assymmetriske (RSA, DSA osv.) er. Forholdsvist sandsynligt i min optik: Hvis man bruger flere penge på gode matematikere end noget universitet nogensinde kan gøre sig håb om, skulle det være underligt om de finder på noget smart matematik undervejs.

"NSA har fundet svagheder i DES/AES/RC4/..." Givetvis. DES og RC4 burde for længst være droppet. AES er et godt spørgsmål.

"NSA har fundet designsvagheder i SSL/TLS." Givetvis. De har muligvis ligefrem manipuleret dem derind selv. Det er dog relativt begrænset hvor slemt det kan være, der er gode folk der har tænkt sig om.

"NSA har fundet fejl i SSL/TLS implementeringer." Helt sikkert. Og de har sandsynligvis også gjort hvad de kunne for at få dem implementeret.

Og det bringer mig til OpenSSL, som jeg er 100% sikker på, NSA opfatter som et allerede løst problem.

OpenSSL består af ca. ½ million linier kode, det meste af det ulæseligt og uforståeligt for alle andre end ca. 1000 personer globalt set.

OpenSSL har nogle af de mest barokke og idiotiske API definitioner der længe er set.

Det gør det meget svært at bruge OpenSSL på en måde der er korrekt og sikker: Du skal på den ene side være hammerdygtig til kryptografi og på den anden side skal du kunne programmere.

At det er en utrolig sjælden kombination, er OpenSSL kildeteksten vidnesbyrd om.

Her er et fuldstændig tilfældigt eksempel fra den første tilfældige source-fil jeg lige kiggede i:

    ASN1_OBJECT <em>OBJ_dup(const ASN1_OBJECT *o)
        {
        ASN1_OBJECT *r;
        int i;
        char *ln=NULL,</em>sn=NULL;
        unsigned char <em>data=NULL;
 
        if (o == NULL) return(NULL);
        if (!(o->flags & ASN1_OBJECT_FLAG_DYNAMIC))
                return((ASN1_OBJECT *)o); /</em> XXX: ugh! Why? What kind of
                                             duplication is this??? */
        [...]

Jeg kan ikke uden et meget stort arbejde overbevise mig selv, eller andre, om hvorvidt den "XXX" kommentar er en "pyt" eller en "ohhh shit!" kommentar.

Kommentaren er tilsyneladende tilføjet for over 10 år siden og står der stadig i den OpenSSL vi har i FreeBSD's source-tree idag.

De fleste bruger OpenSSL efter copy&paste metoden: Find noget kode der tilsyneladende virker sammen med OpenSSL og ret derefter så lidt som muligt i det, fordi der fundamentalt set ikke er nogen der fatter eller forstår hvad der egentlig foregår.

I det miljø vil enhver person der kommer og lyder som om de ved hvad de foretager sig og tilbyder deres hjælp blive taget imod med kyshånd, både i OpenSSL projektet og blandt brugerne af koden. Specielt vil det være meget svært at sige nej tak for USAnere, når der kommer en NSA medarbejder og siger "I'm from the government, I'm here to help you."

Jeg vil godt vædde på NSA's "kryptografiske gennembrud" er at OpenSSL er noget indviklet og uigennemtænkt slamkode ingen forstår.

phk

Kommentarer (24)
sortSortér kommentarer
  • Ældste først
  • Nyeste først
  • Bedste først
Lars Bengtsson

Ifølge Joe Kiniry findes der en del SSL biblioteker som er bedre end OpenSSL. Bla. libgcrypt, BouncyCaste, Crypto++. Kilde: https://twitter.com/kiniry/status/376680474632273920

Men problemet er vel at mange (måske de fleste) populære open source projekter baserer sig på OpenSSL, herunder firefox, wget og chromium. Men det kan vel ændre sig når nu man har fået ny viden, eller hvad? Eller er problemet at det heller ikke i OSS verdenen altid er det mest rationelle argument som vinder? Der må vel alligevel have været en del folk som har vidst at OpenSSL ikke var kvalitetskode.

  • 1
  • 2
Carsten Larsen

OpenSSL har nogle af de mest barokke og idiotiske API definitioner der længe er set.

Uden at kende meget til OpenSSL, så her to forslag: Kunne det hænge sammen med en stærke binding mellem OpenSSL og de standarder biblioteket implementerer ? Eller måske at en refaktorisering vil kræve en vis fortrolighed med koden, efterfølgende omfattende test, og evt. udfordringer med manglende bagud kompatibilitet? Selvfølgelig ikke at de bliver mindre idiotiske af den grund.

  • 0
  • 0
Casper Bang

Selv Bruce Sneier virker rystet i øjeblikket. Det store spørgsmål er nu bare, hvilke teknikker, ciphers og programmer kan vi med overvejen sansynlighed sige stadig er sikre og til at stole på? Og hvis der er tale om svagheder der reducererer bitlængden (er det som regel), hvilke længder skal vi mon op på, med NSA's brute-force kapacitet, for ikke at servere tingene på et sølvfad?

Jeg tror ikke på at NSA har fundet P = NP, hvis de vitterligt har 35.000 der arbejder med "kryptering" som Snowden's seneste læk med black-project budgetter antyder, ville det næppe kunne holdes hemmeligt.

  • 2
  • 0
Maciej Szeliga

Hvad er argumentet egentligt for, at man skal bruge f.eks. HTTPS, hvis det alligevel antages at andre kan lytte med, hvis blot de har kapacitet nok? Er det blot for at holde "småfisk" fra at opsnappe ens data?


Først og fremmest så havde vi ikke kendskab til efteretningstjensternes lille leg (aka. PRISM), det kom først frem for en 3 ~ 4 måneder siden.
Selv om situationen har ændret sig så er der i realiteten ingen grund til at droppe https før man finder en bedre løsning da alternativet er værre.

  • 4
  • 0
Søren Løvborg

Det er en rigtig fin ACM-artikel. Kryptering er et besnærende løsningsforslag for it-folk, men det er (som altid) en sisyfosopgave at løse sociale problemer med tekniske løsninger.

"NSA kan faktorere store tal"

Så sandt. NSA kan givetvis brute-force 1024 bits RSA, som stadig nyder betydelig udbredelse på internettet.

If we are optimistic, it may be possible to factor a 1024-bit RSA modulus [before 2020] by means of an academic effort on [a] limited scale.

(Kleinjung et al., 2010, http://eprint.iacr.org/2010/006.)

Den samme artikel estimerer 2 millioner CPU-år for at faktorisere 1024 bit RSA. Det er omkring 500 mio. USD på Amazon EC2, men NSA har dedikerede datacentre, dedikerede ASICs, bedre algoritmer og for mange penge. Et realistisk bud er at NSA kan bryde en 1024-bit RSA-nøgle for så lidt som USD 50.000 per SSL certifikat. Men hvorfor skulle de gøre det, når det er så meget billigere at angribe selve kryptosoftwaren?

Debians RNG-fiasko er et spektakulært eksempel på hvor let det kan gøres, selv hvis det vitterligt var et uheld. Og vi skal nok heller ikke afskrive de gamle rygter om en bagdør i OpenBSD, eller den berygtede NSAKEY i Windows.

OpenSSL er jo notorisk for at være noget slamkode, men alternativernes kvalitet er også diskuterbar. Til dem der ikke har set den, kan Moxie Marlinspike's præsentation til DEFCON 17 anbefales. Han tager NSS (Network Security Services, som fx Firefox bruger) under kærlig behandling 30 minutter inde i videoen, men hele præsentationen er seværdig: http://www.youtube.com/watch?v=ibF36Yyeehw

I virkeligheden er løsningen nok både teknisk og social - vi skal have bedre krypto OG bedre lovgivning.

  • 6
  • 0
Søren Mors

Hvis man er villig til at se bort fra de politiske aspekter, er der ikke så meget at NSA's julelege der påvirker mig.

Jeg er ikke voldsomt bekymret for at NSA giver sig til at tømme min bankkonto (jeg er sur over at de formentlig kan se hvad der står på den). Jeg er derimod bekymret for at den rumænske mafia skulle slippe afsted med at tømme min bankkonto, men de har ikke de resourcer NSA har.

Med andre ord, er https formentlig "godt nok" til at holde de fleste af dem jeg er bekymret for, ude af mine transkationer.

  • 1
  • 2
Carsten Olsen

Hvis jeg prøver at sætte mig i NSAs sted. Ville jeg prøve at gøre implementeringen af for eksempel https: så god som muligt. Når jeg så selv skal bryde krypteringen, vil jeg gå efter det svageste led som er at tilgå APIet fra bruger-siden, tcp-streams er ukrypteret på APIet. Her vil jeg sætte min aflytning ind. På Windows (client-side) er der nok rigtig mange sårbarheder i dette API og (source)coden er ikke tilgænge for folk der har sårbarhedsfinding som sportgren.

Serverside: Snowden har afsløret at bl.a. outlook.com har indbygget en ukrypteret bagdør som gør NSA aflytning til en triviel sag.

  • 1
  • 0
Mogens Lysemose

Rigtigt godt indlæg, har haft præcis de samme bekymringer. Var det ikke NSA der var hovedarkitekter på Hardened Linux m.m.?

Jeg var aldrig sej til automatteori og beregnelighed for 13 år siden, men jeg troede at P =? NP var et generelt teoretisk spørgsmål som man ikke kan tale om er "løst" for en delmængde da det er generelt formuleret?
Jeg troede det var formodningen om alle problemer der kan løses i polynomiel tid af NON-deterministiske automater (NFA'er, som analyserer alle veje på een gang) også kan løses i polynomiel tid af DETERMINISTISKE automater (DFA der kun tager een vej ad gangen)? Eller er jeg helt på vildmarken?

  • 1
  • 0
Frithiof Andreas Jensen

Jeg er derimod bekymret for at den rumænske mafia skulle slippe afsted med at tømme min bankkonto


Vi ved at USA anvender repressalier som "signature strikes", d.v.s. drone-angreb baseret på pattern-matching af indhentet data eller "no-flight status" formodentligt helt baseret på pattern matching.

Sikkerhedshullerne gör at man både risikerer at få länset sine bankkonti af "den rumänske mafia" og samtidigt kommer på alle mulige trusselslister når forbryderne efterfölgende vasker pengene via det lokale "hawala"-netvärk - de kan jo ikke bare bruge SWIFT.

  • 2
  • 0
Thomas Dynesen

Der var for ca. 10-15 år siden en artikel der beskrev hvordan en amerikansk biokemiker havde lavet en spejling mellem PKI nøgler og DNA strenge. Efter at han havde skitseret en metode der så ud til at kunne si den private nøgle fra hvis man kendte den offentlige forsvandt han fra bybilledet. Ny arbejdsgiver og langt flere penge til at forske for. Man må så give køb på at blive nobel prismodtager, men skidt alt har jo sin pris.
Måske har han fundet en si der duer, i hvert fald for korte nøgler. I dag koster en DNA sekvensmaskine 45.000 kr. og kan sekventere så korte DNA strenge på ingen tid.

  • 1
  • 0
Jesper Louis Andersen

Jeg var aldrig sej til automatteori og beregnelighed for 13 år siden, men jeg troede at P =? NP var et generelt teoretisk spørgsmål som man ikke kan tale om er "løst" for en delmængde da det er generelt formuleret?

Well, hvis du viser at P = NP, så kan det have konsekvenser for sikkerheden i visse krypteringsalgoritmer. Det handler dog on non-deterministiske og deterministiske Turingmaskiner i stedet for automater. Det er dog ikke sikkert at P = NP er et brugbart resultat i sig selv. Det kan nemlig være at algoritmen er så langsom at den i praksis stadigt er ubrugelig, om end problemet er teoretisk løst.

Så er det langt nemmere at have en praktisk algoritme til at faktorisere heltal som er mere effektiv end dem vi kender i dag, eller lignende. Heltalsfaktorisering er ikke NP-complete, så det er ikke blandt de allerondeste problemer i NP.

Jeg er dog mere tilbøjelig til at give PHK ret. Når NSA i deres BULLRUN slides skriver at deres evne til at bryde kryptering er "fragile" så mener de det. Det betyder at selv små ændringer i protokoller eller kodning er nok til at fjerne deres mulighed for at bryde krypteringen.

Derfor tyder det på at angrebet enten er mod OpenSSL eller lignende system. Eller at de har fundet en svaghed i de værktøjer vi bruger til at lave store primtal. Og mere i den dur.

  • 3
  • 0
Thue Kristensen

Bruce Schneier gætter på at NSA har et gennembrud i at dekryptere elliptic curve cryptography.

https://www.schneier.com/blog/archives/2013/09/the_nsas_crypto_1.html

Alternativt er det bare fordi NSA har fået sat nogle specielt konstruerede kurver (=konstanter) ind i ECC-standarderne: http://www.wired.com/politics/security/commentary/securitymatters/2007/1...

I alle tilfælde så virker det meget suspekt at bruge ECC-kryptering.

  • 0
  • 0
Klaus Ellegaard

...så er det ret håbløst at konfigurere skidtet:

http://utcc.utoronto.ca/~cks/space/blog/web/SSLWebComplexity

I betragtning af vigtigheden af det, burde Nogen(tm) med forstand på kryptering sætte sig ned og lave en "Next Generation" OpenSSL basalt set uden konfigurationsmuligheder men baseret på konsensus af en arbejdsgruppe bestående af folk, der rent faktisk ved noget om kryptering.

Der burde endog være rigeligt med reklame og erkendelse i det til at Google, Microsoft, Facebook og venner kunne få lyst til at sponsorere forestillingen.

Måske kan man ikke holde NSA ude af ligningen, men NSA er jo ikke den eneste (endsige primære) årsag til at bruge kryptering. Der er rigeligt med onde folk og organisationer derude med langt færre midler end NSA, som man gerne vil holde ude af sin kommunikation. Og i rigtigt mange tilfælde er det nok også mere relevant på den korte bane end at holde NSA ude.

  • 0
  • 0
Kenn Nielsen
  • 1
  • 0
Log ind eller Opret konto for at kommentere