Linus Torvalds til kritiker af tilfældighedsgenerator: Du er dum
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.
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.
