盗み見られても内容を読ませない
インターネットの通信は、手紙が一つの場所から相手へ直接移動するようなものではありません。データは細かなパケットに分けられ、複数の通信機器や回線を経由して届きます。通信経路を完全に自分だけで管理することは難しいため、重要な情報を読める状態のまま送るのは危険です。
そこで、送信前の平文を一定の計算によって暗号文に変え、受信側で復号します。変換の手順そのものを隠すことだけに頼らず、鍵という値を使うのが現代の暗号の基本です。広く知られた暗号方式でも、適切な鍵が秘密に保たれ、現実的な時間では鍵を割り出せないように設計されていれば利用できます。
暗号化が主に守るのは、許可された人だけが情報に触れられる「機密性」です。これは情報セキュリティの3要素の一つです。ただし、暗号化しただけでデータの消失やサービス停止まで防げるわけではありません。目的ごとに、改ざん検知、認証、バックアップなどの対策も組み合わせる必要があります。
同じ鍵を使う共通鍵暗号
共通鍵暗号では、暗号化と復号に同じ鍵を使います。たとえば、箱を施錠する鍵と開ける鍵が同じである場合に似ています。大量のデータを効率よく処理できるため、通信内容や保存ファイルの暗号化に向いています。
一方、相手も同じ鍵を持たなければ復号できません。その鍵を安全でない通信で送れば、鍵と暗号文の両方を第三者に得られるおそれがあります。通信相手が増えるほど、誰にどの鍵を渡し、いつ交換し、漏えい時にどの鍵を無効にするかという管理も複雑になります。共通鍵暗号の弱点は暗号化の能力ではなく、秘密の鍵を安全に共有する方法にあります。
鍵はパスワードと似て見えますが、同じものとは限りません。暗号処理では、十分な長さと予測しにくさを持つ値が必要です。人が覚えやすい短い語句をそのまま鍵として扱うと、候補を順番に試す攻撃に弱くなります。パスワードから鍵を作る場合は、そのための処理を通して利用します。
公開鍵と秘密鍵を役割分担させる
公開鍵暗号では、対になる二つの鍵を使います。公開鍵は他者に渡してよく、秘密鍵は所有者だけが管理します。相手の公開鍵で暗号化したデータを、対応する秘密鍵でなければ復号できないようにすれば、復号用の秘密鍵を通信相手へ送らずに済みます。
公開鍵暗号は便利ですが、どの公開鍵が本当に目的の相手のものかを確かめる仕組みも必要です。第三者の公開鍵を相手の鍵だと思い込めば、その第三者に読まれる形で暗号化してしまうからです。Web通信では、電子証明書と、それを確認する仕組みが公開鍵とサイトの結び付きを支えています。
公開鍵暗号の技術は、デジタル署名にも利用されます。ただし、秘密にしたいデータを暗号化する処理と、送信者や改ざんの有無を確かめる署名の処理は目的が異なります。「暗号技術を使うものはすべて暗号化」とまとめないことが大切です。
Web通信は二つの暗号方式を組み合わせる
HTTPSで使われるTLSというプロトコルでは、公開鍵暗号と共通鍵暗号の長所を組み合わせます。接続を始める段階では、証明書を確認し、安全に通信するための情報をやり取りします。その後の実際の通信では、効率よく処理できる共通鍵暗号を利用します。このように複数の方式を組み合わせる考え方は、ハイブリッド暗号と呼ばれます。
暗号化の対象は通信中のデータだけではありません。端末のストレージ、USBメモリ、バックアップ、データベースなど、保存中のデータにも利用されます。通信経路が守られていても、紛失した端末や不正に持ち出された記録媒体から情報が漏れる可能性があるためです。
ただし、正規の利用者が復号した後の画面をのぞき見られたり、端末がマルウェアに操作されたりすれば、内容を知られることがあります。また、鍵を失うと正当な所有者も復号できない場合があります。暗号方式の選択だけでなく、端末の保護、多要素認証、鍵の保管と更新まで含めて考える必要があります。
南京錠の印はサイトの善良さを保証しない
ブラウザのアドレス欄にHTTPSの状態が表示されていても、そのWebサイトの内容や運営者が安全だと無条件に保証されるわけではありません。分かるのは主に、接続先の証明書が確認され、ブラウザと接続先の間の通信が保護されているということです。
偽の通販サイトやフィッシングサイトでも、HTTPSを利用することは可能です。暗号化された通信なら、入力した情報は途中では読まれにくくなりますが、接続先には復号されて届きます。接続先自体が悪意を持っていれば、情報を渡してしまう結果は変わりません。暗号化の表示に加えて、ドメイン名、サイトの目的、入力を求められている情報が妥当かを確認することが重要です。