Resulta que esto es algo muy interesante.
Del blog de Martin Kleppmann " Mejorando la seguridad de su Archivos de clave privada SSH "(Publicado el 2013-06-26. Archivado aquí . HackerNews'd here ):
But how do you get from the passphrase to the AES encryption key?
I couldn’t find it documented anywhere, so I had to dig through
the OpenSSL source to find it:
1. Append the first 8 bytes of the IV to the passphrase, without
a separator (serves as a salt).
2. Take the MD5 hash of the resulting string (once).
That’s it.
Esto significa que no hay mucha transformación de contraseña a clave en marcha. Y Martin luego recomienda usar PKCS # 8 en su lugar.
Pero la pregunta no era sobre PKCS # 8 sino sobre PKCS # 12.
Y el RFC para PKCS # 12 dice que todavía hay un modo de compatibilidad que funciona de manera similar . Y dicen que debes usar PBKDF2.
Appendix B. Deriving Keys and IVs from Passwords and Salt
Note that this method for password privacy mode is not recommended
and is deprecated for new usage. The procedures and algorithms
defined in PKCS #5 v2.1 [13] [22] should be used instead.
Specifically, PBES2 should be used as encryption scheme, with PBKDF2
as the key derivation function.
Ahora, esto implica que se pueden usar métodos antiguos y nuevos. Y el nuevo método es más seguro.
En resumen: los archivos PKCS # 12 son potencialmente más seguros que los archivos PEM "BEGIN RSA PRIVATE KEY".
Pero: Lo que NO PUEDO decirle es cómo descubriría si un archivo PKCS # 12 determinado haya utilizado el método antiguo o el nuevo. Tal vez algún otro miembro de StackExchange pueda participar?