A számítógépek valódi véletlen számokat generálhatnak bizonyos külső adatok, például egérmozgások vagy rajongói zajok figyelembevételével, amelyek nem kiszámíthatóak, és adatok generálását. Ez entrópiaként ismert. Más időkben algoritmussal generálnak "ál-véletlen" számokat, így az eredmények véletlenszerűnek tűnnek, még ha nem is.
Ez a téma az utóbbi időben vitathatóbbá vált, sokan megkérdőjelezik, hogy az Intel beépített hardveres véletlenszám-generátor chipje megbízható-e. Ahhoz, hogy megértsük, miért nem lehet megbízható, meg kell értenünk, hogy a véletlenszerű számok először genreáltak, és mire használják őket.
Milyen véletlen számokat használnak
A véletlen számokat évezredek óta használják. Függetlenül attól, hogy egy érmét forgat vagy dobott egy kockát, a cél az, hogy a végeredményt véletlenszerű esélyre hagyja. Számítógépes véletlen számgenerátorok hasonlóak - próbálnak kiszámíthatatlan, véletlenszerű eredményeket elérni.
A véletlenszám-generátorok sokféle célra hasznosak. Eltekintve a nyilvánvaló alkalmazásoktól, mint például a véletlenszerű számok létrehozása a szerencsejátékok szempontjából, vagy előre nem látható eredmények létrehozása a számítógépes játékban, a véletlenszerűség fontos a titkosításhoz.
A kriptográfia olyan számokat igényel, amelyeket a támadók nem találhatnak. Nem használhatjuk ugyanazt a számokat újra és újra. Ezeket a számokat nagyon kiszámíthatatlan módon szeretnénk létrehozni, így a támadók nem tudják kitalálni őket. Ezek a véletlen számok nélkülözhetetlenek a biztonságos titkosításhoz, függetlenül attól, hogy titkosítja-e a saját fájljait vagy csak HTTPS-webhelyet használ az interneten.
Valódi véletlen számok
Lehet, hogy kíváncsi, hogy a számítógép valójában egy véletlen számot generálhat. Hol származik ez a "véletlen". Ha ez csak egy darab számítógépes kód, nem lehetséges, hogy a számítógép által létrehozott számok kiszámíthatóak lennének?
Általában csoportosítjuk a véletlenszerű számokat a számítógépek két típusba, attól függően, hogy hogyan generáltak: "Igaz" véletlen számok és pszeudo-véletlen számok.
Az "igaz" véletlen szám létrehozásához a számítógép valamilyen fizikai jelenséget végez, amely a számítógépen kívülre kerül. Például a számítógép képes mérni egy atom radioaktív bomlását. A kvantumelmélet szerint nem lehet biztos abban, hogy radioaktív bomlás következik be, tehát ez lényegében "tiszta véletlenszerűség" az univerzumból. A támadó nem tudná megjósolni, hogy mikor fog bekövetkezni a radioaktív bomlás, ezért nem ismerik a véletlen értéket.
Napról napra a számítógépen a légköri zajra támaszkodhat, vagy egyszerűen csak akkor használja a pontos időt, amikor a billentyűzet gombjait a kiszámíthatatlan adatok vagy entrópia forrásaként használja. Például a számítógép észreveheti, hogy pontosan 0,23423523 másodperccel megnyomta a gombot egy gomb megnyomása után.Ezzel a gombnyomással kapcsolatos konkrét időket elegendő ideig megragadni, és az entrópia forrása az "igazi" véletlenszerű szám. Ön nem egy kiszámítható gép, így a támadó nem tudja megmondani a pontos pillanatot, amikor megnyomja ezeket a gombokat. A Linux / dev / véletlenszerű eszköz, amely véletlen számokat generál, "blokkolja", és nem ad vissza eredményt, amíg elég entrópiát nem gyűjt, hogy valóban véletlen számot kapjon.
Pszeudorandom számok
A pszeudorandom számok alternatívak az "igaz" véletlen számokhoz. A számítógép egy magértéket és egy algoritmust használhat olyan számok létrehozására, amelyek véletlenszerűnek tűnnek, de valójában előre kiszámíthatóak. A számítógép nem gyűjt véletlenszerű adatokat a környezetből.
Ez nem feltétlenül rossz helyzet minden helyzetben. Például, ha videojátékot játszik, nem számít, hogy az adott játékban fellépő események "valódi" véletlen számok vagy áljelölt számok között vannak-e. Másrészt, ha titkosítást használsz, nem akarsz olyan áljelölt számokat használni, amelyeket a támadó kitalálhat.
Tegyük fel például, hogy egy támadó ismeri az algoritmust és a vetőmag értéket, amelyet egy álnév-generátor használ. Tegyük fel, hogy egy titkosítási algoritmus egy pseudorandom számot kap ezen algoritmusból, és azt felhasználja titkosítási kulcs létrehozásához további véletlenszerűség hozzáadása nélkül. Ha a támadó elegendő, akkor hátrafelé dolgozhatnak, és meghatározhatják a titkosított számot, amelyet a titkosítási algoritmusnak ebben az esetben kell kiválasztania, megtörve a titkosítást.
Az NSA és az Intel hardveres véletlenszám-generálója
A fejlesztők számára a dolgok megkönnyítése és a biztonságos véletlenszámok létrehozása érdekében az Intel chipek tartalmaznak egy hardveres véletlenszám-generátort, amely RdRand néven ismert. Ez a chip egy entrópia forrást használ a processzoron, és véletlenszerű számokat ad a szoftvereknek, amikor a szoftver kéri őket.
A probléma az, hogy a véletlenszám-generátor lényegében fekete doboz, és nem tudjuk, mi történik benne.Ha az RdRand egy NSA backdoor-ot tartalmazott, a kormány képes lenne megtörni a titkosító kulcsokat, amelyeket csak a véletlenszám-generátor által szolgáltatott adatok generáltak.
Ez komoly aggodalomra ad okot. 2013 decemberében a FreeBSD fejlesztõi eltávolították a támogatást az RdRand közvetlen használatának véletlen forrásaiként, mondván, hogy nem bíznak bennük. [Source] Az RdRand eszköz kimenete egy másik algoritmusba kerül, amely további entrópiát eredményez, biztosítva, hogy a véletlenszám-generátor bármely hátsó része ne számítson. A Linux már így is dolgozott, tovább véletlenszerűen véletlenszerűen az RdRandből származó véletlenszerű adatokat, hogy még akkor sem lenne kiszámítható, ha hátsóajtó lenne. [Forrás] Az Intel vezérigazgatója, Brian Krzanich egy nemrégiben megjelent AMA ("Ask Me Anything") a Reddit-ről nem adott választ ezekkel az aggodalmakkal kapcsolatban. [Forrás]
Természetesen ez valószínűleg nem csak az Intel chipjeinek problémája. A FreeBSD fejlesztõi név szerint is felhívták a Via zsetonjait. Ez az ellentmondás azt mutatja, hogy miért olyan valóságos véletlen számok generálása, amelyek valóban véletlenszerűek és nem kiszámíthatóak, olyan fontos.
Valódi véletlen számok létrehozásához a véletlenszerű számgenerátorok összegyűlnek "entrópia" vagy látszólag véletlenszerű adatok a körülöttük lévő fizikai világból. Véletlenszerű számokra, amelyek nem igazán véletlenszerűnek kell lenniük, csak egy algoritmust és egy magértéket használhatnak.