¿Hay alguna extensión publicada a PKCS # 12?
-
10-12-2019 - |
Pregunta
PKCS # 12 es una forma conveniente de agrupar una llave privada con su X correspondiente.509 certificado en un formato de archivo único estandarizado.Sin embargo, la especificación fue publicada por Rsalabs en 1999 y utiliza solo RC4, RC2 y Tripledes para el cifrado simétrico.¿Existen extensiones semi-estándar comunes al esquema que agregue más algoritmos de cifrado u otras funciones de derivación clave? openssl está documentado para implementar el soporte para AES y Camellia, pero una búsqueda de un estándar correspondiente se convierte en blanco,Así que esto parece ser algo de implementación específica para OpenSSL.¿Alguien ha documentado el módulo ASN.1 y el código pseudo para estas extensiones?
Solución
PKCS # 12 utiliza bloques de construcción de otras normas.
El modo de cifrado recomendado se basa en el cifrado basado en la contraseña de PKCS # 5 (PBES2).Esto se ha extendido con soporte para SHA-2 y AES en pkcs # 5 v.2.1 .
Cuando OpenSSL usa AES, le gusta esto:
684 30 806: SEQUENCE {
688 30 802: SEQUENCE {
692 06 11: OBJECT IDENTIFIER
: pkcs-12-pkcs-8ShroudedKeyBag (1 2 840 113549 1 12 10 1 2)
705 A0 723: [0] {
709 30 719: SEQUENCE {
713 30 73: SEQUENCE {
715 06 9: OBJECT IDENTIFIER
: pkcs5PBES2 (1 2 840 113549 1 5 13)
726 30 60: SEQUENCE {
728 30 27: SEQUENCE {
730 06 9: OBJECT IDENTIFIER
: pkcs5PBKDF2 (1 2 840 113549 1
5 12)
741 30 14: SEQUENCE {
743 04 8: OCTET STRING
: BA 6B 5B B3 47 27 C9 73
753 02 2: INTEGER 2048
: }
: }
757 30 29: SEQUENCE {
759 06 9: OBJECT IDENTIFIER
: aes128-CBC (2 16 840 1 101 3 4 1 2)
770 04 16: OCTET STRING
: 0F 79 79 0A D3 EC C0 3E 20 B8 51 85 2F 2B 6C 29
: }
: }
: }
En la medida en que puedo leer la fuente, OpenSSL codifica la contraseña como ASCII en lugar de Terminada por cero UTF-16 cuando se usa PKCS # 5 PBES2.