S'esgota l'entropia d'una VPN? Què mostra realment entropy_avail
Una aturada en arrencar i un túnel establert lent són avaries diferents. Llegeix l'etapa, el significat real del comptador i la cua abans de culpar l'atzar.
Quedar-se sense aleatorietat del nucli és una explicació atractiva per a una VPN lenta, i gairebé sempre la incorrecta per al símptoma que la gent descriu. Un equip que espera sortida aleatòria s'atura en un moment concret, normalment al principi de l'arrencada o durant la gestió de claus. Un túnel que es connecta ràpidament i després transfereix a poc a poc està descrivint, en canvi, el cabal. Separa aquestes dues observacions abans d'instal·lar un dimoni per arreglar un número que encara no has acabat de llegir.
Per què el mite sobreviu
Tots dos problemes són reals i de lluny semblen iguals. Les aturades d'inici en una màquina virtual acabada d'arrencar passen de debò, i un túnel establert lent és igual de real. L'error és suposar que el segon el causa el primer perquè la criptografia apareix en algun punt de les dues històries. Res de la paraula xifratge implica que cada byte transferit consumeixi un byte nou de soroll de l'entorn.
Així no funcionen aquests generadors. Una biblioteca criptogràfica manté un generador amb llavor i n'extreu sortida, resembrant segons la seva pròpia política, així que el moment car és la sembra, no la transferència constant.
Què fa un generador per paquet
A l'OpenSSL 3 la jerarquia de generadors per defecte es construeix amb instàncies de DRBG que sembren i ressembren segons la configuració i l'estat. A OpenVPN 2.6 la ruta de dades AEAD deriva el nonce del número de seqüència del paquet combinat amb un valor implícit per sessió, mentre que la ruta CBC més antiga treu un IV pseudoaleatori per paquet. Cap dels dos patrons no sosté la regla que moure un gigabyte consumeixi un gigabyte de soroll nou del nucli. Tots dos sí que sostenen la idea que la generació de claus i les encaixades de mans són on la sembra importa.
El cas CBC val la pena d'esmentar perquè sembla el mite i no ho és: el seu IV per paquet prové del generador de la biblioteca segons el calendari de ressembra propi de la biblioteca, mai d'una crida al nucli per paquet. Quan algú cita un cost d'entropia per byte, pregunta quina versió de biblioteca i quina ruta de codi han mesurat.
On es veu realment l'espera
Posa marques de temps al voltant de les etapes, no de la sessió: arrencada, autenticació, canvi de clau i transferència. Una espera abans que el túnel sigui utilitzable és una queixa diferent d'una taxa constant baixa, i només una de les dues apunta a l'atzar. A Linux, una petició normal de getrandom() pot bloquejar-se fins que la font aleatòria del nucli estigui inicialitzada, i per això la versió d'aquest problema a l'arrencada és real en màquines virtuals i plaques incrustades que tenen poc per alimentar el pool al principi.
| Etapa | Què cal executar | Lectura que significa espera | Lectura que significa cabal |
|---|---|---|---|
| Arrencada, abans de qualsevol túnel | systemd-analyze critical-chain | una unitat que s'asseu durant segons abans que arrenqui el túnel | no aplicable, encara no es transfereix res |
| Encaixada de mans | journalctl -u openvpn-server@server -b | un buit llarg abans que es completi la seqüència d'inicialització | no aplicable, el túnel no està aixecat |
| Transferència establerta | ss -tin al costat de sar -n DEV 1 | un procés bloquejat amb cues de sòcol buides | cues plenes, retransmissions i un fil ocupat |
Dues ordres barates pertanyen a l'inici d'aquesta col·lecció, i resolen les preguntes fàcils abans que la taula sigui necessària. El comptador que llegeixen és comptabilitat d'entropia, no un metre d'amplada de banda, i una sola instantània no pot mostrar que un procés estigui bloquejat, quant ha esperat o quina interfície criden les funcions de la seva biblioteca. Una mostra presa després de la recuperació normalment es perd l'aturada sencera, així que guarda la versió del nucli al costat de la lectura.
cat /proc/sys/kernel/random/entropy_avail
uname -rAjusta la correcció a la lectura
Si el nucli espera de debò la inicialització, mira la ruta de sembra que admet la plataforma, no el túnel. Es pot donar a una màquina virtual un dispositiu aleatori proporcionat per l'amfitrió, com ara virtio-rng, i la preparació de la imatge importa perquè una llavor copiada sense canvis a molts convidats no és una inicialització independent. Si una biblioteca informa de fallades de sembra després de l'arrencada, inspecciona la font configurada i el comportament del proveïdor en lloc de canviar paràmetres del nucli.
ss -tin dst 203.0.113.7
sar -n DEV 1 5La documentació del generador d'OpenSSL descriu com aquesta jerarquia obté entrada i quan es produeix la ressembra, una afirmació molt més estreta que el mite i que només val per a aquesta implementació. Un dimoni d'entropia no és una reparació universal de velocitat, i instal·lar-ne un per fer pujar un comptador altera una hipòtesi de seguretat sense demostrar cap retard. Per al cabal, segueix la ruta de dades: un fil saturat, les retransmissions, la pèrdua externa i les caigudes de cua necessiten cadascun una correcció diferent, i les mides de memòria intermèdia tracten l'emmagatzematge del sòcol amb les seves pròpies proves de cua.