Ytimen satunnaisuuden loppuminen on houkutteleva selitys hitaalle VPN:lle ja lähes aina väärä oireelle, josta ihmiset raportoivat. Satunnaista tulostetta odottava isäntä pysähtyy tiettynä hetkenä, yleensä varhain käynnistyksessä tai avainten käsittelyn aikana. Tunneli, joka yhdistyy nopeasti ja siirtää sitten hitaasti kuvaa sen sijaan suorituskykyä. Erota nämä kaksi havaintoa ennen kuin asennat daemonin korjataksesi lukua, jonka lukemista et ole lopettanut.

Miksi myytti säilyy

Molemmat ongelmat ovat todellisia ja näyttävät kaukaa samoilta. Käynnistyspysähdyksiä juuri käynnistetyllä virtuaalikoneella todella tapahtuu, ja hidas muodostettu tunneli on yhtä todellinen. Virhe on olettaa, että toinen johtuu ensimmäisestä, koska salaus esiintyy jossain molemmissa tarinoissa. Mikään sanassa salaus ei vihjaa, että jokainen siirretty tavu kuluttaa tuoreen tavun ympäristön kohinaa.

Näin nämä generaattorit eivät toimi. Salauskirjasto pitää siemenellä varustettua generaattoria ja ottaa siitä tulostetta, siementäen uudelleen oman käytäntönsä mukaan, joten kallis hetki on siementäminen eikä tasainen siirto.

Mitä generaattori tekee pakettia kohden

OpenSSL 3:ssa oletusgeneraattorin hierarkia rakentuu DRBG-instansseista, jotka siementävät ja siementävät uudelleen kokoonpanon ja tilan mukaan. OpenVPN 2.6:ssa AEAD-datapolku johtaa noncensa paketin järjestysnumerosta yhdessä istuntokohtaisen implisiittisen arvon kanssa, kun taas vanhempi CBC-polku ottaa pseudosatunnaisen IV:n pakettia kohden. Kumpikaan malli ei tue sääntöä, että gigatavun siirtäminen kuluttaa gigatavun tuoretta ydinkohinaa. Molemmat tukevat ajatusta, että avainten luonti ja kättelyt ovat paikka, jossa siementäminen ratkaisee.

CBC-tapaus kannattaa nimetä, koska se näyttää myytiltä eikä ole sitä: sen pakettikohtainen IV tulee kirjaston generaattorista kirjaston omalla uudelleensiementämisaikataululla, ei koskaan ydinsoitosta pakettia kohden. Kun joku siteeraa tavukohtaista entropiakustannusta, kysy, mitä kirjastoversiota ja mitä koodipolkua he mittasivat.

Missä odotus oikeasti näkyy

Aseta aikaleimat vaiheiden ympärille, älä istunnon: käynnistys, todennus, avaimenvaihto ja siirto. Odotus ennen kuin tunneli on käyttökelpoinen on eri valitus kuin matala tasainen nopeus, ja vain toinen niistä viittaa satunnaisuuteen. Linuxissa tavallinen getrandom() pyyntö voi estyä, kunnes ytimen satunnaislähde on alustettu, minkä vuoksi tämän ongelman käynnistysversio on todellinen virtuaalikoneissa ja sulautetuissa levyissä, joilla on vähän ruokittavaa allasta alussa.

VaiheMitä suorittaaLukema, joka tarkoittaa odotustaLukema, joka tarkoittaa suorituskykyä
Käynnistys, ennen mitään tunneliasystemd-analyze critical-chainyksikkö, joka istuu sekunteja ennen kuin tunneli käynnistyyei sovellu, mitään ei vielä siirretä
Kättelyjournalctl -u openvpn-server@server -bpitkä aukko ennen kuin alustusjakso valmistuuei sovellu, tunneli ei ole pystyssä
Muodostettu siirtoss -tin vieressä sar -n DEV 1estynyt prosessi, jolla on tyhjät socket-jonottäydet jonot, uudelleenlähetykset ja yksi kiireinen säie

Kaksi halpaa komentoa kuuluvat kyseisen kokoelman alkuun, ja ne ratkaisevat helpot kysymykset ennen kuin taulukkoa edes tarvitaan. Laskuri, jota ne lukevat, on entropiakirjanpitoa eikä kaistanleveysmittari, ja yksittäinen tilannekuva ei voi näyttää, että prosessi on estynyt, kuinka kauan se odotti tai mitä rajapintaa sen kirjastokutsut käyttävät. Palautumisen jälkeen otettu näyte ohittaa pysähdyksen yleensä kokonaan, joten pidä ydinversio lukeman vieressä.

cat /proc/sys/kernel/random/entropy_avail
uname -r

Sovita korjaus lukemaan

Jos ydin todella odottaa alustusta, katso alustan tukemaa siemennyspolkua eikä tunnelia. Virtuaalikoneelle voidaan antaa isännän tarjoama satunnaislaite, kuten virtio-rng, ja kuvan valmistelu on tärkeää, koska muuttumattomana moniin vieraisiin kopioitu siemen ei ole riippumatonta alustusta. Jos kirjasto ilmoittaa siemennysvirheistä käynnistyksen jälkeen, tutki sen määritettyä lähdettä ja tarjoajan toimintaa sen sijaan, että muutat ydinasetuksia.

ss -tin dst 203.0.113.7
sar -n DEV 1 5

OpenSSL:n generaattorin dokumentaatio kuvaa, miten tämä hierarkia saa syötettä ja milloin uudelleensiementäminen tapahtuu, mikä on paljon kapeampi väite kuin myytti ja pätee vain kyseiseen toteutukseen. Entropiadaemon ei ole yleinen nopeuden korjaus, ja sen asentaminen laskurin nostamiseksi muuttaa turvallisuusoletusta osoittamatta viivettä. Suorituskyvyn osalta seuraa datapolkua: yksi kyllästetty säie, uudelleenlähetykset, ulkoinen häviö ja jonojen pudotukset tarvitsevat kukin eri korjauksen, ja puskurikoot käsittelevät socket-puskurointia omilla jonotodisteillaan.

Aiheeseen liittyvät artikkelit