Como lo indica el título, no puedo encontrar ningún recurso en el que se use el algoritmo de cifrado en los certificados * .pfx / PKCS 12 que están protegidos por contraseña.
Como lo indica el título, no puedo encontrar ningún recurso en el que se use el algoritmo de cifrado en los certificados * .pfx / PKCS 12 que están protegidos por contraseña.
Todas las especificaciones para el formato PKCS # 12 se definen en RFC7292 .
El breve resumen es que un archivo .p12
(y asumo que también es el antiguo formato PFX
de Microsoft, pero nunca he trabajado con ellos) es solo un formato contenedor que especifica la estructura de este archivo, pero no dice nada sobre qué tipo de datos deben incluirse.
Para usar una analogía muy mala, la especificación para el formato .xlsx
de Microsoft Excel especifica la estructura de un archivo de guardado de Excel, pero no le dice nada sobre qué datos o fórmulas puede contener; eso se controla según la versión de Excel que esté ejecutando.
Si tuviera que abrir un .p12
en un editor hexadecimal, encontraría que uno de los campos en el encabezado es AlgorithmIdentifier: _____
donde el programa que creó el .p12
registra A) el algoritmo de cifrado que se utilizó para cifrar los datos, y B) qué algoritmo hash se usó para convertir la contraseña en una clave. Que yo sepa, no hay una lista definitiva de lo que se permite aquí; el programa que crea el .p12
puede usar cualquier AlgorithmIdentifier
que quiera, incluyendo hacer uno.
Por ejemplo, si estuviera escribiendo software para leer y escribir archivos .p12
protegidos por contraseña, podría establecer AlgorithmIdentifier: AES256WithPBKDF2
y eso estaría bien. Pero también podría establecer AlgorithmIdentifier: MikesCipherWithCatDoodles
, y mientras el software en el otro extremo sepa qué hacer con eso, todavía está bien.
TL; DR: El formato PKCS # 12 solo especifica la estructura del archivo, no enumera qué algoritmos son legales, por lo que el algoritmo de encriptación real utilizado dependerá de qué software se utilizó para crea el archivo .p12
.
Si desea saber qué algoritmos se utilizan para proteger sus archivos .p12
, busque la documentación en el software que está utilizando para leerlos / escribirlos.
Si tiene un archivo .pfx específico que desea verificar, puede determinar qué métodos de encriptación se han utilizado utilizando openssl:
openssl pkcs12 -info -in cert.pfx -noout
Esto podría darte:
PKCS7 Encrypted data: pbeWithSHA1And40BitRC2-CBC, Iteration 2048
Shrouded Keybag: pbeWithSHA1And3-KeyTripleDES-CBC, Iteration 2048
Esto requiere que conozca la contraseña del archivo .pfx. Si no conoce la contraseña, aún puede encontrar el método de cifrado más externo utilizando:
openssl pkcs12 -info -in cert.pfx -nomacver -noout -passin pass:unknown
Esto da, por ejemplo:
PKCS7 Encrypted data: pbeWithSHA1And40BitRC2-CBC, Iteration 2048
Este archivo de certificado en particular fue generado por openssl con parámetros predeterminados, y parece que tiene:
Creo que esto es inseguro porque un atacante puede romper el cifrado más externo con una fuerza bruta fácil (el cifrado de 40 bits más RC2 tiene varias vulnerabilidades) y luego usar la misma contraseña en la capa de cifrado interna. Sin embargo, esto probablemente merece una investigación adicional.
Como se mencionó anteriormente,
el formato PKCS # 12 solo especifica la estructura del archivo
Por lo tanto, puede estar encriptado con cualquiera de los siguientes algoritmos, según el estándar:
Pero, como mencionó anteriormente Mike Ounsworth, también puede ser cualquier algoritmo personalizado.
Lea otras preguntas en las etiquetas tls certificates pfx