Вы зашифровали файл открытым ключом "Some Name". И что он будет использовать для другого получателя?
ot--
6
@ott: Это не совсем так, как это работает (AFAIK). PGP шифрует файл симметричным ключом, а не открытым ключом получателя. Затем он отдельно шифрует несколько копий этого симметричного ключа, используя открытый ключ каждого получателя.
RedGrittyBrick
@RedGrittyBrick Я не знаю о pgp, но --symmetricдля этого используется gpg . При --recipientэтом используется открытый ключ получателя. Может быть более одного получателя, но это нужно сделать одной командой, а не двумя отдельными командами.
ot--
3
@ott: Я читал, что « Также возможно зашифровать файл одновременно для любого количества нескольких получателей с помощью команды видаgpg -e -r <name1> -r <name2> ... <file> ». Я сам не пробовал этого. Это согласуется с тем, что я узнал о криптографии много лет назад: почти всегда более эффективно использовать быстрые симметричные алгоритмы для шифрования текста сообщения. Только ключ сообщения шифруется с использованием медленного асимметричного шифрования.
RedGrittyBrick
Ответы:
8
Краткий ответ: нет
Прежде всего, обратите внимание, что если вы не один из получателей, это совершенно невозможно. У вас даже нет возможности расшифровать файл, тем более добавить получателя. Даже если вы зашифровали его две секунды назад.
Предполагая, что вы являетесь получателем, это технически возможно. Файл фактически зашифрован с помощью ключа сеанса, а ключ сеанса зашифрован с помощью вашего открытого ключа, так что теоретически вы можете расшифровать ключ сеанса и повторно зашифровать его для ключа другого человека, а затем упаковать все вместе в файл, как если бы вы Первоначально зашифровал документ для обоих людей.
Однако у gpg такой возможности нет . Самое близкое, что вы можете получить с помощью gpg, это
Используйте --show-session-keyопцию, чтобы получить ключ сеанса (который, кажется, также расшифровывает файл, пропуская точку в этом случае)
Зашифруйте этот ключ сеанса к чужому открытому ключу (фактически, это создает новый ключ сеанса и использует этот ключ сеанса для шифрования исходного ключа сеанса)
Отправьте оба файла.
Получатель может расшифровать ключ сеанса и использовать его --override-session-keyдля расшифровки исходного сообщения.
1) В этой ситуации шифрование файла для себя (а также для предполагаемых получателей) всегда является хорошей идеей. RedGrittyBrick правильно описал выше, как работают GPG и PGP, что отражено в ответе Натанга выше.
2) Однако, если у вас есть оригинальный файл, лучше всего просто создать новый зашифрованный файл для нового получателя.
Предполагая, что вы не хотите идти по пути сессионного ключа по предложению Натанга, если вы сначала зашифровали файл для себя (как описано выше в # 1), затем расшифровали его и затем выполните шаг № 2 выше.
Если у вас нет оригинала и вы не зашифровали его для себя, вы не можете получить данные обратно и не можете зашифровать их кому-либо еще, если первый получатель не отправит вам обратно копию.
За исключением того, что это может привести к повреждению файла (по крайней мере, иногда), потому что gpgодновременно и чтение, и запись в один и тот же файл:
shred, с этой -uопцией, надежно перезаписывает данные и затем удаляет указанный вами файл. Подобные программы существуют для других платформ, как srmв Mac OS X.
Или вы можете написать свой сценарий следующим образом (любезно предоставленный dave_thompson_085 ), чтобы вообще не хранить дешифрованные данные в файле:
--symmetric
для этого используется gpg . При--recipient
этом используется открытый ключ получателя. Может быть более одного получателя, но это нужно сделать одной командой, а не двумя отдельными командами.gpg -e -r <name1> -r <name2> ... <file>
». Я сам не пробовал этого. Это согласуется с тем, что я узнал о криптографии много лет назад: почти всегда более эффективно использовать быстрые симметричные алгоритмы для шифрования текста сообщения. Только ключ сообщения шифруется с использованием медленного асимметричного шифрования.Ответы:
Краткий ответ: нет
Прежде всего, обратите внимание, что если вы не один из получателей, это совершенно невозможно. У вас даже нет возможности расшифровать файл, тем более добавить получателя. Даже если вы зашифровали его две секунды назад.
Предполагая, что вы являетесь получателем, это технически возможно. Файл фактически зашифрован с помощью ключа сеанса, а ключ сеанса зашифрован с помощью вашего открытого ключа, так что теоретически вы можете расшифровать ключ сеанса и повторно зашифровать его для ключа другого человека, а затем упаковать все вместе в файл, как если бы вы Первоначально зашифровал документ для обоих людей.
Однако у gpg такой возможности нет . Самое близкое, что вы можете получить с помощью gpg, это
--show-session-key
опцию, чтобы получить ключ сеанса (который, кажется, также расшифровывает файл, пропуская точку в этом случае)--override-session-key
для расшифровки исходного сообщения.источник
1) В этой ситуации шифрование файла для себя (а также для предполагаемых получателей) всегда является хорошей идеей. RedGrittyBrick правильно описал выше, как работают GPG и PGP, что отражено в ответе Натанга выше.
2) Однако, если у вас есть оригинальный файл, лучше всего просто создать новый зашифрованный файл для нового получателя.
Предполагая, что вы не хотите идти по пути сессионного ключа по предложению Натанга, если вы сначала зашифровали файл для себя (как описано выше в # 1), затем расшифровали его и затем выполните шаг № 2 выше.
Если у вас нет оригинала и вы не зашифровали его для себя, вы не можете получить данные обратно и не можете зашифровать их кому-либо еще, если первый получатель не отправит вам обратно копию.
источник
Это невозможно без дешифрования вообще, но кажется, что это возможно без дешифрования в файл :
За исключением того, что это может привести к повреждению файла (по крайней мере, иногда), потому что
gpg
одновременно и чтение, и запись в один и тот же файл:Вместо этого вы можете сделать следующее (в скрипте), чтобы избежать необходимости управлять расшифрованным файлом:
shred
, с этой-u
опцией, надежно перезаписывает данные и затем удаляет указанный вами файл. Подобные программы существуют для других платформ, какsrm
в Mac OS X.Или вы можете написать свой сценарий следующим образом (любезно предоставленный dave_thompson_085 ), чтобы вообще не хранить дешифрованные данные в файле:
источник
gpg -d file.gpg | gpg -e ... -o file.new; mv file.new file.gpg
или его зеркалоmv file.gpg file.old; gpg -d file.old | gpg -e ... -o file.gpg
. Или (возможно , тоже) умно просто сохранить старый дескриптор файла :{ rm file.gpg; gpg -d /dev/fd/3; } 3<file.gpg | gpg -e ... -o file.gpg