En supposant que j'ai chiffré un fichier (éventuellement volumineux) à l'aide de GPG; par exemple
gpg --recipient "Some Name" -o this_file.gpg --encrypt this_file.txt
Est-il possible d'ajouter un autre destinataire sans décrypter d'abord le fichier, suivi d'un autre cryptage?
--symmetric
. Avec--recipient
elle utilise la clé publique du destinataire. Il peut y avoir plus d'un destinataire, mais cela doit être fait en une seule commande, pas en 2 commandes distinctes.gpg -e -r <name1> -r <name2> ... <file>
" Je n'ai pas essayé cela moi-même cependant. Cela correspond à ce que j'ai appris sur la crypto il y a de nombreuses années, à savoir qu'il est presque toujours plus efficace d'utiliser des algorithmes symétriques rapides pour crypter le texte du message. Seule la clé de message est chiffrée à l'aide d'un chiffrement asymétrique lent.Réponses:
Réponse courte: non
Tout d'abord, notez que si vous n'êtes pas l'un des destinataires, c'est complètement impossible. Vous n'avez même pas la possibilité de décrypter le fichier, encore moins d'ajouter un destinataire. Même si vous l'avez chiffré il y a deux secondes.
En supposant que vous êtes un destinataire, c'est techniquement possible. Le fichier est réellement chiffré avec une clé de session et la clé de session est chiffrée avec votre clé publique, vous pouvez donc en théorie déchiffrer la clé de session et la rechiffrer sur la clé d'une autre personne, puis tout regrouper dans un fichier comme si vous avait à l'origine crypté le document pour les deux personnes.
Cependant, gpg n'a pas cette capacité . Le plus proche que vous pouvez obtenir avec gpg est
--show-session-key
option pour obtenir la clé de session (qui semble également déchiffrer le fichier, manquant le point dans ce cas)--override-session-key
pour déchiffrer le message d'origine.la source
1) Cette situation explique pourquoi crypter un fichier pour vous-même (ainsi que les destinataires prévus) est toujours une bonne idée. RedGrittyBrick a raison ci-dessus en décrivant le fonctionnement de GPG et PGP, ce qui se reflète dans la réponse de nathang ci-dessus.
2) Cependant, si vous avez le fichier d'origine, il est préférable de simplement créer un nouveau fichier crypté pour le nouveau destinataire.
En supposant que vous ne vouliez pas emprunter la route de la clé de session à partir de la suggestion de nathang, si vous avez chiffré le fichier pour vous-même (comme ci-dessus dans # 1), déchiffrez-le puis suivez l'étape # 2 ci-dessus.
Si vous ne disposez pas de l'original ni ne l'avez chiffré pour vous-même, vous ne pouvez pas récupérer les données et ne pouvez les chiffrer à personne d'autre sans que le premier destinataire vous en renvoie une copie.
la source
Ce n'est pas possible sans décrypter du tout, mais il semble que cela devrait être possible sans décrypter dans un fichier :
Sauf que cela semble entraîner un fichier corrompu (au moins parfois), car il
gpg
lit et écrit simultanément dans le même fichier:Au lieu de cela, vous pouvez effectuer les opérations suivantes (dans un script) pour éviter d'avoir à gérer le fichier déchiffré:
shred
, avec l'-u
option, remplace en toute sécurité les données de, puis supprime le fichier que vous spécifiez. Des programmes similaires existent pour d'autres plateformes, commesrm
sur Mac OS X.Ou vous pouvez écrire votre script comme ceci (gracieuseté de dave_thompson_085 ) pour éviter même d'avoir à stocker les données déchiffrées dans un fichier:
la source
gpg -d file.gpg | gpg -e ... -o file.new; mv file.new file.gpg
ou son miroirmv file.gpg file.old; gpg -d file.old | gpg -e ... -o file.gpg
. Ou (peut-être aussi), gardez intelligemment l'ancien inode :{ rm file.gpg; gpg -d /dev/fd/3; } 3<file.gpg | gpg -e ... -o file.gpg