
Elmanualsugiere que el cifrado simétrico es apropiado (¿y por lo tanto no menos seguro que el cifrado de clave pública?) cuando sólo se necesita acceder al texto sin formato. Pero segúnestepost, dado que gpg --symmetric
solo requiere una frase de contraseña, un atacante solo necesita forzar esta frase de contraseña en lugar de la clave completa de 128/256 bits generada a partir de ella.
Me parece que el procedimiento correcto es tener un archivo de clave de 128/256 bits que se utilice para cifrar simétricamente mis datos; que a su vez está cifrado simétricamente con una clave generada a partir de una frase de contraseña, tal como se protegen las claves privadas. Esto requeriría que un atacante aplicara fuerza bruta a la clave simétrica completa; incluso si adquirieran mi archivo de clave, aún tendrían que aplicar fuerza bruta a mi frase de contraseña.
¿ gpg
Admite este tipo de uso? ¿Mi comprensión de la situación es errónea? ¿Hay alguna razón por la cual este no es un caso de uso válido?
--
O dicho de otra manera:
EnesteSe supone que la protección mediante frase de contraseña es suficiente, pero básicamente mi pregunta es ¿qué pasa si no confío en mí mismo para memorizar una buena contraseña de 256 bits? ¿Puedo utilizar un archivo de clave simétrica igual que mi clave privada? Obviamente, podría usar mi clave privada, pero el manual sugiere que el cifrado simétrico sería la opción idiomática en esta situación.
Respuesta1
En OpenPGP, se permiten dos posibilidades para derivar la clave simétrica (de sesión) a partir de la frase de contraseña: usar directamente la frase de contraseña para derivar la clave o generar una clave aleatoria que a su vez está cifrada con la clave generada. Sin embargo, en ambos casos la clave simétrica siempre se almacena junto con el texto cifrado y la clave simétrica no se puede dividir sin perder la compatibilidad con el formato OpenPGP. Al final, la clave también se puede forzar de forma bruta a través de la frase de contraseña, sin importar qué tipo de almacenamiento se utilice.
Sin embargo, OpenPGP dificulta la fuerza bruta de la frase de contraseña al generar una entrada grande para ser hash (iterando la frase de contraseña varias veces para la entrada hash). De esta manera, forzar la frase de contraseña es mucho más costoso. DeRFC 4880, OpenPGP, 3.7.1.3. S2K iterado y salado:
Esto incluye tanto un recuento de sal como de octeto. La sal se combina con la frase de contraseña y el valor resultante se aplica repetidamente. Esto aumenta aún más la cantidad de trabajo que debe realizar un atacante para intentar ataques de diccionario.
En GnuPG, la cantidad de veces que se repite la frase de contraseña (y algunas otras opciones)se puede modificar usando las --s2k-*
opciones.