Aparte del hecho es mejor que no implemente el código criptográfico personalizado , está reinventando la rueda . La funcionalidad de cadena a clave de OpenPGP es configurable y puede ajustarse a sus necesidades, sin perder la compatibilidad. No estoy discutiendo tus elecciones en el número de ciclos aquí, aunque parecen un poco duras. Recomiendo leer ¿En qué momento agregar más iteraciones a PBKDF2 no proporciona seguridad adicional? sobre este tema.
Desde man gpg
:
--s2k-cipher-algo name
Utilice el nombre como algoritmo de cifrado para el cifrado simétrico con una frase de contraseña si no se dan --personal-cipher-preferences
y --cipher-algo
. El valor predeterminado es AES-128.
--s2k-digest-algo name
Utilice el nombre como el algoritmo de resumen utilizado para modificar las frases de contraseña para el cifrado simétrico. El valor predeterminado es SHA-1.
--s2k-mode n
Selecciona cómo se modifican las frases de contraseña para el cifrado simétrico. Si n es 0, se utilizará una frase de contraseña simple (que en general no se recomienda), un 1 agrega una sal (que
no debe usarse) a la frase de contraseña y un 3 (el valor predeterminado) repite todo el proceso varias veces (consulte --s2k-count
).
--s2k-count n
Especifique cuántas veces se repiten las frases de contraseña de cifrado simétrico. Este valor puede oscilar entre 1024 y 65011712 inclusive. Se pregunta por defecto.
de gpg-agent. Tenga en cuenta que no todos los valores en el rango 1024-65011712 son legales y si se selecciona un valor ilegal, GnuPG se redondeará al valor legal más cercano. Esta
La opción solo tiene sentido si --s2k-mode
se establece en el valor predeterminado de 3.
Para terminar, las siguientes opciones tendrán el mismo efecto:
gpg --s2k-mode 3 --s2k-digest-algo SHA512 --s2k-count 10000000 --symmetric
--s2k-mode 3
es el valor predeterminado de GnuPG (y solo la configuración razonable para esta opción); No incluí --s2k-cipher-algo
ya que esto no es relevante para la derivación de claves (y no es manejado por la "pre-derivación" que describió, de todos modos). Alternativamente, puede establecer esto como predeterminado en su gpg.conf
:
s2k-mode 3
s2k-digest-algo SHA512
s2k-count 10000000
Esas opciones no solo se pueden usar para el cifrado simétrico de mensajes / archivos, sino que también se usan para la contraseña de protección de claves privadas.