技術情報


目次

  1. 対称暗号においてのPGPとGnuPGのパケットの違い
  2. Secure Viewer設定時のGnuPGの挙動
  3. 受信者秘匿

対称暗号においてのPGPとGnuPGのパケットの違い

GnuPG 1.0.2とPretty Good Privacy 6.5.3が生成する対称暗号の違いは次の通りです(GnuPGはオプションなしでの出力です。)

PGPの場合

gpg: armor header: Version: PGPfreeware 6.5.3 for non-commercial use 
:marker packet:
 50 47 50
:symkey enc packet: version 4, cipher 3, s2k 3, hash 2
        salt b18244e1272a65a2, count 96

:encrypted data packet:
        length: 29
gpg: CAST5 encrypted data
:compressed packet: algo=1
:literal data packet:
        mode t, created 1694498816, name="",
        raw data: 6 bytes

GnuPGの場合

gpg: armor header: Version: GnuPG v1.0.2 (MingW32)
gpg: armor header: Comment: For info see http://www.gnupg.org
:symkey enc packet: version 4, cipher 4, s2k 3, hash 3
        salt f4cace12a04eb309, count 96

:encrypted data packet:
        length: 33
gpg: BLOWFISH encrypted data
:compressed packet: algo=2
:literal data packet:
        mode b, created 966175590, name="",
        raw data: 5 bytes

▲目次▲


Secure Viewer設定時のGnuPGの挙動

PGP 6系にはSecure Viewerという機能があり、テンペスト攻撃防止用のビューワーで表示することができますがこれを使用した場合GnuPGでは次のような表示になります。
gpg: armor header: Version: PGPfreeware 6.5.3 for non-commercial use 
gpg: CAST5 encrypted data
gpg: NOTE: sender requested "for-your-eyes-only"
尚、この場合のパケットは次の通りです。
gpg: armor header: Version: PGPfreeware 6.5.3 for non-commercial use 
:marker packet:
 50 47 50
:symkey enc packet: version 4, cipher 3, s2k 3, hash 2
        salt ce3b65be2616a9f1, count 96

:encrypted data packet:
        length: 37
gpg: CAST5 encrypted data
:compressed packet: algo=1
:literal data packet:
        mode t, created 2315255808, name="_CONSOLE",
        raw data: 6 bytes
PGP 6系はファイル名が_CONSOLEというものをSecure Viewerでの表示と解釈しているため(RFC2440 5.9)--set-filenameオプションで明示的にファイル名を指定することでこの機能を利用できます。

▲目次▲


受信者秘匿

GnuPGがメッセージの行き先を隠す方法として受信者秘匿指定ができるようになっています。(--throw-keyid)この場合、パケットは次のように設定されます。
gpg: armor header: Version: GnuPG v1.0.2-1 (MingW32)
gpg: armor header: Comment: For info see http://www.gnupg.org
:pubkey enc packet: version 3, algo 16, keyid 0000000000000000
        data: [4096 bits]
        data: [4090 bits]
gpg: public key is 00000000
これは送信先のキーIDを0に設定することで行われています。PGP5,6ではこれをそのまま”0”宛のメッセージと認識するため、秘密鍵が存在しないことでのエラーとなります。

▲目次▲


OpenPGPのパケット構成についてはRFC4880が詳細に説明しています。
【GNU Privacy Guard講座】
ご意見・ご感想などはこちらまで