Por que un paquete VPN cifrado pode custar menos do que pensa
Outra etiqueta criptográfica non é outra unidade de traballo. Compare o camiño completo: construción AEAD, soporte da CPU, almacenamento en búfer e o modo de datos negociado.
Dous perfís proban na mesma pasarela, un con cifrado e outro sen el, e o cifrado non é máis lento. Ás veces é máis rápido, o que adoita provocar unha longa discusión sobre se a proba se executou correctamente. O resultado é verosímil, porque o custo dun paquete non é o número de palabras criptográficas na configuración. É o conxunto de operacións que realiza a implementación, co hardware que ten, sobre a disposición de búfer que escolleu.
O síntoma: o lento non é o perfil cifrado
Supoña que unha proba histórica compara un cifrado AEAD cun modo «sen cifrado» que aínda calcula un código de autenticación separado por paquete. O segundo perfil oculta o contido da carga útil pero mantén un hash por paquete, e nun procesador sen aceleración para ese hash pode custar máis que a construción integrada á que debía superar.
A etiqueta da configuración di «cifrado», e a etiqueta é todo o que miran a maioría das comparacións. O camiño do paquete di algo distinto: un perfil realiza unha operación combinada para a que a CPU ten instrucións, e o outro realiza unha separada para a que non as ten. Ler só o ficheiro de configuración nunca revelará esa diferenza, porque ambas entradas parecen unha soa liña. Só o modo negociado e o camiño de código que hai detrás explican o resultado.
Esa é toda a explicación, e non require ningunha afirmación sobre que primitiva é universalmente máis rápida. Ambas poden ser rápidas, ambas poden ser lentas, e a orde depende da máquina e do código.
Conte operacións, non etiquetas
Unha construción AEAD, como a describe o RFC 5116, dálle á implementación unha única interface que devolve o texto cifrado e a etiqueta xuntos. AES-GCM é un exemplo: cifrado en modo contador combinado cun autenticador de Galois. A interface non fai gratuíta a integridade; fai que a combinación estea ben definida, e iso é o que permite a unha implementación optimizar o par como unha unidade.
Separate authentication path: payload -> independent HMAC -> framed packet AEAD path: payload -> authenticated encryption with tag -> framed packet
Son bosquexos de procesamento, non consellos de configuración. O primeiro non ten confidencialidade pero aínda así gasta CPU en autenticación, e por iso mesmo «desactivar o cifrado» non é sinónimo de «desactivar o traballo criptográfico».
O segundo pode ser máis barato porque os procesadores ofrecen instrucións para ambas metades: roldas AES e a multiplicación sen acarreo que usa o campo de Galois. As bibliotecas tamén procesan búfers independentes en paralelo, o que mantén esas instrucións ocupadas en vez de esperar á memoria.
Que permite realmente o modo negociado
Con Community OpenVPN, un cifrado de datos AEAD significa que a opción auth xa non achega o seu propio HMAC separado da canle de datos. A referencia da opción de cifrado describe ese alcance, e é a razón pola que dúas configuracións que parecen iguais nun ficheiro de texto poden diferir no traballo por paquete.
Lea o modo negociado en lugar da lista de desexos. Unha lista de cifrados permitidos e un nome de suite TLS non lle din que operacións se executan sobre a carga útil, e unha liña cipher antiga pode non describir o que escolleu a conexión actual.
openvpn --show-ciphers | head -20 sudo grep -E 'cipher|auth' /etc/openvpn/server.conf
O primeiro comando lista os cifrados que admite o binario, que é unha lista de capacidades e non o resultado negociado. O segundo mostra que pide realmente o servidor. O rexistro da conexión é o lugar para confirmar a elección final, porque un cliente pode recaer en algo que o servidor permite pero que ninguén pretendía.
Mida a carga de traballo que realmente executa
Unha microproba criptográfica mide unha primitiva nas súas propias condicións. Unha transferencia VPN tamén copia búfers, planifica fíos ou interrupcións, comproba políticas e atravesa a rede. Eses partes adoitan dominar, e por iso unha primitiva máis rápida non sempre produce un túnel máis rápido.
openssl speed -evp aes-256-gcm openssl speed -evp sha1
Eses dous comandos dálle unha comparación local aproximada das primitivas na máquina que ten diante, e son honestos ao seren microprobas. Non din nada sobre o rendemento do seu túnel, e nunca deberían citarse como tal.
Despois mida a carga que importa, mantendo todo o demais constante: mesmo extremo, mesmos tamaños de paquete, mesmo transporte, mesma política de compresión. Se o cambio de perfil tamén alterou o transporte ou a localización de procesamento, o resultado describe ese conxunto e non a criptografía.
Teña tamén o obxectivo á vista. Unha ruta de datos con capacidade criptográfica de sobra aínda pode estar limitada pola latencia porque a aplicación espera idas e voltas, e as ganancias de capacidade masiva non arranxan un protocolo falangueiro. Mida a configuración admitida e aprobada pola política no seu conxunto, e trate «menos caixas debe ser máis rápido» como a hipótese que é. A pregunta útil non é se o cifrado custa algo, senón se o custo aparece na medición que realmente lle importa.