WireGuard VPN -kirjan kirjoittaja Jason A. Donenfeld ilmoitti hiljattain uudesta , päivitetystä RDRAND-satunnaislukugeneraattorin toteutuksesta , joka vastaa /dev/random- ja /dev/urandom-laitteiden toiminnasta Linux-ytimessä.
Marraskuun lopussa Jason pääsi satunnaisohjaajan ylläpitäjien listalle ja on nyt julkaissut ensimmäiset työnsä tulokset.
Tiedotteessa mainitaan, että uusi toteutus on merkittävä siinä, että siinä käytetään BLAKE2s-hajautusfunktiota SHA1:n sijaan entropian sekoitusoperaatioissa.
BLAKE2:lla itsessään on se hieno ominaisuus, että se perustuu sisäisesti
ChaCha-permutaatio, jota RNG jo käyttää laajentamiseen, joten
uutuuden, omaperäisyyden tai hämmästyttävän suorittimen kanssa ei pitäisi olla ongelmia
käyttäytyminen, koska se perustuu johonkin, joka on jo käytössä.
Lisäksi on syytä huomata, että muutos paransi myös pseudo-satunnaislukugeneraattorin turvallisuutta poistamalla ongelmallisen SHA1-algoritmin ja estämällä RNG-alustusvektorin päällekirjoituksen. Koska BLAKE2s-algoritmi suoriutuu SHA1:tä paremmin, sen käytöllä oli myös positiivinen vaikutus pseudo-satunnaislukugeneraattorin suorituskykyyn (testit Intel i7-11850H -prosessorilla varustetulla järjestelmässä osoittivat 131 %:n nopeuden kasvun).
Toinen korostettu etu on entropiaseoksen siirtäminen BLAKE2:een, joka yhdistää käytettyjä algoritmeja: BLAKE2:ta käytetään ChaCha-salauksessa, jota käytetään jo satunnaisten sekvenssien poimimiseen.
BLAKE2s on yleisesti ottaen nopeampi ja varmasti turvallisempi, mutta sitä on vakavasti vaarannettu. Lisäksi nykyinen RNG-rakenne ei hyödynnä täyttä SHA1-funktiota määritellyllä tavalla ja sallii IV:n dokumentoimattoman ylikirjoittamisen RDRAND-tulosteella , vaikka RDRANDia ei olisi määritetty "luotettavaksi", mikä viittaa mahdollisesti haitallisiin IV-asetuksiin.
Ja sen lyhyt pituus tarkoittaa , että vain puoliksi salassa pitäminen syötettäessä sitä takaisin mikserille antaa meille vain 2^80 bittiä eteenpäin tapahtuvaa salassapitoa. Toisin sanoen, tiivistefunktion valinta ei ole ainoastaan vanhentunutta, vaan sen käyttö ei myöskään ole kovin hyvää.
Lisäksi satunnaispuhelussa käytettyyn salaussuojattuun CRNG-pseudosatunnaislukugeneraattoriin on tehty parannuksia.
Mainitaan myös, että parannukset rajoittuvat hitaan RDRAND-generaattorin kutsumisen rajoittamiseen entropiaa laskettaessa, mikä voi parantaa suorituskykyä 3,7-kertaisesti. Jason osoitti, että RDRAND-kutsu on järkevä vain tilanteessa, jossa CRNG:tä ei ole vielä täysin alustettu, mutta jos CRNG:n alustus on valmis, sen arvo ei vaikuta luodun sekvenssin laatuun, ja tässä tapauksessa se on mahdollista tehdä kutsumatta RDRANDia.
Tämän sitoumuksen tavoitteena on ratkaista nämä kaksi ongelmaa ja samalla ylläpitää yleinen rakenne ja semantiikka mahdollisimman lähellä alkuperäistä.
Erityisesti:a) Sen sijaan, että kirjoittaisit hash IV:n päälle RDRAND:lla, laitamme BLAKE2:een dokumentoidut "suolan" ja "henkilökohtaiset" kentät, jotka ovat luotu erityisesti tämän tyyppistä käyttöä varten.
b) Koska tämä funktio palauttaa täydellisen tiivisteen tuloksen entropian keräilijä, palautamme vain puolet pituudesta hash, aivan kuten ennenkin. Tämä lisää rakentamisen ennakkosalaisuus 2 ^ 80 a 2 ^ 128 paljon mukavampaa.
c) Sen sijaan, että käyttäisit vain raakaa "sha1_transform"-funktiota, sen sijaan käytämme täydellistä ja asianmukaista BLAKE2s-toimintoa täydennettynä.
Muutokset on määrä sisällyttää ytimeen 5.17 , ja kehittäjät Ted Ts'o (toinen satunnaisen ajurin ylläpidosta vastaava henkilö), Greg Kroah-Hartman (vastaa Linux-ytimen vakauden ylläpidosta) ja Jean-Philippe Aumasson (BLAKE2/3-algoritmien tekijä) ovat jo tarkistaneet ne.
Lopuksi, jos olet kiinnostunut oppimaan lisää, löydät tiedot seuraavasta linkistä.