jCryptionが危険な理由。

http://www.moongift.jp/2009/08/jcryption/の話。http://takagi-hiromitsu.jp/diary/を検索すれば幾らでも情報は見つかるとは思うけれど、自分のためにも書いておく。

前振り。

このjCryptionはMan-In-the-Middle攻撃に弱いはずだ。どのように攻撃されるかを具体的に書いてみる。登場人物は

クライアント
Alice
サーバ
Bob
クラッカー
Charlie

の三名。

通常の通信。

通常手順での通信は

クライアント 通信 内容 サーバ
Alice ---接続--> リクエス Bob
Alice <--応答--- Bob公開鍵(平文) Bob
Alice ---ポスト--> 暗号文 by Bob公開鍵 Bob

というようになっている。

Man-In-the-Middle攻撃。

Man-In-the-Middle攻撃を受けている最中の通信は

クライアント 通信 内容 クラッカー 通信 内容 サーバ
Alice ---接続--> リクエス Charlie ---接続--> リクエス Bob
Alice <--応答--- Charlie公開鍵(平文) Charlie <--応答--- Bob公開鍵(平文) Bob
Alice ---ポスト--> 暗号文 by Charlie公開鍵 Charlie ---ポスト--> 暗号文 by Bob公開鍵 Bob

というようになる。
AliceがBob公開鍵だと思っているものはCharlie公開鍵だ。Charlieはこの通信の内容をすべて読むことができるだけでなく、書き換えることもできる。

SSLの場合。

普通はOSのインストール時にルート証明書がインストールされているため、正しく認証を受けた公開鍵ならば正当性を検証できるようになっている。SSLの安全性を担保するには、暗号化だけではなく、ルート証明書の正しさも確保しなくてはならない。

〆。

要するに、いわゆる「オレオレ証明書」など、認証を受けていない公開鍵を使うのと同じだ。まったく暗号化になっていない。