1 votes

Comment crypter correctement en SHA256 avec la commande GPG ?

J'ai utilisé la commande suivante pour le cryptage :

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

et le décryptage :

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

Je me demandais s'il est sûr de procéder de cette façon, je ne vois qu'une seule référence sur internet pour cette commande, aquí et d'autres sites web l'exécutent sans le --cipher-algo AES256 qui utiliserait le cryptage par défaut, comme ceci :

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

Ne dois-je pas ajouter un sel, n'y a-t-il pas une commande pour fournir un sel comme avec OpenSSL, ou est-ce géré automatiquement par le logiciel ?

Et que se passe-t-il si je l'exécute comme ça, sans --symmetric :

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

Ma question porte sur l'exécution correcte de cette commande pour créer un fichier crypté SHA256 sécurisé. Y a-t-il une différence entre les commandes ci-dessus ?

1voto

Xen2050 Points 13136

Si vous utilisez une version stable de gpg, avec --cipher-algo AES256 alors il devrait crypter en utilisant AES256 correctement (SHA256 est un hash).

Il choisit automatiquement ses propres cycles de transformation de sel et de clé, ce qui vous évite de devoir (et de pouvoir) choisir vous-même des options potentiellement faibles. OpenSSL a beaucoup d'options, mais les valeurs par défaut (spécialement avec son module enc ) n'est peut-être pas le plus fort. Votre question fait référence à mon autre réponse concernant OpenSSL vs GPG - En gros, gpg fonctionne, il a été testé pendant des décennies, il peut faire échec aux grands gouvernements et à OpenSSL. enc n'a toujours pas d'option pour le nombre d'itérations (la page de manuel 1.1.0f de 2017-11-02 mentionne toujours ce bogue).

Ajouter quelques (multiples) -v pour voir plus de détails comme le sel (772B0F3B94AD86BA ci-dessous) :

$ 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 vous omettez --symmetric alors gpg essaiera de deviner ce que vous voulez dire, si le fichier n'est pas crypté par gpg, il abandonnera/échouera :

$ 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

En omettant le --cipher-algo devrait utiliser "Le chiffrement symétrique par défaut utilisé est AES-128" (comme l'option man gpg mais les valeurs par défaut peuvent varier d'une version à l'autre ou, je crois, être remplacées par vos paramètres personnels. Pour votre information, les algorithmes disponibles peuvent être listés avec l'option --version option, comme :

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

Vous n'avez pas non plus vraiment besoin du --output à moins que vous ne l'appréciiez, gpg ajoutera et supprimera une option .gpg extension si nécessaire.

  • Pour info, voici un lien vers RFC2440 la description des éléments de données utilisés par OpenPGP (au moins en 1999, mais je suis sûr que tout cela est encore pertinent, en particulier les descriptions de choses comme String-to-key (s2k), itérations et sel)

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X