¿Qué algoritmo de cifrado se utiliza en los certificados * .pfx / PKCS 12 protegidos por contraseña?

10

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.

    
pregunta Martin Fischer 03.03.2017 - 09:15
fuente

3 respuestas

6

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.

    
respondido por el Mike Ounsworth 03.03.2017 - 17:29
fuente
3

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:

  • Una capa de cifrado externa que usa RC2 de 40 bits con SHA-1. La capa de cifrado exterior contiene el certificado.
  • Una capa de encriptación interna que usa 3DES con SHA-1. La capa de encriptación interna contiene la clave privada.

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.

    
respondido por el Martin Randall 12.06.2017 - 19:59
fuente
1

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:

  • RC4 de 128 bits con SHA1
  • RC4 de 40 bits con SHA1
  • 3 teclas 3DES con SHA1 (168 bits)
  • 2 teclas 3DES con SHA1 (112 bits)
  • RC2 de 128 bits con SHA1
  • RC2 de 40 bits con SHA1

Pero, como mencionó anteriormente Mike Ounsworth, también puede ser cualquier algoritmo personalizado.

    
respondido por el Alexey Mozzhakov 03.03.2017 - 15:35
fuente

Lea otras preguntas en las etiquetas