Fysiker som bygger säkerhet kontra Intels Bull mountain

För några veckor sedan presenterade några fysiker en ny slumptalsgenerator baserad på kvantfenomen. Resultaten har fått viss uppmärksamhet.

Insamlingsutrustningen som används för att fånga kvantfenomenen.
Insamlingsutrustningen som används för att fånga kvantfenomenen.

Det är alltid spännande med nya forskningsresultat som ger oss insikt i hur vår verklighet fungerar. Jag gillar också att man försöker omvandla sina forskningsresultat till något som går att använda. Tyvärr kan jag utifrån ett säkerhetsperspektiv inte bli speciellt intresserad och imponerad. Skälet till detta är att jag återigen upplever att fysikerna tyvärr är blinda för det område de försöker applicera sina resultat. Det är inte första gången fysiker presenterar nya rön som man ser kan användas för krypto, säker kommunikation, eller som slumptalsgeneratorer. Det är i och för sig intressant och bra. Men problemet är att man ofta tror sig löst ett problem som inte längre är ett problem.

När det kommer till krypton och slumptalsgeneratorer har vi i dag lösningar som ger bra mycket skydd och hög prestanda/kapacitet till realistiska kostnader för väsentligen alla problem och användningsfall. Problemen är istället oftast att få till praktiskt fungerande implementationer, få till säker användning, hantera alla buggar, sidoattacker (inklusive social ingejörskonst) och rena misstag. Och för dessa enkla men viktiga problem är sällan rätt svar kvantfenomen som kräver masrar kylda med flytande väte för att fungera.

Tyvärr har fysikerna bakom den nya slumptalsgeneratorn dessutom fel i sak, vilket visar att dom inte kan applikationsomrepdet. Dom säger:

To date, most random number generators are based on computer algorithms. Although computer generated random numbers can be useful, knowing the input conditions to the algorithm will lead to predictable and reproducible output, thus making the numbers not truly random. To overcome this issue, random number generators relying on inherently random physical processes, such as radioactive decay and chaotic behaviour in circuits, have been developed.”

Detta är inte korrekt. Moderna slumptalsgeneratorer i operativsystem bygger inte på algoritmer som är deterministiska. Mer exakt – dom bygger inte bara på deterministiska algoritmer. Algoritm och fysiska slumpmässiga källor är inte ömsesidigt uteslutande. En modern slumptalsgenerator, som finns i alla operativsystem består grovt sett av två delar.

Den första delen är en eller flera entropikällor. Från entropikällorna samlas värden från slumpmässiga, fysiska händelser in. Exempel på entropikällor som används är tid mellan tangentbordstryckningar, skillnad i läshastighet från en hårddisk, digitala ringoscillatorer i chip eller termiskt brus i radiomottagare. Bra entropikällor ger många händelser/tidsenhet och är dessutom svåra eller helst omöjliga att manipulera. Kombinationen hög prestanda och tålig mot påverkan är svår att få till. Därför används ofta mer än en entropikälla och källorna övervakas för att detektera fel.

Den andra delen består ofta av en deterministisk algoritm – en psedudoslumpgenerator (PRNG). Oftast skapas PRNG:n genom att använda kryptografiska hashfunktioner som SHA-256, strömkrypton som RC4 eller Snow, eller blockkrypton som AES i en strömkryptomod som CTR. Den insamlade entropin anvönds för att initiera PRNGn. Efter att PRNG:n genererat ett visst antal värden startas PRNG:n om med nya värden från entropikällan. Ibland sker även en viss filtrering (whitening) mellan entropikällan och PRNG:n, detta för att ta bort värdemässiga vridningar (bias) så att de möjliga initieringsvärdena (ofta kallade frön) är så likafördelade som möjligt.

Kombinationen av flera entropikällor från vilka värden samlas in, och en bra, säker PRNG ger slumptalsgeneratorer som är tåliga mot störningar och med kapacitet att generera stora mängder slumptal med bra kvalitet. Ett bra exempel på detta är Intels nya slumptalsgenerator Bull Mountain som finns i Ivy Bridge-processorerna som släpptes igår 2012-04-23.

Bull Mountain har en entropikälla kapabel att generera flera Gbit/s i rådata. Rådatat filtreras med AES i CBC-mod. Värdena ut från filtreringen används sedan för att initiera en PRNG byggd med AES-CTR. Bull Mountain ger bättre prestanda än fysikernas generator, är kostnadseffektiv (i jämförelse med fysikernas lösning), drar lite ström, finns direkt tillgänglig för applikationer genom RdRand-instruktionen och kommer att finnas i miljontals med datorer, laptops och prylar inom ett par år.

Ivy Bridge-core
Intels Ivy Bridge-processor. De fyra processorkärnorna delar på en Bull Mountain-generator.

Ett annat bra exempel är slumptalsgeneratorn i Yubicos YubiHSM som har två olika entropikällor vilka matar en PRNG byggd med AES. Allt förpackat i en billig och enkel USB-sticka, vilket gör den lätt att integrera.

YubiHSM intui en server.
YubiHSM monterad i en server.

Intels Bull Mountain/RdRand och YubiHSM tycker jag är mycket, mycket mer spännande och viktigare ur ett användbart säkerhetsperspektiv än fysikernas labbutrustning.


Entropikällan i den nya generatorn.

(Fysikerna säger att den nya källan inte går att manipulera. Men jag fungerar på hur svårt det är att störa källan, ex med en annan laser. Även om kvantfenomenet i sig inte går att manipulera är sensorn ofta det som attackeras.)

Och till sist kan jag inte låta bli att sucka lite över hur fysikerna försöker få ut sin nya fina slumptalsgenerartor. Ja, det är jättefint att det finns ett JSON API (Github-projekt som pratar med generartorn), eller att jag kan gå och få några byte data genererat på webbsidan (som är seg). Men det finns ingen som helst säkerhet kopplad till API:t eller webbsidan.

Själva poängen med en bra slumptalsgenerator är ju att du ska kunna lita på den. Om generatorn sitter inuti min processor är det lättare att lita på den än om den befinner sig i Australien och att datat skickas utan något som helst skydd mot manipulation, äkthetskontroll eller avlyssning.

2 reaktioner på ”Fysiker som bygger säkerhet kontra Intels Bull mountain

  1. Slumptalsgeneratorer har andra tillämpningar än säkerhet. Bara säkerhetstillämpningar kräver skydd mot avlyssning.

    1. Visst. Det finns många slumptalgeneratorer som används för annat än säkerhet. Simuleringar, internt i system, spel och mycket, mycket mer. Riktiga arbetshästar. I vissa fall (ex simulering) är det otroligt viktigt att det går att upprepa processen. Då är en PRNG att föredra.

      Ibland är det inte heller lika/rektangelfördelning som behövs, utan säg normalfördelning, poisson, gamma etc. Kolla ex i Matlabs utbud av olika fördelningar.

      Men det viktiga är att det även för funktioner internt i system – för saker som processnummer, sessionsnummer har visat sig viktigt att ha bra slumptal.
      Behovet av kryptografiskt starka slumptal har därför ökat genom åren.

      BTW: Säkerhetstillämpningar kräver ofta helt andra saker än skydd mot avlyssning, exempelvis äkthetskontroll och integritetskontroll. Konfidentialitet är bara en aspekt som du kanske behöver.

Kommentera

E-postadressen publiceras inte. Obligatoriska fält är märkta *

Följande HTML-taggar och attribut är tillåtna: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>