Processorfabrikanten Via en Intel bieden in hun processoren een instructie aan om willekeurige getallen te genereren -de technologieën heten Padlock respectievelijk RDRAND. Zo’n ‘random number generator’ (RNG) speelt een belangrijke rol in heel wat cryptografische algoritmes. Doorgaans gebeurt het genereren van (pseudo)willekeurige getallen in software, maar het voordeel van een hardware-implementatie is dat die sneller is. Eén belangrijk nadeel: je weet nooit zeker wat de instructie precies doet en of er geen backdoor in zit. Wanneer je een open source besturingssysteem zoals Linux of FreeBSD draait, wil je kunnen vertrouwen op wat je computer doet. Maar als je besturingssysteem van Padlock of RDRAND gebruikmaakt, ben je nog altijd niet zeker of de NSA niet door een backdoor je encryptie verzwakt, zodat ze die kunnen kraken.

Unixachtige besturingssystemen gebruiken traditioneel het speciale bestand /dev/random als bron van willekeurige getallen voor alle software die daar om vraagt. Dat is een software-implementatie van een RNG, die zich baseert op zo willekeurig mogelijke gebeurtenissen zoals netwerkverkeer en schijfaanroepen. Als er een hardware-RNG -zoals Padlock of RDRAND- aanwezig is, gebruikt de Linux-kernel die ook als bron van willekeurige getallen voor /dev/random, maar dit is nooit als enige bron. In FreeBSD werd sinds de zomer van 2013 een aanwezige hardware-RNG als enige bron van willekeurige getallen gebruikt, maar in FreeBSD 10 zijn de ontwikkelaars daarvan afgestapt. In plaats van de willekeurige getallen van de hardware-RNG rechtstreeks aan /dev/random toe te kennen, worden die als ‘seed’ aan een software-RNG, het algoritme Yarrow, gevoed. De verklaring van de FreeBSD-ontwikkelaars: “We kunnen Intel en Via niet vertrouwen”. De nieuwe aanpak moet voorkomen dat een backdoor in een hardware-RNG voorspelbare ‘willekeurige’ getallen veroorzaakt. De beslissing was onder andere gebaseerd op de lekken door Snowden die duidelijk hebben gemaakt dat de NSA kosten noch moeite spaart om backdoors in hardware en software te plaatsen.