すべての記事

PGP:公開鍵と秘密鍵による暗号化の仕組み

日本のビジネス文化には長らく「PPAP」という慣行があった——添付ファイルをパスワード付きZIPで送り、パスワードを別のメールで送る方式だ。2020年、政府自らがこの慣行の廃止を呼びかけた。ZIPとパスワードを同じ経路(メール)で送るため、盗聴されれば両方とも読めてしまい、セキュリティ効果がほとんどないからだ。PGPは同じ「事前に秘密鍵を交換せず暗号化する」問題を、公開鍵暗号という原理的に異なる方法で解決する。

鍵のペア:公開鍵と秘密鍵

1つの鍵がデータの暗号化と復号の両方を行う共通鍵暗号(AESなど)とは異なり、PGPは数学的に関連した鍵のペアを使用します。公開鍵は自由に配布でき、誰でもそれを使ってあなただけに宛てたメッセージを暗号化できます。復号できるのは、誰にも見せない対応する秘密鍵を持つ人だけです。

PPAPとPGPの決定的な違い

PPAPのパスワードは結局メールという同じ経路で送られてしまうため、暗号化ファイルと鍵が漏洩リスクを共有します。PGPでは公開鍵を堂々と公開の場に置いても安全です——公開鍵から秘密鍵を導き出すことは計算量的に不可能であり、暗号化されたメッセージを解読できるのは秘密鍵の持ち主だけだからです。

デジタル署名——同じアイデアの逆

メッセージに署名するには、作成者はそれをハッシュ化し、そのハッシュを自分の秘密鍵で暗号化します。誰でも作成者の公開鍵で署名を検証でき、検証が成功すれば、メッセージが実際に秘密鍵の所有者によって作成され、後から改変されていないことが確認できます。

なぜこれが必要か

  • 事前に秘密を交換することなく、受信者向けに機密メッセージを暗号化する。
  • 作成者を証明するためにソフトウェアリリースやコミットに署名する。
  • 外部から届いた署名済みメールやファイルの真正性を検証する。

中央機関の代わりのWeb of Trust

PPAPも認証局(CA)による証明書も、結局は何らかの中央の仕組みに信頼を委ねる方式です。PGPはそれとは逆の発想で「信頼の輪(Web of Trust)」を採用します。ユーザーは、鍵が特定の人物のものであることを個人的に確認したうえで、互いの公開鍵に自分で署名します。見知らぬ鍵への信頼は、単一の権威ある機関を経由せず、すでに信頼している人々の署名の連鎖を通じて間接的に生まれるのです。

ツールを試す