web-dev-qa-db-ja.com

GPG暗号化ファイルが特定の公開鍵を使用して暗号化されているかどうかを確認するにはどうすればよいですか?

コマンドを使用してファイルが暗号化されているかどうかを検討する

例えば.

gpg --output test.txt.gpg --encrypt --recipient [email protected] test.txt

今、受け取った別の人を考えてみましょうtest.txt.gpg pubキー[email protected]、ファイルが本当にpubキーを使用して暗号化されていることを確認するためのチェックを実行する方法は?

3
Yoga

新しいバージョンのgpgでは一部の動作が変更されています(私はgpg v2.2.4でテストしています)。 --list-packetsを実行すると、パスフレーズの入力を求められます。そして現在、デフォルトで-kはキーIDを表示せず、40文字のフィンガープリントのみを表示します。

プロンプトをスキップしてキーIDを表示するいくつかのコマンドを次に示します。

# show public key ID that it was encrypted with, skipping prompts
gpg --pinentry-mode cancel --list-packets file.gpg

# list keys with the key IDs
gpg -k --keyid-format long

次に、--list-packetsの16文字のキーIDを-kのリストと照合できます。

3
wisbucky

公開鍵は必要ありません(IDを知っているだけです)。ファイル/メッセージの暗号化に使用されるキーを誰かが意図的に隠していないと想定すると、list-packetsコマンドを使用して、求めていることを実行します。

gpg --list-packets test.txt.gpg

これにより、PGPで送信されたメッセージ/ファイルヘッダーにリストされている各復号化パケットのリストが表示されます。キーを暗号化してこのリストからそのキーを隠す方法はいくつかありますが、通常のコマンド(例のコマンドのような)を使用すると、次のようなすべての復号化キーがリストされます。

gpg --list-packets crypto-text.pgp
# off=0 ctb=85 tag=1 hlen=3 plen=526
:pubkey enc packet: version 3, algo 16, keyid 2206D60BA555DCB0
        data: [2045 bits]
        data: [2047 bits]
# off=529 ctb=85 tag=1 hlen=3 plen=526
:pubkey enc packet: version 3, algo 16, keyid 0D6229B307ED0210
        data: [2043 bits]
        data: [2048 bits]
# off=1058 ctb=85 tag=1 hlen=3 plen=526
:pubkey enc packet: version 3, algo 16, keyid 0E9AFA6C61A4DC66
        data: [2048 bits]
        data: [2046 bits]

リストされている3つの異なるキーIDに注意してください。おっしゃるとおり、これらの各キーを使用して、この特定のメッセージを復号化できます。

公開鍵がある場合はボーナスポイントなので、--list-packetsコマンドは、メッセージヘッダー内の各パケットのフレンドリ名も通知します。 (そして、あなたはすでに持っていた公開鍵を使うようになります)。

ただし、誰かがメッセージヘッダーのリストから復号化キーを意図的に隠していない限り、すべてのPGPキーを使用して、メッセージを復号化することなく、それらのいずれかの公開鍵または秘密鍵のいずれかにアクセスできる。

実際には、私が認めたい以上にこれを使用しています。通常、私の会社の人々がPGPで送信されたメッセージを交換していて、突然誰かがメッセージを開けなくなります。彼らは常にソフトウェアの実装を非難します。これまでのところ、毎回、メッセージが起草され、暗号化されており、暗号化の後、新しい受信者がTOリストに追加されていました。暗号文をcrypto-text.pgpファイルにコピーして(例のように)、メッセージの暗号化先を正確に確認できます。 「あなたのソフトウェアプラグインが壊れています」ゲームをトラックでしっかり止める傾向があるそれらを示しています。

1
Ruscal

これは、受信者privateキーの所有者である場合にのみ可能です。秘密鍵でメッセージを復号化できない場合は、対応する公開鍵で暗号化されていません(または変更されています)。

しかし、暗号化を元に戻すことができるのは(強力ではありますが)表示であり、証明ではありません。作成者(および整合性)の真のテストとして、signingが使用されます。 ここ を参照してください。異なるキーで署名および暗号化することは完全に可能であることに注意してください。そして discussion があります。送信者として最初に署名し、次に暗号化するか、またはその逆です。

0
jvb