O aviso que aparece cando se inicia un cliente VPN é fácil de malinterpretar. Non é o contrasinal da conta VPN, non é o contrasinal do túnel, e introducilo non demostra que a conexión sexa segura. Desbloquea unha representación gardada dunha clave privada para que o cliente poida ler o material da clave e usalo para autenticarse. Todo o que ocorre despois é outra cuestión.

Na práctica, a resposta falla nos bordos: a xente supón que a frase protexe o túnel en funcionamento, ou que cambiala revoga unha copia da clave que xa se filtrou. Ambas as suposicións fallan, e fallan de forma que deixan unha credencial exposta mentres o operador cre que xa está resolto.

Un diálogo, varios segredos distintos

A frase dunha clave privada descifra un ficheiro. O contrasinal dunha conta autentícate ante un servizo. O contrasinal de importación PKCS#12 descifra un paquete que contén unha clave e o seu certificado, e pode non ser a mesma cadea que a frase propia da clave. Estes avisos poden parecer case idénticos, e adiviñar que segredo vai onde é como as claves acaban pegadas no campo equivocado.

O cifrado propio do túnel é unha cuarta cousa. A canle de datos usa claves de sesión negociadas durante o handshake; a frase da clave privada non desempeña ningún papel na protección de paquetes individuais. Se alguén pode ler o ficheiro da clave, pode intentar adiviñar a frase sen conexión, pero se pode ler paquetes, a frase é irrelevante.

Que cubre o cifrado no disco

Unha clave PEM cifrada ten dúas formas, e a cabeceira diche cal tes. A forma moderna PKCS#8 comeza con -----BEGIN ENCRYPTED PRIVATE KEY-----; a forma PEM antiga, aínda común en configuracións OpenVPN máis vellas, comeza con -----BEGIN RSA PRIVATE KEY----- e leva Proc-Type: 4,ENCRYPTED e unha liña DEK-Info xusto debaixo. O ficheiro contén a clave privada cifrada baixo unha clave derivada da túa frase, normalmente mediante un KDF baseado en contrasinal cun número de iteracións ou factor de traballo declarado. A documentación de OpenSSL pkey cubre os formatos e as opcións de frase que se aplican ao ler unha.

Derívanse dúas consecuencias. Unha frase débil pódese atacar sen conexión ao ritmo que permita o KDF, así que os permisos do ficheiro e o acceso ás copias de seguridade seguen importando mesmo cando o ficheiro está cifrado. E un atacante que só obtén o ficheiro sen a frase ten que adiviñar; quen obtén o ficheiro e a frase ten a clave, exactamente como se nunca se cifrase.

head -3 vpn.key
openssl pkey -in vpn.key -noout -pubout
openssl pkcs12 -in bundle.p12 -info -noout

head -3 mostra a cabeceira e, nun ficheiro antigo, as liñas Proc-Type e DEK-Info que demostran o cifrado; unha soa liña non é proba en ningún sentido. A liña pkey pide a frase e imprime só a metade pública, o que demostra que o ficheiro e a frase funcionan sen expor a clave privada. Non uses -text para esa comprobación: imprime os compoñentes privados, privateExponent, prime1, prime2 e o resto, e esa saída non debe pegarse nunca en ningún sitio, nin nun ticket, nin nun chat, nin nun rexistro. O comando PKCS#12 tamén che di se o paquete ten un contrasinal MAC ou de cifrado separado, algo que convén saber antes de pasarlle a un compañeiro.

Que deixa de protexer unha vez cargada a clave

O desbloqueo é un acontecemento dun só sentido para ese proceso. O cliente pide a clave ao KDF, descifra o ficheiro e mantén a clave privada en memoria todo o tempo que a necesita. Desde ese momento a frase non protexe nada da sesión en funcionamento: nin a memoria do proceso, nin un volcado de núcleo, nin unha sesión de depuración conectada ao cliente, nin unha copia de seguridade da máquina tomada mentres a clave estaba en uso.

É a mesma fronteira que unha clave SSH con frase, ou a caixa forte desbloqueada dun xestor de contrasinais. Eleva o custo de roubar o ficheiro en repouso e non fai nada contra malware que se execute como o teu usuario, unha aplicación autorizada que pida ao cliente asinar, ou un administrador que poida ler a memoria. Trátao como unha capa, non como o control que fai que unha clave sexa segura de deixar tirada.

Por que o aviso segue volvendo

Un cliente que volve preguntar en cada reconexión non está necesariamente roto. Algúns clientes gardan a frase na caché para a sesión, outros almacénana no chaveiro do sistema operativo, e outros poden apuntar a un asistente que a subministra, así que o comportamento depende do cliente e da súa configuración, non do ficheiro da clave.

Se o aviso repetido é a queixa real, revisa as opcións de caché e autenticación do cliente antes de quitar o cifrado á clave. Eliminar a frase converte un ficheiro protexido nunha clave de texto plano, e a reconexión vólvese silenciosa a costa do único control en repouso que tiñas. Unha resposta mellor adoita ser un almacén de credenciais compatible cos mesmos permisos de ficheiro que usarías de todos modos.

A perda e a exposición non son a mesma reparación

Unha frase perdida non se pode recuperar do certificado. O certificado é material público que vincula un nome a unha clave; non contén ningún camiño de volta á clave privada nin ningunha pista sobre a frase. As opcións prácticas son unha copia de seguridade autorizada da clave ou unha nova identidade emitida mediante o proceso normal do operador. Quen ofreza 'recuperar' a frase está a ofrecer adiviñala.

A exposición require outra resposta. Volver cifrar a mesma clave cunha frase nova deixa o material da clave intacto, así que unha copia que xa se desbloqueara noutro sitio segue funcionando. A reparación é revogar ou substituír a credencial: emitir unha clave e un certificado novos, distribuílos e retirar o vello no par. Ata que iso ocorra, cambiar o contrasinal do ficheiro é mantemento, non contención. Mantén o ficheiro vello fóra das copias de seguridade só despois de confirmar que a nova identidade funciona, e anota que número de serie ou pegada a substituíu.

Artigos relacionados