Da det her kom frem, ville jeg egentlig skrive lidt om det, men fik det aldrig gjort. Nu er der så kommet nyt i sagen, så nu tager jeg det op igen. Men jeg må hellere tage det hele fra begyndelsen. Det handler om sikkerhed og kryptologi, men på et niveau hvor alle kan være med… hvis de altså vil. Ellers så følg med senere hvor jeg sikkert skriver noget om julemad, gaver og om det at skrive ph.d. afhandling i juletiden 🙂
Tilfældige tal er noget af det vigtigste for stort set alle kryptografiske metoder, men problemet er at en computer er meget dårlig til at generere tilfældige tal. Derfor er der fundet på mange forskellige måder at generere tilfældige tal på, der tager en smule tilfældigt input (fx genereret ved at brugeren flytter rundt med musen eller hamrer i tastaturet) og ud fra det, genererer en “uendelig” strøm af tilfældige data. Idéen er så at uanset hvor længe man observerer denne strøm af tilfældige data, så har man ingen mulighed for at forudsige hvad det næste tal, der kommer ud af den bliver, med større sandsynlighed end et helt tilfældigt gæt.
Denne proces er absolut ikke simpel, og mange systemer er blevet brudt i tidens løb, fordi de tilfældige tal ikke var tilfældige nok. Donald Knuth var en klog mand da han sagde: “Random numbers should not be generated with a method chosen at random”. Derfor har den amerikanske organisation NIST, efter en længere proces, udvalgt fire kandidater til en standard for hvordan man genererer tilfældige tal, hvor alle fire benytter forskellige teknikker. Men en af dem, er ikke som de tre andre…
Den der står udenfor har navnet Dual_EC_DRBG, og er baseret på elliptiske kurver. At den er inkluderet, kan undre en, da den er ca. tre gange så langsom til at generere tilfældige tal, som de andre kandidater. Den er faktisk kun med fordi den amerikanske efterretningstjeneste NSA (som også er medlem af NIST) udviklede den, og pressede hårdt på for at få den med i standarden.
I 2006 blev der opdaget et par problemer med den. De tilfældige tal den spyttede ud, havde en svag bias, men det var ikke nok til at den var komplet usikker, og en måde at reparere den på, blev også foreslået. Men så kom Crypto 2007 konferencen, hvor Dan Shumow og Niels Ferguson viste, at der var en meget mistænkelig fejl i metoden…
Jeg skal spare jer for matematikken, men den korte version er, at metoden gør brug af nogle konstanter -- altså helt specifikke tal der er en del af standarden -- som man bare skal bruge, dog uden at nogen har beskrevet hvordan de helt specifikt er blevet valgt. Hvad Shumow og Ferguson viste, var at disse konstanter har en relation til et andet sæt af hemmelige tal. Hvis du kender disse hemmelige tal, kan du, efter at have opsamlet blot nogle få bytes tilfældige data genereret af metoden, forudsige samtlige tilfældige tal der bliver genereret herefter. Sagt på en anden måde: Hvis en person overvåger trafikken mens du logger på din netbank bare en enkelt gang, så har han fuld adgang til alle data du udveksler med banken, da han er i stand til at forudsige hvilke kryptografiske nøgler din maskine vil generere. Det er vist unødvendigt at sige at det er skidt! Dermed er det også MEGET skidt hvis en person kender disse hemmelige tal relateret til konstanterne, da han så vil være i stand til at bryde ENHVER implementation af Dual_EC_DRBG.
Hanlon’s razor siger godt nok “never attribute to malice that which can be adequately explained by stupidity”, men i dette tilfælde kan jeg ikke se hvorfor NSA har insisteret på at inkludere denne metode, hvis ikke det var fordi at de ligger inde med de hemmelige tal, konstanterne er genereret ud fra, med det formål at kunne bryde samtlige systemer baseret på denne standard.
Det skal for en god ordens skyld siges, at ingen ved om disse hemmelige tal overhovedet eksisterer. Måske er de genereret tilfældigt og slettet igen kort efter, måske kender kun få udvalgte folk dem, måske kender kun en programmør dem? Vi ved det ikke, men der er ingen der kan bevise at de ikke eksisterer, og det bør være grund nok til holde sig så langt væk fra Dual_EC_DRBG som overhovedet muligt.
Det her skete for et par måneder siden. I dag hører jeg så at Microsoft har inkluderet Dual_EC_DRBG som en del af deres opdatering til Windows Vista, nemlig deres Service Pack 1. Microsoft siger at den er vedlagt, men at det er op til programmørerne selv om de vil bruge den, eller en af de tre andre, og at Windows Vista i sig selv ikke anvender den. Det har vi så udelukkende Microsoft’s ord for, og med alt den anti-terror lovgivning og tilsidesættelse af retssikkerheden som der sker i dag, så er jeg ikke overbevist om at det er korrekt. Og selvom det er korrekt i dag, så skal der ikke andet end en lille opdatering til fra Microsoft, for at den er slået til.
Der er nogen der har et stort forklaringsproblem. Ikke så meget Microsoft, der når alt kommer til alt, bare har valgt at implementere en standard, men snarere NSA og NIST.