インターネットで買い物をしようとするとき,相手に自分のクレジットカード番号などを送ることになります。こうした情報が途中で盗み見されても大丈夫なように,送るデータを暗号化するのが一般的です。WebブラウザのInternet Explorerなら,データを暗号化しているとき,ウインドウの右下に錠前のようなアイコンが出てきますので,これで確認することができます。

 このようにデータを暗号化して相手に送ることを暗号通信といいます。この暗号通信では,「鍵」が重要な役割を果たします。

 暗号通信を実世界に当てはめると,他人に見られては困る大事なものを送るために,鍵をかけた金庫ごと相手に送り届けるようなものです。あとから金庫の鍵を相手に渡すようにすれば,相手しか金庫を開けることはできません。ネットワークの世界でも,考え方は同じです。あらかじめ通信相手に鍵を渡しておき,送信元はデータを鍵で暗号化して送れば,鍵を持っている相手しか暗号データを元に戻せないのです。

鍵はブラウザが作る

 では,この暗号通信に使う鍵とは,どんなものなのでしょうか。自宅の玄関ドアを開け閉めしたり,机の引き出しに付いているような金属製やプラスチック製の鍵ではありません。通信データを暗号化する鍵は,やはり0と1からなるデータです。いろいろなものがありますが,よく使われる鍵は64ビット(8バイト)または128ビット(16バイト)の長さです。

 しかし,私たちはショッピング・サイトなどでクレジットカード情報などを暗号化して送るとき,こちらから鍵の情報として0と1を組み合わせたデータを入力するようなことは,何もしていません。

 実は,Webブラウザを使う暗号通信の場合,鍵はWebブラウザが自動的に作り出しているのです。通常は,通信を始めた時刻や相手のアドレスなどの情報を基に鍵が作られます。Webブラウザはこの鍵を,実際のクレジットカード番号などのデータを送る前に,ショッピング・サイトのWebサーバーに渡しています。Webブラウザに錠前アイコンが表示されたときには,すでに鍵が通信相手に渡っているのです。

 また,鍵は使い捨てで,通信を始めるときに作った鍵は,通信が終わると捨てられます。新しく通信する際には,また新しい鍵が作られます。

 このため,Webブラウザによる暗号通信で使う鍵は,コンピュータのメモリーに通信中だけ一時的に記録されます。暗号通信が完了すればメモリーから消去されます。

 暗号化の方法にもいろいろあります。最も単純な方法は,鍵のデータと実際に送るデータを掛け合わせて,一見意味のないデータに変換する方法です。変換後のデータだけから元のデータを推測するのは非常に難しいのですが,鍵さえわかれば元通りにするのはとても簡単です。だから,鍵を持っている人だけは簡単に暗号データの内容が読めるわけです。

鍵が盗まれたら意味がない

 鍵がディジタル・データであるということは,同時にいくらでもコピーし放題ということでもあります。鍵そのものを盗まれては,いくら暗号化しても意味がありません。そのため,鍵を相手に送るときにも,鍵のデータそのものを暗号化しないといけません。ネットワークを介して暗号通信をする際には,相手に鍵をいかに安全に渡すかが重要なのです。

 Webブラウザでの暗号通信では,相手に鍵を渡す際に公開鍵暗号方式という別のしくみを使っています。