鍵の問題をクリアした「公開鍵暗号」
公開鍵暗号の仕組み
共通鍵暗号の「鍵の配送問題」を解決したのが、「公開鍵暗号」です(図4)。この方法では、暗号化と復号で異なる鍵を使い、一方を公開しても問題ありません。この公開される鍵を「公開鍵」と呼びます。
もう一方は「秘密鍵」と呼ばれ、他人には絶対に知られないようにする必要があります。これらはそれぞれ独立しているものではなく対になっています。暗号化と復号で異なる鍵を使うことから、「非対称暗号」とも呼ばれます。
公開鍵暗号で暗号化する場合は、受信者の公開鍵を送信者が入手します。これは公開されている鍵なので、誰でも入手できます。送信者はこの公開鍵を使ってデータを暗号化し、出力された暗号文を送信します。受信者は受信した暗号文を自身の持つ秘密鍵で復号します。このときほかの人は秘密鍵を持っていないので、暗号文を復号できません。
負荷が高いので部分的に使う
公開鍵暗号は共通鍵暗号よりも複雑な計算が必要なため、負荷が高くなります。そのため大きなファイルの暗号化には向きませんが、小さいデータを暗号化するには十分です。この特徴に合わせて、「共通鍵暗号の鍵をネットワーク経由で渡す」「通信相手が正しいかどうか判定する認証用のデータをやり取りする」といった重要なデータに対して使います。
公開鍵暗号では、1人に1つ公開鍵と秘密鍵のペアがあれば十分です。2人ならペアが2つ、10人なら10個、100人でも100個あれば、安全にやり取りできます。
暗号化される範囲を意識する
HTTPとHTTPS
インターネットを利用していて暗号化を確認する場面といえば、Webサイトでの入力フォームが挙げられます。ショッピングサイトなどで個人情報を入力する場合、ブラウザの鍵マークを確認するように教えられた人も多いと思います。
Webサイトを閲覧するときのプロトコルであるHTTP(Hypertext Transfer Protocol)には暗号化の仕組みがありませんが、鍵マークが表示されるHTTPS(Hypertext Transfer Protocol Secure)での通信なら暗号化されます。文字どおり、HTTPをより「Secure(安全)」にした通信方式で、「SSL/TLS」という暗号化の仕組みが使用されます。
HTTPSでは公開鍵暗号を用いてWebサーバーに配置されているサーバー証明書を、Webブラウザにインストールされているルート証明書を使って検証します。その上で共通鍵暗号の鍵を生成、公開鍵暗号を用いてWebサーバーと鍵交換を行います。以降のやり取りは共通鍵暗号で行われます。これらの処理はすべてブラウザが行ってくれるため、利用者が意識する必要はありません。
無線LANの暗号化設定は安全?
最近は自宅だけでなく、外出先でも無線LANによりインターネットに接続する場面が増えてきました。無線LANの接続設定を行うとき、WEPやWPA、WPA2などの暗号方式を選択しています。このため、HTTPSを使わなくても通信が暗号化されていると考えてしまう人がいます。
しかしこれには落とし穴があります。無線LANの暗号化によって暗号化されるのは、コンピュータと無線LAN機器の間の通信だけです。そこから先のインターネット上の通信は暗号化されません(図5)。
つまり、無線LANで暗号化設定を行っていても、Webサイトとの通信にHTTPが使用されていると、通信の内容を第三者に盗聴されてしまう可能性があります(図6)。HTTPSなら、「WebブラウザとWebサーバーの間」の通信も暗号化されます。
もちろん、インターネットへのアクセスはWebの閲覧だけではありません。メールの送受信やFTPなど、暗号化されない通信があります。通信の暗号化を考えるときには、「どの範囲が暗号化されているのか」を理解しておきましょう。