- COMP.SEC.100
- 21. Laitteiston tietoturvallisuus
- 21.4 Entropiaa tuottavat rakennusosat (syventävä)
Entropiaa tuottavat rakennusosat (syventävä)¶
Entropialähteet ovat välttämättömiä turvallisuus- ja yksityisyysprotokollien toimintojen kannalta. Tässä osiossa käsitellään kahta tärkeää elektroniseen teknologiaan liittyvää entropialähdettä: satunnaislukugeneraattoreita ja fyysisesti ei kopioitavissa olevia toimintoja.
Satunnaislukujen tuottaminen (syventävä)¶
Turvallisuus ja yksityisyys perustuvat ensisijaisesti vahvoihin salausalgoritmeihin ja protokolliin. Entropian lähde on erittäin olennainen näissä protokollissa: satunnaislukuja käytetään istuntoavainten luomiseen, nonce-toiminnoissa, alustusvektorien tuoreuden lisäämisessä jne. Satunnaislukuja käytetään myös luotaessa suojaa, kun halutaan peittää toteutettuja vastatoimia hyökkääjiltä, satunnaisia osuuksia monen osapuolen laskentatapahtumissa, nolla-tietotodistuksia jne. Tässä osiossa keskitytään kryptografisesti turvallisiin satunnaislukuihin joita tietoturvasovelluksissa tyypillisesti käytetään. Satunnaislukuja käytetään myös kryptografian ulkopuolella, esim. peleissä, lottosovelluksissa, stokastisissa simulaatioissa jne.
Yleisesti ottaen satunnaisluvut on jaettu kahteen pääluokkaan: näennäissatunnaislukugeneraattoreihin (PRNG), jota kutsutaan myös deterministiseksi satunnaisbittigeneraattoriksi (DRBG) ja todellisiin satunnaislukugeneraattoreihin (TRNG) tai ei-deterministisiin satunnaisbittigeneraattoreihin (NRBG). Keskeisten satunnaislukutoteutusten suunnittelu, ominaisuudet ja testaus on kuvattu standardeissa Yhdysvaltalaisen NISTin toimesta. NIST on julkaissut standardin NIST800-90A deterministiselle satunnaislukugeneraattoreille, NIST800-90B entropialähteille ja NIST800-90C satunnaisten bittien luomisen rakenteet. Saksassa ja laajemmin suurimmassa osassa Eurooppaa on Saksalainen BSI julkaissut kaksi tärkeää standardia: AIS-20 toiminnallisuusluokille ja arviointikriteerit deterministisille satunnaislukugeneraattoreille ja AIS-31 fyysisille satunnaislukugeneraattoreille.
Ihanteellisen RNG:n pitäisi tuottaa kaikki mahdolliset luvut täysin samalla todennäköisyydellä. Toiseksi nämä luvut tulee olla riippumattomia RNG:n luomista edellisistä tai seuraavista numeroista, joita kutsutaan eteenpäin ja taaksepäin salaukseksi. Todennäköisyydet varmistetaan tilastollisilla testeillä. Jokainen standardi sisältää suuren joukon tilastollisia testejä, joiden tarkoituksena on löytää tilastollisia heikkouksia. Tulevien arvojen ennustaminen tai aikaisempien arvojen taaksepäin johtaminen tulee olla mahdotonta toteuttaa. Tämä on tärkeää paitsi monissa tietoturvasovelluksissa, esim. kun satunnaislukuja käytetään avainten luomiseen tai myös monissa peleissä ja arpajais-sovelluksissa.
Näennäissatunnaislukugeneraattorit ovat deterministisiä algoritmeja, jotka luovat bittien tai numeroiden sekvenssin, jotka näyttävät satunnaisilta, mutta jotka on generoitu deterministisellä prosessilla. PRNG toteutukset ovat deterministisia prosesseja, kun ne alkavat samalla alkuarvolla, ja samalla sekvenssillä luodaan numeroita. Siksi on tärkeää, että PRNG toteutukset alkavat eri käynnistysarvolla joka kerta kun PRNG käynnistetään. Algoritmin ensimmäinen siemenluku voidaan tuottaa myös hitaalla todellisella satunnaisluvulla, joka generoi tai toteuttaa vähintään ei-toistuvan arvon, esim. kuten monotoninen kasvava laskuri. PRNG:tä kutsutaan kryptografisesti turvalliseksi, jos hyökkääjä joka oppii osan sarjasta, ei pysty sen perusteella laskemaan aiempia tai tulevia tuloksia. Kryptografisesti turvalliset PRNG:t luottavat salausalgoritmeihin eteenpäin ja taaksepäin toteutettavan salauksen takaamiseksi. Eteenpäinsalaus edellyttää säännöllistä jatkuvasti toteutettavaa simenlukulaskennan ja generaattorin uudelleen laskennan toteuttamista. Hybridi-RNG:llä on ylimääräinen ei-deterministinen syöte toteutettaessa PRNG.
PRNG:t tarjoavat ehdollisen suojan, joka perustuu taustalla olevan salausalgoritmin laskennalliseen monimutkaisuuteen. Katso lisätietoja kryptografian tietoalueesta. Sitä vastoin ihanteelliset todelliset satunnaislukugeneraattorit tarjoavat ehdottoman turvallisuuden sellaisenaan perustuen arvaamattomiin fysikaalisiin ilmiöihin. Näin todellisen satunnaislukugeneraattorin turvallisuus on taattu ja täysin riippumaton matematiikan ja krypto-analyysin kehittymisestä.
Todellisen satunnaislukugeneraattorin ydin koostuu entropialähteestä, joka on fyysinen ilmiö, jolla on täysin satunnainen käyttäytyminen. Elektroniikkapiireissä kohina- tai entropialähteet ovat perustuneet yleensä lämpökohinaan, tärinään ja metastabiilisuuteen. Nämä melulähteet eivät ole koskaan täydellisiä: niiden tuottamat bitit voivat näyttää harhaa tai korrelaatiota tai muita variaatioita. Siksi ne eivät toteutua täyttä entropiaa. Siksi niiden lisäksi käytetään tyypillisesti entropiaerottimia tai -puhdistimia. Nämä rakennuspalikat parantavat entropiaa lähtöbittiä kohden. Koska entropian erottajat ovat deterministisiä prosesseja, ne eivät voi lisätä kokonaisentropiaa. Joten ulostulon pituus tulee aina olemaan lyhyempi kuin syötteen sisäänmenopituus.
Ympäristöolosuhteista johtuen mm. lämpötilan tai jännitteen vaihteluiden vuoksi, luotujen numeroiden laatu saattaa vaihdella ajan myötä. Siksi standardit kuvaavat tiettyjä testejä, joita tulisi soveltaa luomisprosessin alussa ja jatkuvasti prosessin aikana. Testeistä voidaan erottaa kolme pääluokkaa. Ensimmäinen on täydellisen epäonnistumisen testi, jota sovelletaan entropian lähteeseen. Toisena pääluokkana ovat online-eheystestit, joilla seurataan entropian erottajien laatua. Kolmantena ovat jälkikäsiteltyjen bittien testejä. Testien toteutusvaatimukset on kuvattu aihepiirin eri standardeissa ja erikoiskirjallisuudessa.
TRNG:n suunnittelun haasteena on ensinnäkin tarjota selkeä ja vakuuttava todiste entropian lähteestä ja toiseksi online-testien suunnittelu, jotka ovat samalla kompakteja sekä voivat havaita laajan valikoiman vikoja. Tutkimuskohteena TRNG:n hyökkäykset, vastatoimet ja anturit, erityisesti IoT:n ja sulautettujen laitteiden kontekstissa, on aktiivinen tutkimuksen aihealue.