Per què un paquet VPN xifrat pot costar menys del que penseu
Una etiqueta criptogràfica més no és una unitat de feina més. Compareu el camí complet: construcció AEAD, suport de la CPU, emmagatzematge en memòria intermèdia i el mode de dades negociat.
Dos perfils es proven a la mateixa passarel·la, un amb xifratge i un altre sense, i el xifrat no és més lent. De vegades és més ràpid, cosa que sol provocar una llarga discussió sobre si la prova s’ha executat correctament. El resultat és plausible, perquè el cost d’un paquet no és el nombre de paraules criptogràfiques de la configuració. És el conjunt d’operacions que fa la implementació, amb el maquinari que té, sobre la disposició de memòria intermèdia que ha triat.
El símptoma: el perfil lent no és el xifrat
Suposem que una prova antiga compara un xifratge AEAD amb un mode «sense xifratge» que encara calcula un codi d’autenticació separat per paquet. El segon perfil amaga el contingut de la càrrega útil però manté un hash per paquet, i en un processador sense acceleració per a aquest hash pot costar més que la construcció integrada que havia de superar.
L’etiqueta de la configuració diu «xifratge», i l’etiqueta és tot el que miren la majoria de comparacions. El camí del paquet diu una cosa diferent: un perfil fa una operació combinada per a la qual la CPU té instruccions, i l’altre en fa una de separada per a la qual no en té. Llegir només el fitxer de configuració no revelarà mai aquesta diferència, perquè les dues entrades semblen una sola línia. Només el mode negociat i el camí de codi que hi ha al darrere expliquen el resultat.
Aquesta és tota l’explicació, i no requereix cap afirmació sobre quina primitiva és universalment més ràpida. Totes dues poden ser ràpides, totes dues poden ser lentes, i l’ordre depèn de la màquina i del codi.
Compteu operacions, no etiquetes
Una construcció AEAD, tal com la descriu l’RFC 5116, dóna a la implementació una interfície única que retorna el text xifrat i l’etiqueta alhora. AES-GCM n’és un exemple: xifratge en mode comptador combinat amb un autenticador de Galois. La interfície no fa gratuïta la integritat; fa que la combinació estigui ben definida, i això és el que permet a una implementació optimitzar el parell com una unitat.
Separate authentication path: payload -> independent HMAC -> framed packet AEAD path: payload -> authenticated encryption with tag -> framed packet
Són esborranys de processament, no consells de configuració. El primer no té confidencialitat però encara gasta CPU en autenticació, i per això mateix «desactiva el xifratge» no és sinònim de «desactiva la feina criptogràfica».
El segon pot ser més barat perquè els processadors proporcionen instruccions per a totes dues meitats: rondes AES i la multiplicació sense arrossegament que fa servir el camp de Galois. Les biblioteques també processen memòries intermèdies independents en paral·lel, cosa que manté aquestes instruccions ocupades en lloc d’esperar la memòria.
Què permet realment el mode negociat
Amb Community OpenVPN, un xifratge de dades AEAD vol dir que l’opció auth ja no aporta un HMAC propi i separat del canal de dades. La referència de l’opció de xifratge descriu aquest abast, i és la raó per la qual dues configuracions que semblen iguals en un fitxer de text poden diferir en la feina per paquet.
Llegiu el mode negociat i no la llista de desitjos. Una llista de xifratges permesos i un nom de suite TLS no us diuen quines operacions s’executen sobre la càrrega útil, i una línia cipher antiga pot no descriure què ha triat la connexió actual.
openvpn --show-ciphers | head -20 sudo grep -E 'cipher|auth' /etc/openvpn/server.conf
La primera ordre llista els xifratges que suporta el binari, que és una llista de capacitats i no el resultat negociat. La segona mostra què demana realment el servidor. El registre de la connexió és el lloc per confirmar l’elecció final, perquè un client pot recular a alguna cosa que el servidor permet però que ningú no volia.
Mesureu la càrrega que realment executeu
Una microprova criptogràfica mesura una primitiva en les seves pròpies condicions. Una transferència VPN també copia memòries intermèdies, planifica fils o interrupcions, comprova polítiques i travessa la xarxa. Aquestes parts sovint dominen, i per això una primitiva més ràpida no sempre produeix un túnel més ràpid.
openssl speed -evp aes-256-gcm openssl speed -evp sha1
Aquestes dues ordres us donen una comparació local aproximada de les primitives a la màquina que teniu davant, i són honestes en el fet de ser microproves. No diuen res sobre el cabal del vostre túnel, i no s’haurien de citar mai com a tal.
Després mesureu la càrrega que importa, mantenint tota la resta constant: mateix punt final, mateixes mides de paquet, mateix transport, mateixa política de compressió. Si el canvi de perfil també ha alterat el transport o la ubicació de processament, el resultat descriu aquest paquet i no la criptografia.
Tingueu també l’objectiu a la vista. Un camí de dades amb capacitat criptogràfica de sobres encara pot estar limitat per la latència perquè l’aplicació espera viatges d’anada i tornada, i els guanys de capacitat massiva no arreglen un protocol xerraire. Mesureu la configuració suportada i aprovada per la política com un tot, i tracteu «menys caixes hauria de ser més ràpid» com la hipòtesi que és. La pregunta útil no és si el xifratge costa alguna cosa, sinó si el cost apareix en el mesurament que realment us importa.