¿Cómo cifrar correctamente como SHA256 con el comando GPG?

¿Cómo cifrar correctamente como SHA256 con el comando GPG?

He estado usando el siguiente comando para el cifrado:

gpg --output encrypted.data --symmetric --cipher-algo AES256 un_encrypted.data

y descifrado:

gpg --output un_encrypted.data --decrypt encrypted.data

Me preguntaba si es seguro hacerlo de esta manera. Solo veo 1 referencia en Internet para este comando.aquí, y otros sitios web lo ejecutan sin el --cipher-algo AES256comando, que usaría el cifrado predeterminado, como este:

gpg --output encrypted.data --symmetric un_encrypted.data

¿No necesito agregar sal? ¿No hay un comando para suministrar sal como con OpenSSL, o el software lo maneja automáticamente?

Además, ¿qué pasa si lo ejecuto así, sin --symmetric:

gpg --output encrypted.data --cipher-algo AES256 un_encrypted.data

Mi pregunta es sobre cómo ejecutar este comando correctamente para crear un archivo cifrado SHA256 seguro. ¿Hay alguna diferencia entre los comandos anteriores?

Respuesta1

Si está utilizando una versión estable de gpg, con --cipher-algo AES256, entonces debería cifrarse usando AES256 correctamente (SHA256 es un hash).

Elige automáticamente sus propias rondas de transformación de sal y clave, por lo que no tienes que (y no puedes) elegir opciones potencialmente débiles. OpenSSL tiene muchas opciones, pero sus valores predeterminados (especialmente con su enc) pueden no ser los más sólidos. Su Q vinculada en realidad hace referencia a mi otra respuesta sobreOpenSSL frente a GPG- Básicamente, gpg funciona, se ha probado durante décadas, puede dejar perplejos a los grandes gobiernos y ences posible que el comando OpenSSL aún no tenga una opción para un recuento de iteraciones (la página de manual 1.1.0f del 2017-11-02 todavía enumera ese error).

Agregue algunas (múltiples) -vopciones para ver más detalles como la sal (772B0F3B94AD86BA a continuación):

$ gpg -vvvvvvvvv  test.gpg 
gpg: using character set 'utf-8'
gpg: WARNING: no command supplied.  Trying to guess what you mean ...
# off=0 ctb=8c tag=3 hlen=2 plen=13
:symkey enc packet: version 4, cipher 9, s2k 3, hash 2
        salt 772B0F3B94AD86BA, count 9961472 (211)
gpg: AES256 encrypted data
# off=15 ctb=d2 tag=18 hlen=2 plen=0 partial new-ctb
:encrypted data packet:
        length: unknown
        mdc_method: 2
gpg: encrypted with 1 passphrase
# off=36 ctb=a3 tag=8 hlen=1 plen=0 indeterminate
:compressed packet: algo=1
# off=38 ctb=ad tag=11 hlen=3 plen=25420
:literal data packet:
        mode b (62), created 1519523431, name="test",
        raw data: 25405 bytes
gpg: original file name='test'
gpg: decryption okay

Si lo omite --symmetric, gpg intentará adivinar lo que quiere decir, si el archivo no está cifrado con gpg, se dará por vencido/fallará:

$ gpg -vvvvvvvvv --cipher-algo AES256 test 
gpg: using character set 'utf-8'
gpg: WARNING: no command supplied.  Trying to guess what you mean ...
gpg: no valid OpenPGP data found.
gpg: processing message failed: Unknown system error

Omitir la --cipher-algoopción debería usar "El cifrado simétrico predeterminado utilizado es AES-128" (como man gpgdice la página sobre esa opción), pero los valores predeterminados pueden variar según la versión o creo que se anulan por su configuración personal. Para su información, los algoritmos disponibles se pueden enumerar con la --versionopción, como:

Supported algorithms:
Pubkey: RSA, ELG, DSA, ECDH, ECDSA, EDDSA
Cipher: IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH,
        CAMELLIA128, CAMELLIA192, CAMELLIA256
Hash: SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224
Compression: Uncompressed, ZIP, ZLIB, BZIP2

Tampoco necesitas realmente la --outputopción a menos que te guste, gpg agregará y eliminará una .gpgextensión según sea necesario.

  • Para su información, aquí hay un enlace aRFC2440describir los elementos de datos utilizados por OpenPGP (al menos en 1999, aunque estoy seguro de que sigue siendo casi completamente relevante, especialmente descripciones de cosas como String-to-key (s2k) e iteraciones y salt)

información relacionada