
GPGを使用して(おそらく大きな)ファイルを暗号化したと仮定します。例:
gpg --recipient "Some Name" -o this_file.gpg --encrypt this_file.txt
最初にファイルを復号化してから別の暗号化を行わずに、別の受信者を追加することは可能ですか?
答え1
短い答え:いいえ
まず、あなたが受信者の一人でない場合は、完全に不可能であることに注意してください。ファイルを復号化することすらできず、受信者を追加することなどできません。たとえ 2 秒前に暗号化したとしてもです。
あなたが受信者であると仮定すると、技術的には可能です。ファイルは実際にはセッションキーで暗号化されており、セッションキーはあなたの公開鍵で暗号化されているので、理論的にはセッション キーを復号化し、別の人のキーで再暗号化してから、両方の人に対して最初にドキュメントを暗号化したのと同じように、すべてを 1 つのファイルにまとめてパッケージ化します。
しかし、gpgにはこの機能がありませんgpgで最も近いのは
- セッション キーを取得するオプションを使用します
--show-session-key
(ファイルの暗号化も行われるようですが、この場合は意味がありません) - そのセッションキーを他の人の公開キーで暗号化します(実際には、新しいセッションキーを作成し、そのセッションキーを使用して元のセッションキーを暗号化します)
- 両方のファイルを送信してください。
- 受信者はセッション キーを復号化し、それを使用して
--override-session-key
元のメッセージを復号化できます。
答え2
1) このような状況では、自分自身 (および意図した受信者) に対してファイルを暗号化することが常に良い考えです。RedGrittyBrick は、GPG と PGP の仕組みについて上で正しく説明しており、これは上記の nathang の回答に反映されています。
2) ただし、元のファイルがある場合は、新しい受信者向けに新しい暗号化ファイルを作成するのが最善です。
nathang の提案に従ってセッション キー ルートを使用したくない場合は、最初にファイルを自分自身に暗号化した場合 (上記の #1 のように)、それを復号化してから上記の手順 #2 に従ってください。
オリジナルを持っていない場合、またはそれを自分自身に暗号化していない場合、データを取り戻すことはできず、最初の受信者がコピーを返送しない限り、他の誰かに暗号化することもできません。
答え3
最初にファイルを復号化してから別の暗号化を行わずに、別の受信者を追加することは可能ですか?
解読しないと不可能だまったくしかしそれはそうあるべきだと思う復号化せずに可能ファイルに:
gpg -d this_file.gpg | gpg -e -r "Some Name" -r "Another Name" -o this_file.gpg
gpg
ただし、同じファイルに対して同時に読み取りと書き込みを行うため、ファイルが破損する可能性があるようです (少なくとも時々) 。
代わりに、復号化されたファイルを管理する必要がないように、次の操作を (スクリプトで) 実行できます。
gpg -d -o this_file.txt this_file.gpg
gpg -e \
-r "Some Name" \
-r "Another Name" \
-o this_file.gpg \
--batch --yes \
this_file.txt
shred -u this_file.txt
shred
オプションを使用すると-u
、指定したファイルのデータを安全に上書きしてから削除します。Mac srm
OS X などの他のプラットフォームにも同様のプログラムが存在します。
または、次のようにスクリプトを書くこともできます(提供:デイブ・トンプソン) を使用すると、復号化されたデータをファイルに保存する必要がなくなります。
gpg -d this_file.gpg \
| gpg -e \
-r "Some Name" \
-r "Another Name" \
-o this_file.gpg.new \
--batch --yes
mv -f this_file.gpg.new this_file.gpg