Publicerat test av slumptalsgeneratorn i Intels Ivy Bridge

Företaget Cryptography Research, som utvecklar säkerhetslösningar för digitala, integrerade system, har på Intels uppdrag analyserat den nya slumptalsgeneratorn i de nyligen släppta Ivy Bridge-processorerna. Resultatet av analysen har publicerats i ANALYSIS OF INTEL’S IVY BRIDGE DIGITAL RANDOM NUMBER GENERATOR, en mycket matig PDF.

Jag har ett par gånger tidigare skrivit om den nya slumptalsgeneratorn (RNG) kallad Bull Mountain (postning ett, postning två), och det som då fanns publicerat om var väsentligen det som fanns i en IEEE Spectrum-artikel om Bull Mountain samt Intels dokument som beskriver programvarugränssnittet.

Rapporten från Cryptography Research innehåller mycket mer och ny info om hur generatorn fungerar inklusive inbyggda testfunktioner, stöd för säkerhetsstandarden FIPS 140-2. Det schema över entropikällan som rapporten innehåller har tidigare inte publicerats och ger en delvis annan bild av funktionen. Enligt rapporten är entropikällan (ES) självklockande och genererar en klocka tillsammans med datat.

Entropikällan i Bull Mountain
Entropikällan i Bull Mountain

En intressant detalj är att det enligt rapporten finns två generationer av RNG:n, det är dock oklart om det syftar på en förseriegeneration respektive den som är i produktion i Ivy Bridge, eller om det kommer en ny generation i kommande processorarkitekturen Haswell/Broadwell.

En sak som skiljer mellan versionerna är stödet för en specifik FIPS 140-2-mod. Denna mod är till för att garantera att generatorn möter kraven i NISTs standard för kryptomoduler och att det därmed ska gå lättare att validera och certifiera moduler byggda med Intels processorer. FIPS 140-2-moden ska enligt rapporten vara utslagen i första generationen, men ska sedan vara påslagen. Dock är det oklart om det innebär att den då blir standardmoden, eller om moden måste slås på.

I rapporten påpekar man att ett bekymmer med att ha en entropikälla kopplad till en kryptografiskt start pseudo-slumpgenerator (PRNG) är att PRNG:n kan dölja problem i entropikällan. Intel har därför byggt in olika tester som vid uppstart och under drift övervakar entropikällans hälsa. Hälsokontrollen bygger på att analysera varje 256-bit block av data från ES och räkna förekomst av vissa mönster.

Hälsokontroll i Ivy Bridge
Hälsokontroll i Ivy Bridge

Som författarna till rapporten påpekar fångar detta långt ifrån alla beteenden som skiljer från ideal slumpmässighet. Men hälsokontrollen ska med hög säkerhet detektera om ES:en är trasig och fastnat i ett läge som genererar ett fixt värde eller ett fåtal olika värden. Det finns även andra tester som bedömer hälsan genom kedjan från ES till genererat värde från PRNG:n, samt styr hur ofta PRNG:n startas om.

Prestandamässigt ska generatorn enligt artikeln klara av att generera 800 MByte/s och Cryptograpgy Research ser inte att det finns risk för att applikationer ska kunna svälta ut varandra. Däremot varnar man i rapporten för risken att en virtualiserare skulle kunna virtualisera den nya RdRand-instruktionen, och att applikationer därmed skulle kunna få allt annat än slumptal.

Cryptography Research har prövat kvaliteten på de värden som RNG:n genererar. Dock hade man faktiskt inte tillgång till några kretsar, utan testdatat som användes skapades av Intel. Utifrån dessa tester ser RNG:n ut att möta krav som exempelvis de som definieras av NIST i SP 800-22.

Så vad är då rapportens slutsats. Jo, Intel ser ut att ha byggt en RNG som mer än väl möter de krav man kan ställa på en bra slumptalsgenerator. De underliggande mekanismerna ser sunda ut och ser snarast ut att vara konservativ. Rapporten påpekar bland annat att återstart av PRNG:n (reseed) sker oftare än vad exempelvis NIST rekommenderar i SP 800-90. Författarna till rapporten skriver:

In conclusion, we believe the Ivy Bridge RNG is well designed, with a wide margin of safety, and the output is appropriate to use directly for cryptographic keys, secret nonces, and other sensitive values. However, the most prudent approach is always to combine any other available entropy sources to avoid having a single point of failure.

For OS implementations that maintain an entropy pool, we recommend the frequent incorporation of RNG outputs as an additional input into the OS entropy pool. The exceptional performance of the Intel design also enables direct mixing of data from the
Ivy Bridge RNG outputs with output delivered from other RNGs. In all cases, users should check the carry flag after each call to the RNG to verify that it is working properly and the random data received is valid.

Förhoppningsvis får jag en egen kopia av Bull Mountain att leka med nästa vecka och då ska den bland annat få umgås med testerna i Dieharder. Återkommer här på bloggen med testresultat och lite bedömningar från testerna. Tills dess rekommenderar jag att läsa rapporten, den är mycket intressant (iaf om man gillar slumptalsgeneratorer)

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>