以前、情報を伝達するために送り手と受け手が同じ文字コード体系を利用する事を説明 した。しかし、この文字コードでの遣り取りは、第三者が通信をのぞき見ることが出来 ると内容も筒抜けになる。 たとえば悪意を持った者が社内のLANに何らかの装置を仕込む事が出来れば、LANの性質 上そのネットワークを流れるすべてのデータを盗み見ることが出来るのである。これで は大事な情報の伝達には使えないため暗号化する技術が必要になる。
暗号通信とはある規則(アルゴリズム)に従い元のデータを全く別のデータに変換した上 で送信し、受信側では逆に元に戻すことで通信中のデータを見られても情報が漏れない ようにすることだ。 このやりとりの手順は以前説明した可逆圧縮によく似ているが、暗号の場合は圧縮と同 じようにアルゴリズムが分かっていると復号出来てしまうと暗号としての用をなさない。 このため暗号通信の場合は通信毎に別の結果になるように工夫をする必要がある。この ためアルゴリズムのほかに変換のパラメータとして鍵を用いて鍵ごとに変換内容が変わ るようにする。
暗号技術には大きく分けて『共通鍵暗号』と『公開鍵暗号』がある。 両者の違いは、どちらもあるアルゴリズムに従って暗号化し復号化するのだが、送信側 と受信側でまったく同じ鍵を利用する方式を『共通鍵方式』、暗号化と復号化に別の鍵 を利用する方式を『公開鍵方式』となる。
共通鍵方式の暗号はイメージしやすいと思う。送信者と受信者が同じ鍵を持ち、その鍵 でデータを暗号化し受信側でその鍵を使い復号化する。共通鍵の問題は通信者の双方で 同じ鍵を持つ必要があるが、その鍵が他者に漏れると暗号を解読されてしまうため、安 全に鍵を受け渡す方法が別途必要になる。また1対1だけであればよいが、多数と通信 する場合それぞれに同じ鍵を渡すと他者との通信をその鍵で解読出来るため、通信する 相手の数だけの鍵が必要になる。
これに対し公開鍵方式の暗号は暗号化するための鍵は公開鍵、復号化するための鍵は秘 密鍵とし、秘密鍵は受信側だけが保管する。巧妙なのは公開鍵では暗号化は出来るが、 そのデータを復号することが出来ず、また公開鍵から秘密鍵を見つけることもほぼ不可 能になっている。このため暗号通信を始めるに当たってネットワークを通じて相手に公 開鍵を渡すことが出来、多数との通信でも同じ公開鍵を使うことが出来るようになって いる。問題は処理が複雑なためコンピュータの計算能力を多く使ってしまうことだ。
このため両者の欠点と特徴を生かし、まず公開鍵を交換し公開鍵方式で暗号化通信を始 め、その後共通鍵を交換しあって共通鍵暗号通信を始めるという手法が用いられること が多い。この場合の共通鍵はあらかじめ渡しておくわけではないので、その都度セッシ ョンごとに生成することができる。
さて、他者に知られるとまずいものにパスワードがある。パスワードも暗号化すれば良
いのだが、パスワードの場合は一方向ハッシュ変換が用いられることがある。一方向ハ
ッシュ変換とは任意の長さのデータを固定長のデータ(ハッシュ値)に変換する非可逆変
換だ。パスワードの認証はクライアントはパスワードを変換しサーバへ送信し、サーバ
ー側はパスワード登録時に保存したハッシュ変換されたデータとクライアントから送ら
れてきたデータを比較し、一致したならパスワードが一致したと見なす。パスワードそ
のものは保存もされずネットワークにも流れないため盗聴されてもパスワードが漏れる
ことはない。
ただその場合でも辞書にあるような類推されやすいパスワードであれば、総当たりで破
られてしまう。簡単な単語や数字などをパスワードに使っている人は多い
ようだが、例えば4桁の数字であれば最大1万回のチャレンジでパスワードが破られてしまう。
人手であれば時間はかかるが、コンピュータが処理すれば1万回は一瞬で終わる。重要
なものであればあるほど安易なパスワードは付けないようにする。また、インターネッ
トでクレジットカード番号や個人情報などを遣り取りする場合は、インターネット・エ
クスプローラの画面右下に錠のマークが出ている事を確認し、通信データが保護されて
いることを確認しよう。