Linus Torvalds til kritiker af tilfældighedsgenerator: Du er dum

Et forslag om at droppe processorens tilfældighedsgenerator i Linux-kernen blev mødt med et svar i velkendt Linus Torvalds-stil. Men sikkerhedsekspert giver Linux-stifteren tørt på.

Afsløringerne af efterretningstjenesternes arbejde med at undergrave kendte krypteringsteknikker har fået it-verdenen til at granske de funktioner, der tidligere har været tillid til. Det fik en britisk Linux-entusiast til at foreslå en ændring i Linux-kernen, men forslaget blev mødt med et flabet svar fra Linux-grundlægger Linus Torvalds.

»Hvor kan jeg indsende et forslag om at få hævet IQ'en og kerne-kendskabet hos folk? Først skulle I tage og læse drivers/char/random.c. Derefter burde I lære om kryptografi. Og til sidst kan I komme tilbage og indrømme overfor verden, at I tog fejl,« indleder Linus Torvalds sit svar på forslaget.

Læs også: Intel-udvikler til Linus Torvalds: Tal pænt!

Problemet ligger i brugen af funktionen Rdrand i tilfældighedsgeneratoren i Linux-kernen. Rdrand er en funktion i processoren, som ud fra termisk støj kan generere tilfældige tal.

Der er blot den hage ved funktionen, at ingen med sikkerhed kan vide, at tallene fra funktionen er ægte tilfældige tal og ikke resultatet af en kompromitteret algoritme, som kan give eksempelvis NSA en fordel, hvis man bruger funktionen til kryptering.

Linus Torvalds uddyber sit svar med, at Rdrand blot er ét af flere input, som bliver blandet sammen til at skabe et tilfældigt tal, og dermed skulle det samlet set forbedre tilfældigheden, uanset om funktionen ikke genererer ægte tilfældige tal.

Sikkerhedsekspert Paul Ducklin fra sikkerhedsfirmaet Sophos har imidlertid fulgt Linus Torvalds opfordring til at se på kildekoden til tilfældighedsgeneratoren og påpeger i et blogindlæg flere problemer.

Ægte tilfældighed er et velkendt problem i datalogien, og derfor bruger eksempelvis Linux' tilfældighedsgenerator input fra flere kilder såsom tid mellem tastetryk, musebevægelser, netværksaktivitet og andre data, som kan give pseudotilfældighed.

Brugen af Rdrand burde ganske rigtigt ikke gøre nogen skade, når det indgår sammen med de øvrige kilder, men Paul Ducklin påpeger, at hvis funktionen er kompromitteret, så øger den heller ikke sikkerheden.

Kildekoden, som Linus Torvalds henviser til, er desuden fyldt med modsætninger ifølge Paul Ducklin. Der står i kommentarerne, at Rdrand ikke bliver brugt, hvorefter der senere står, at processorens tilfældighedsgenerator bliver kaldt.

Samtidig bliver inputtet fra Rdrand brugt, efter hashfunktionerne har behandlet inputtet fra de øvrige kilder, og det sker på en måde, hvorpå det ville være en smal sag for en kompromitteret processor at annullere den tilfældighed, de øvrige input skulle have genereret.

»Hvis jeg var konge, så ville jeg blande data fra Rdrand ind tidligere i processen sammen med alle de øvrige entropikilder, så der ikke var nogen, der behøvede at besvare spørgsmålet: 'Hvem har bedt jer om at vente med Rdrand indtil en XOR til allersidst?'« skriver Paul Ducklin.

Tips og korrekturforslag til denne historie sendes til tip@version2.dk
Kommentarer (9)
sortSortér kommentarer
  • Ældste først
  • Nyeste først
  • Bedste først
Jørgen Elgaard Larsen

Der tales meget om NSA for tiden. Nogen har kigget på tilfældighedsgeneratoren i Linux-kernen og fundet ud af, at kommentarerne i koden ikke er helt opdaterede. De konkluderer, at koden derfor må være følsom overfor, at NSA kan have pillet ved CPU-designet.

Åbenbart er tilfældighedsgeneratoren den eneste fare, de kan se ved at køre på en NSA-infiltreret CPU.

Linus kalder dem "ignoranter" og beder dem om at sætte sig ind i tingene, før de brokker sig. Som sædvanlig er han ikke specielt diplomatisk.

I andre nyheder: Vand viser sig at være vådt ved visse temperaturer.

Christian Nobel
Carsten Olsen

Linus giver et svar, der er passende.

Her er hvad jeg fandt efter 5 min. søgen efter hvordan man kan forsøge at forbedre kernen: http://lxr.free-electrons.com/source/MAINTAINERS Da han ikke har fulgt nogen af rådene syntes jeg det er fuldstændigt uacceptabelt at han henvender sig til LT, LT giver ham faktisk høfligt svar, når man tænker på at hans henvendelse ligner sabotage af kernearbejdet. (og alle beslutningsvejene)

Kenn Nielsen

Samtidig bliver inputtet fra Rdrand brugt, efter hashfunktionerne har behandlet inputtet fra de øvrige kilder, og det sker på en måde, hvorpå det ville være en smal sag for en kompromitteret processor at annullere den tilfældighed, de øvrige input skulle have genereret.

Hvis dét er rigtigt, så kunne det da være en idé at tage substansen alvorligt, - selvom et farverigt svar måske er fortjent.

K

Kristian Sørensen
Morten Jensen

RdRand bruges ikke som eneste entropi-kilde, men kun som input til entropi-pølen. Det er en fordel under opstart, at kunne generere tilfældige tal uden at skulle akkumulere entropi fra I/O devices først.

Det er i øvrigt muligt at slå RdRand-understøttelse fra med et compile-flag.

Jørgen Elgaard Larsen

Hvis det indlægget står til troende har der været en alvorlig svaghed i koden bag /dev/random i Linux kernen i rundt regnet et årti.

Prøv at læse det igen og sammenhold med kildekoden.

Der fremskaffes på anden vis et tilfældigt tal. Dette tal XOR'es med inputtet fra RdRand.

Linus siger, at det ikke kan skade, selv hvis input fra RdRand viser sig ikke at være tilfældigt: Hvis du XOR'er noget tilfældigt med noget kendt, får du stadig noget tilfældigt.

Ducklin påpeger så, at hvis CPU'en er konstrueret specielt til at genkende Linux' kernekode, kan den finde det tilfældige tal i et register, og så sørge for, at RdRand returnerer et konstrueret tal på baggrund af det. Hvis der f.x. returneres det negerede tilfældige tal, vil resultatet af XOR blive en række nuller.

Det er selvfølgelig rigtigt, men inderligt ligegyldigt: Hvis NSA eller andre har pillet så meget ved CPU'en, at den kan gøre ovenstående, har man alligevel tabt så grundigt at man ikke kan regne med noget som helst. Så kan de have pillet ved alt.

Log ind eller Opret konto for at kommentere