Amikor a privát kulcsaid biztonságáról van szó, a legtöbben elkövetik azt a hibát, hogy a számítógépük beépített, látszólag véletlenszerű funkcióira bízzák a sorsukat. A valódi, visszafejthetetlen véletlen azonban nem szoftveres eredetű. Ha igazán nyugodtan akarsz aludni, miközben a kriptográfiai kulcsaid maximális biztonságához szükséges eljárásokat keresed, akkor a modern "zaj-diktatúra": így építs saját, hardveres EMI-alapú véletlenszám-generátort (TRNG) a kriptográfiai kulcsaid maximális biztonságához című írásom neked szól. Ez nem egy bonyolult elméleti értekezés, hanem egy kézzelfogható megoldás azokra a problémákra, amiket a digitális világ szürke zajszintje okoz.
A számítógépek alapvetően determinisztikusak, vagyis minden lépésüket egy előre megírt utasításrendszer vezérli. A legtöbb operációs rendszer úgynevezett pszeudo-véletlenszám-generátorokat (PRNG) használ. Ezek egy adott kezdeti értékből, a seedből indulnak ki, és egy matematikai algoritmus segítségével generálnak látszólag kiszámíthatatlan számsorozatot.
Ha valaki ismeri ezt a kezdőértéket és az algoritmust, a teljes számsorozatot újra tudja alkotni. Ez a kriptográfia legnagyobb ellensége. A valódi véletlen (TRNG – True Random Number Generator) ezzel szemben valamilyen fizikai folyamatra támaszkodik, amelyet lehetetlen előre jelezni vagy reprodukálni. Ilyen fizikai jelenség például az elektromágneses interferencia (EMI), a termikus zaj vagy a radioaktív bomlás.
Az EMI vagyis az elektromágneses interferencia mindenhol jelen van. A falban futó vezetékek, a Wi-Fi jelek, a mobiltelefonok és a közeli elektromos eszközök folyamatosan apró, kaotikus zavarjeleket bocsátanak ki a környezetünkbe. Ha egy egyszerű antennát csatlakoztatsz egy analóg-digitális konverterhez, akkor ezt a környezeti zajt képes vagy befogni.
Ez a zaj önmagában nem rendezett, és ami a legfontosabb, nem tartalmaz semmilyen mintázatot. Amikor ezt a zúgást digitális jellé alakítod, olyan bitfolyamot kapsz, amely statisztikailag tökéletesen egyenletes eloszlású. Ebből az alapanyagból aztán kiváló kriptográfiai kulcsokat lehet formálni, amik ellenállnak a statisztikai elemzéseken alapuló támadásoknak.
Nem kell mérnöki diploma ahhoz, hogy összehozz egy ilyen eszközt. Pár alkatrész beszerezhető bármelyik hobbi elektronikai boltból. A cél az, hogy a környezeti elektromágneses zajt felerősítsük, majd egy mikrokontrollerrel feldolgozzuk.
Az alábbi elemekre lesz szükséged:
Miután összekötötted az antennát a műveleti erősítővel, a kimenő jelet a mikrokontroller analóg portjára kell kötnöd. A programozás során nem az a cél, hogy egy sima jelet mérj, hanem hogy a zajt mintavételezd. A leggyakoribb hiba, hogy az olvasott értékek között korreláció lép fel. Ezt úgy tudod kiküszöbölni, ha a mintavételezés frekvenciáját nem hangolod össze semmilyen órajellel.
Az így kapott értékekből a legkevésbé jelentős biteket (Least Significant Bits) érdemes kinyerni. Ezekben a bitekben rejlik a valódi káosz. A kinyert biteket aztán egy úgynevezett von Neumann-algoritmuson keresztül futtatod át, ami kiküszöböli a statisztikai torzítást, és garantálja, hogy a kimenetünk valódi, magas entrópiájú véletlen legyen.
Amikor elkészült az eszközöd, a mikrokontrollert USB-n keresztül csatlakoztathatod a számítógépedhez. Egy egyszerű szkripttel a kimeneti adatfolyamot elmentheted egy fájlba, vagy közvetlenül bevezetheted egy GPG-kulcs generáló folyamatba.
A legfontosabb szabály, hogy soha ne bízz meg vakon az általad épített hardverben sem az első napon. Érdemes futtatni rajta különböző statisztikai tesztcsomagokat, mint amilyen az ent vagy a dieharder. Ezek a programok képesek kimutatni, ha a zajforrásod mégsem lenne elég véletlenszerű, vagy ha valami szisztematikus hiba csúszott volna az áramkörbe.
A hardveres véletlenszám-generátor nemcsak a szoftveres támadások ellen véd, hanem a fizikai kompromittálódás ellen is. Ha a számítógéped operációs rendszere fertőzött, a szoftveres véletlenszám-generátorok kimenetét könnyen kitalálhatják. Az EMI-alapú generátorod viszont a géptől független, külső forrásból táplálkozik.
Néhány dolog, amire érdemes figyelni a gyakorlatban:
A saját TRNG megépítése egyfajta technológiai függetlenséget ad. Nem a szoftverfejlesztő cégek matematikai modelljeire támaszkodsz, hanem a körülötted lévő univerzum folyamatos, zajos rezgéseire. Ez a megközelítés a valódi önrendelkezés alapja a digitális térben, ahol a bizalom helyét a fizikai valószínűség számítások veszik át. Ne elégedj meg az átlagos biztonsággal, amikor egy kis kreativitással és néhány elektronikai alkatrésszel te magad is irányíthatod a kriptográfiai véletlened forrását.