Com els ordinadors generen números aleatoris

Els ordinadors generen un nombre aleatori per a tot, des de la criptografia fins als videojocs i el joc. Hi ha dues categories de nombres aleatoris (nombres aleatoris "veritables" i nombres pseudoreatorials) i la diferència és important per a la seguretat dels sistemes de xifratge.

Els ordinadors poden generar nombres realment aleatoris observant algunes dades externes, com els moviments del ratolí o el soroll del ventilador, que no és previsible, i creant-ne dades. Això es coneix com a entropia. Altres vegades, generen números "pseudoreatorials" mitjançant un algorisme, de manera que els resultats apareixen aleatoris, tot i que no ho són.

Aquest tema s’ha convertit en més controvertit recentment, i molta gent es pregunta si el xip generador de números aleatoris de maquinari integrat per Intel és fiable. Per entendre per què pot no ser fiable, haureu d’entendre com es generen números aleatoris en primer lloc i per a què s’utilitzen.

Per a què s’utilitzen els números aleatoris

Els números aleatoris s’utilitzen des de fa molts milers d’anys. Ja sigui tirar una moneda o tirar un dau, l’objectiu és deixar el resultat final a l’atzar. Els generadors de números aleatoris en un ordinador són similars: intenten aconseguir un resultat aleatori i imprevisible.

RELACIONATS:Què és el xifratge i com funciona?

Els generadors de números aleatoris són útils per a molts propòsits diferents. A part d'aplicacions òbvies, com ara generar números aleatoris a efectes de jugar o crear resultats imprevisibles en un joc d'ordinador, l'atzar és important per a la criptografia.

La criptografia requereix números que els atacants no poden endevinar. No podem fer servir els mateixos números una i altra vegada. Volem generar aquests números d’una manera molt imprevisible perquè els atacants no els puguin endevinar. Aquests números aleatoris són essencials per al xifratge segur, tant si esteu encriptant els vostres propis fitxers com si només utilitzeu un lloc web HTTPS a Internet.

Nombres aleatoris vertaders

És possible que us pregunteu com un ordinador pot generar realment un nombre aleatori. D’on ve aquesta “aleatorietat”. Si només es tracta d’un codi de l’ordinador, no és possible que siguin previsibles els números que genera l’ordinador?

En general, agrupem els nombres aleatoris que generen els ordinadors en dos tipus, segons com es generin: nombres aleatoris "vertaders" i nombres pseudoaleatoris.

Per generar un número aleatori "veritable", l'ordinador mesura algun tipus de fenomen físic que té lloc fora de l'ordinador. Per exemple, l'ordinador podria mesurar la desintegració radioactiva d'un àtom. Segons la teoria quàntica, no hi ha manera de saber amb seguretat quan es produirà la desintegració radioactiva, de manera que es tracta essencialment d’una “aleatorietat pura” de l’univers. Un atacant no seria capaç de predir quan es produiria la desintegració radioactiva, de manera que no coneixeria el valor aleatori.

Per obtenir un exemple més del dia a dia, l'ordinador pot confiar en el soroll atmosfèric o simplement utilitzar l'hora exacta en què premeu les tecles del teclat com a font de dades impredictibles o d'entropia. Per exemple, és possible que el vostre ordinador noti que heu premut una tecla exactament a 0,23423523 segons després de les 14 hores. Agafeu prou temps específics associats a aquestes pulsacions de tecles i tindreu una font d'entropia que podeu utilitzar per generar un "veritable" aleatori número. No sou una màquina previsible, de manera que un atacant no pot endevinar el moment precís en prémer aquestes tecles. El dispositiu / dev / random a Linux, que genera nombres aleatoris, es bloqueja i no retorna cap resultat fins que no reuneix prou entropia per retornar un número realment aleatori.

Nombres Pseudorandom

Els nombres pseudoaleatoris són una alternativa als nombres aleatoris "vertaders". Un ordinador podria utilitzar un valor inicial i un algorisme per generar nombres que semblen ser aleatoris, però que de fet són previsibles. L’ordinador no recull cap dada aleatòria de l’entorn.

Això no necessàriament és dolent en totes les situacions. Per exemple, si jugueu a un videojoc, realment no importa si els esdeveniments que es produeixen en aquest joc siguin causats per nombres aleatoris "veritables" o nombres pseudoaleatoris. D’altra banda, si utilitzeu xifratge, no voleu utilitzar nombres pseudoaleatoris que un atacant podria endevinar.

Per exemple, suposem que un atacant coneix l'algorisme i el valor de llavor que utilitza un generador de números pseudoreator. I suposem que un algoritme de xifrat obté un número pseudoreatorial d’aquest algorisme i l’utilitza per generar una clau de xifratge sense afegir cap aleatorietat addicional. Si un atacant en sap prou, podria treballar cap enrere i determinar el número pseudoaleatori que l'algoritme de xifratge ha d'haver escollit en aquest cas, trencant el xifratge.

El generador de números aleatoris de maquinari de NSA i Intel

Per facilitar les coses als desenvolupadors i ajudar a generar números aleatoris segurs, els xips Intel inclouen un generador de números aleatoris basat en maquinari conegut com a RdRand. Aquest xip utilitza una font d’entropia al processador i proporciona números aleatoris al programari quan el programari els sol·licita.

El problema aquí és que el generador de números aleatoris és essencialment una caixa negra i no sabem què passa al seu interior. Si RdRand contingués una porta posterior NSA, el govern seria capaç de trencar les claus de xifratge que només es generaven amb les dades subministrades per aquest generador de números aleatoris.

Aquesta és una preocupació seriosa. Al desembre de 2013, els desenvolupadors de FreeBSD van eliminar el suport per utilitzar RdRand directament com a font d’atzar, dient que no podien confiar-hi. [Font] La sortida del dispositiu RdRand s'introduiria en un altre algorisme que afegeix una entropia addicional, garantint que les portes posteriors del generador de números aleatoris no tindrien importància. Linux ja funcionava d’aquesta manera, aleatoritzant encara més les dades aleatòries provinents de RdRand de manera que no seria previsible fins i tot si hi hagués una porta posterior. [Font] En un recent AMA ("Pregunta'm qualsevol cosa") a Reddit, el director general d'Intel, Brian Krzanich, no va respondre a preguntes sobre aquestes preocupacions. [Font]

Per descomptat, això probablement no sigui només un problema amb els xips Intel. Els desenvolupadors de FreeBSD també van anomenar els xips de Via per nom. Aquesta controvèrsia demostra per què és tan important generar nombres aleatoris realment aleatoris i no previsibles.

Per generar nombres aleatoris "veritables", els generadors de nombres aleatoris recopilen "entropia" o dades aparentment aleatòries del món físic que els envolta. Per als números aleatoris que no ho fan realment han de ser aleatoris, només poden utilitzar un algorisme i un valor inicial.

Crèdit de la imatge: rekre89 a Flickr, Lisa Brewster a Flickr, Ryan Somma a Flickr, huangjiahui a Flickr


$config[zx-auto] not found$config[zx-overlay] not found