Como respuesta muy ligera y sin explicaciones, algunos analistas y administradores sugieren usar la opción legacy para la creación de certificados en el formato PKCS#12 (PFX) sin realmente entender el riesgo que se esta asumiendo.
Profundizando el parámetro LEGACY
OpenSSL 3.0 movió varios algoritmos obsoletos o inseguros a un módulo de biblioteca interno llamado legacy provider (proveedor heredado). No se carga de forma predeterminada, por lo que las aplicaciones (o los runtime) que usan OpenSSL para operaciones criptográficas no pueden usar dichos algoritmos al cargar certificados, etc.
Se recomienda encarecidamente NO USAR de estos algoritmos legacy.
Si la aplicación utiliza certificados de cliente almacenados en un archivo cifrado con un cifrado heredado como RC2-40-CBC, es posible "modernizar" el archivo del certificado volviéndolo a cifrar usando openssl.
Por ejemplo, cargar un archivo PKCS12 que utiliza el cifrado RC2-40-CBC para el cifrado produce un error como
OpenSSL::PKCS12::PKCS12Error PKCS12_parse: unsupported
Esto significa que si utilizo archivos de certificados y claves en formato PFX o PEM que se crearon en versiones de OpenSSL 1.1 o anteriores, es posible que estén codificados con algoritmos que ya no son compatibles con OpenSSL 3.0.
En el modo legacy, el algoritmo predeterminado para el cifrado de certificados es RC2_CBC o 3DES_CBC dependiendo de si el cifrado RC2 está habilitado en la compilación. El algoritmo predeterminado para el cifrado de clave privada es 3DES_CBC. Si no se especifica la opción heredada, entonces el proveedor heredado no se carga y el algoritmo de cifrado predeterminado para certificados y claves privadas es AES_256_CBC con PBKDF2 para la derivación de claves.
Que le pasa al Windows con los PKCS#12 ??
En diversas versiones de Windows (especialmente en 2012 o anteriores) al intentar importar un archivo de certificados PFX, al ingresar la clave para su importación nos aparece el error de "The password you entered is incorrect" 😕
Esto se debe que Windows no esta soportando por default el algoritmo de cifrado que le metimos al PFX 🙈 , básicamente esa sería la traducción del error.
openssl pkcs12 -export -certpbe PBE-SHA1-3DES -keypbe PBE-SHA1-3DES -nomac -inkey exported.key -in exported.crt -out New.pfx
Pero no estamos especificando algoritmos deprecados? Si, pero Windows es la única forma de importarlo ya que no soporta algoritmos mas nuevos 😔
Otra alternativa es importar el .pfx a una versión más reciente de Windows (como Windows 10 o 2016). Importante, mientras se importa, marcar el certificado como exportable. Esto le permite exportar el certificado posteriormente con el algoritmo 3DES-SHA1 anterior o sin contraseña para proteger la clave privada.
Pero necesito crearlo igualmente
Asumiendo el riesgo que se utiliza algoritmos de cifrados deprecados (porque ya fueron vulnerados) y te gusta correr en el peligro ...
El comando de OpenSSL para generar PFX con legacy provider es:
openssl pkcs12 -export -out output_file.pfx -inkey file_with_key.key -in file_cert.crt -legacy
Detalle de Algoritmos considerados Legacy según OpenSSL
[incluidos hasta última actualización del Post]
Algoritmos de Cifrado Simétrico
des-cbc, des-cfb, des-ofb, des-ecb |
Inseguro debido a la longitud de su clave de 56 bits |
|
des-ede, des-ede-cbc, des-ede3, des-ede3-cbc, des-cfb1, des-cfb8, des-cfb64, des-ofb64 |
Considerado inseguro debido a ataques de cumpleaños (birthday attack) y el agotamiento de su espacio de claves |
|
rc2-cbc, rc2-ecb, rc2-cfb, rc2-ofb |
Algoritmo de cifrado de bloque con vulnerabilidades |
|
rc4, rc4-40 |
Un cifrado de flujo desaconsejado debido a múltiples vulnerabilidades, especialmente en TLS. |
|
idea-cbc, idea-ecb, idea-cfb, idea-ofb |
Algoritmo de cifrado de bloque que ha caído en desuso |
Algoritmos de Hashing
|
Muy inseguro, vulnerable a ataques de colisión y preimágenes |
|
|
Vulnerable a ataques de colisión, considerado obsoleto |
|
|
Vulnerable a ataques de colisión, no recomendado para criptografía |
|
|
Algoritmo de hash menos común y considerado débil comparado con SHA-2 |
|
|
Aunque menos conocido, se considera menos robusto que SHA-3 |
|
|
Vulnerable a colisiones y ataques de preimágenes parciales, aunque aún se usa en algunos casos legacy |
Algoritmos Asimétricos y de Firma Digital
rsa |
Con claves < 2048 bits |
|
dsa, dsaWithSHA1 |
Con claves < 2048 bits y desaconsejado frente a ECDSA |
|
elgamal |
Algoritmo menos utilizado y reemplazado por opciones más modernas |
|
dh |
Con claves < 2048 bits |
|
|
Algunas curvas elípticas más antiguas que no son seguras, aunque la mayoría están en uso |
|
|
Algoritmos como gost89, gost94, gost-mac son específicos de Rusia y menos utilizados internacionalmente, con varios aspectos de seguridad cuestionados |
Referencias
- https://www.practicalnetworking.net/practical-tls/openssl-3-and-legacy-providers/
- https://help.heroku.com/88GYDTB2/how-do-i-configure-openssl-to-allow-the-use-of-legacy-cryptographic-algorithms#:~:text=OpenSSL%203.0%20moved%20several%20deprecated,%2C%20creating%20message%20digests%2C%20etc.
- https://stackoverflow.com/questions/69343254/the-password-you-entered-is-incorrect-when-importing-pfx-files-to-windows-cer
- https://docs.openssl.org/3.0/man1/openssl-pkcs12/
0 comments:
Publicar un comentario