Dat die kernel se ewekansigheid opraak, is ’n aanloklike verklaring vir ’n stadige VPN, en byna altyd die verkeerde een vir die simptoom wat mense rapporteer. ’n Gasheer wat op ewekansige uitset wag, staak op ’n bepaalde oomblik, gewoonlik vroeg in die opstart of tydens sleutelhantering. ’n Tonnel wat vinnig verbind en dan stadig oordra beskryf eerder deurset. Skei daardie twee waarnemings voordat jy ’n daemon installeer om ’n getal reg te maak wat jy nog nie klaar gelees het nie.

Waarom die mite bly voortleef

Albei probleme is werklik en hulle lyk van ver af dieselfde. Opstartvertragings op ’n pas gebooste virtuele masjien gebeur wel, en ’n stadige gevestigde tonnel is net so werklik. Die fout is om aan te neem die tweede word deur die eerste veroorsaak omdat kriptografie iewers in albei verhale voorkom. Niks aan die woord enkripsie impliseer dat elke oorgedraagde greep ’n vars greep omgewingsgeraas verbruik nie.

Dis nie hoe hierdie genereerders werk nie. ’n Kriptografiese biblioteek hou ’n gesaaide genereerder en trek uitset daaruit, en hersaai volgens sy eie beleid, so die duur oomblik is saaing eerder as bestendige oordrag.

Wat ’n genereerder per pakket doen

In OpenSSL 3 word die standaardgenereerder-hiërargie gebou uit DRBG-instanties wat saai en hersaai volgens konfigurasie en toestand. In OpenVPN 2.6 lei die AEAD-datapad sy nonce af uit die pakket se volgordenommer saam met ’n per-sessie implisiete waarde, terwyl die ouer CBC-pad ’n pseudo-ewekansige IV per pakket trek. Nie een patroon ondersteun ’n reël dat die verskuif van ’n gigabyte ’n gigabyte vars kernelgeraas verbruik nie. Albei ondersteun wel die idee dat sleutelgenerering en handdrukke die plek is waar saaing saak maak.

Die CBC-geval is die moeite werd om te noem, want dit lyk soos die mite en is dit nie: sy per-pakket IV kom van die biblioteek se genereerder op die biblioteek se eie hersaaiskedule, nooit van ’n kernel-oproep per pakket nie. Wanneer iemand ’n per-greep entropiekoste aanhaal, vra watter biblioteekweergawe en watter koodpad hulle gemeet het.

Waar die wag werklik wys

Plaas tydstempels rondom die fases eerder as rondom die sessie: opstart, verifikasie, sleutelverandering en oordrag. ’n Wag voordat die tonnel bruikbaar word, is ’n ander klag as ’n lae bestendige tempo, en net een van hulle dui op ewekansigheid. Op Linux kan ’n normale getrandom() versoek blokkeer totdat die kernel se ewekansige bron geïnisialiseer is, en daarom is die opstartweergawe van hierdie probleem werklik op virtuele masjiene en ingebedde borde wat vroeg min het om die poel te voed.

FaseWat om te hardloopLesing wat wag betekenLesing wat deurset beteken
Opstart, voor enige tonnelsystemd-analyze critical-chain’n eenheid wat sekondes sit voordat die tonnel beginnie van toepassing nie, nog niks word oorgedra nie
Handdrukjournalctl -u openvpn-server@server -b’n lang gaping voordat die inisialiseringsreeks voltooi isnie van toepassing nie, die tonnel is nie op nie
Gevestigde oordragss -tin langs sar -n DEV 1’n geblokkeerde proses met leë sokkie-touevol toue, herversendings en een besige draad

Twee goedkoop opdragte hoort aan die begin van daardie versameling, en hulle besleg die maklike vrae voordat die tabel eers nodig is. Die teller wat hulle lees, is entropieboekhouding eerder as ’n bandwydtemeter, en ’n enkele momentopname kan nie wys dat ’n proses geblokkeer is, hoe lank dit gewag het, of watter koppelvlak sy biblioteekaanroepe gebruik nie. ’n Monster wat ná herstel geneem word, mis gewoonlik die staking heeltemal, so hou die kernelweergawe langs die lesing.

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

Pas die regstelling by die lesing

As die kernel werklik op inisialisering wag, kyk na die platform se ondersteunde saaipad eerder as na die tonnel. ’n Virtuele masjien kan ’n gasheer-verskafte ewekansige toestel soos virtio-rng kry, en beeldvoorbereiding maak saak, want ’n saad wat onveranderd na baie gaste gekopieer word, is nie onafhanklike inisialisering nie. As ’n biblioteek saaifoute ná opstart rapporteer, ondersoek sy gekonfigureerde bron en verskaffergedrag eerder as om kernelinstellings te verander.

ss -tin dst 203.0.113.7
sar -n DEV 1 5

Die OpenSSL se genereerderdokumentasie beskryf hoe daardie hiërargie invoer verkry en wanneer hersaaiing plaasvind, wat ’n veel smaller bewering is as die mite en een wat net vir daardie implementering geld. ’n Entropie-daemon is nie ’n universele spoedreparasie nie, en om een te installeer om ’n teller te laat styg, verander ’n sekuriteitsaanname sonder om ’n vertraging te demonstreer. Vir deurset, volg die datapad: een versadigde draad, herversendings, buitenste verlies en touverlies het elkeen ’n ander regstelling nodig, en bufferreekse spreek sokkiebufferring aan met hul eie toubewyse.

Verwante artikels