近年、さまざまな通信サービスが、それこそWhatsAppからZoomまで、エンドツーエンド暗号化の実装を発表しています。
「エンドツーエンド暗号化」—最近よく見かける用語だな、と思った人も多いのではないでしょうか。「暗号化」とは、読めないようにデータを変換することです。では「エンドツーエンド」とは?エンドツーエンド暗号化は何ができて何ができないのか?
それでは、暗号化の基礎である数学にはなるべく踏み込まず、専門用語に頼らず、できるだけ分かりやすく説明していきましょう。
エンドツーエンド暗号化とは何か、他にはどんな通信方法があるか
エンドツーエンド暗号化とは、一つのデバイス(たとえばスマートフォンやPC)でメッセージを暗号化し、送信先のデバイスでしか復号できないようにするやり方です。送信者の元を発して受信者へ届くまでの間(これを「エンドツーエンド」と表現します)、メッセージは暗号化されたままです。
そもそも、これ以外にどんな通信方法があるのでしょうか。まず、メッセージを平文で(つまり、暗号化せずに)送る方法があります。これは最も安全性の低い方法です。たとえば、SMS(ショートメッセージ)で送信されるデータは暗号化されないので、理論上は誰でも傍受できます。幸いなことに、実際には特殊な装置を用意しなければ傍受はできないため、あなたのテキストメッセージを盗み見ることのできる人はある程度限定されます。
送信中のメッセージを暗号化する方法もあります。メッセージは、送信者側で暗号化されてサーバーへ送られ、サーバー上で復号されて再び暗号化された後、受信者の元へ届けられ、そこで復号されます。この方法では、送信中は情報が保護されますが、中継場所となるサーバーはメッセージの中身を知ることができます。サーバーを所有する人や団体の信頼性が低いと、問題が起きる可能性があります。
送信中にデータを暗号化する方式の場合、サーバーを介して通信するので、単にデータを送る以外の用途が可能になるという利点もあります。たとえば、サーバーにメッセージ履歴を保存できたり、別の通信経路を利用して会話に参加者を追加できたり(ビデオ会議に電話で参加するなど)、自動モデレーションを利用できたりします。
この方法は、ユーザーからサーバー、サーバーからユーザーへと移動するときにデータが傍受されて読まれてしまうという、一番の問題に対する解決策でもあります。ここはメッセージ伝送の流れの中で一番傍受されやすいポイントなのですが、傍受されたメッセージが暗号化されていれば読まれることはありません。そういった理由から、エンドツーエンド暗号化にこだわらずこちらの方法を採用するサービスも少なくありません。データのセキュリティを高めることよりも、利便性と追加サービスの利用を重要視する人にとっては、こちらの方が適しているかもしれません。
エンドツーエンド暗号化で守れるもの
エンドツーエンド暗号化の主な利点は、送信されるデータを受信者しか見られないところです。物理的に開封不可能な箱に手紙を入れて送るようなもので、大きなハンマーでも、のこぎりでも、ピッキングでも開けることはできず、開けられるのは受取人だけ。エンドツーエンド暗号化は、通信の秘密を守ります。
決して開けることのできない箱を作るのは、現実世界では不可能ですが、情報の世界では可能です。数学の専門家たちは、新しい暗号化システムの開発と古い暗号化システムの強度改善に常に取り組んでいます。
もう一つの長所は、受信者以外はメッセージを解読できない点です。したがって、誰もメッセージを変更できません。最新の暗号化方式では、暗号化されたデータを誰かが変更した場合、復号したメッセージが文字化けして、誰かが手を入れたことがすぐに分かるようになっています。暗号化されたメッセージに対して予測可能な変更を加えられないということは、テキストの変更は不可能であるということです。
こうして、通信の一貫性が保証されます。正常に復号されたメッセージを受け取ったならば、それは送信者が書いたものと同一の内容であって、送信中に手を加えられなかったということなのです(実際、メッセンジャーアプリは自動的にこのように機能しています)。
エンドツーエンド暗号化で守れないもの
エンドツーエンド暗号化の利点を知って、これこそ情報通信のあらゆる問題を解決する方法だと感じたかもしれません。しかし、そうではないのです…エンドツーエンド暗号化にも限界はあります。
まず、エンドツーエンド暗号化を使用すると、メッセージの内容を見られることはありませんが、あなたが特定の人にメッセージを送った(または特定の人からメッセージを受け取った)事実は明白です。サーバーがメッセージを読み取ることはできませんが、特定の日の特定の時刻にあなたがメッセージをやり取りしたことは確実に分かります。特定の人物とやり取りをしているということだけで、不要な関心を引いてしまうことがあります。
次に、あなたが通信に使用しているデバイスが誰かの手に渡ったとしたら、その人はすべてのメッセージを読むことができますし、あなたになりすましてメッセージを書いて送ることもできます。したがって、エンドツーエンド暗号化によって通信を保護する場合は、デバイスとアプリも保護する必要があります。せめて、暗証番号くらいは設定しましょう。そうしておけば、デバイスを紛失したり盗まれたりした場合、自分のやり取りした情報が他人に知られたり、なりすましの被害に遭ったりする事態を防ぐのに役立ちます。
しかし、スマートフォンにマルウェアが感染すると、誰かがあなたのスマートフォンを物理的に手にした場合と同じように、メッセージのやりとりが読まれてしまう可能性があります。どんな種類の暗号化を使っていても、その危険は変わりません。こうした理由から、デバイスをセキュリティソフトウェアで保護しておく必要があります。
最後に、すべてのデバイスを完璧に保護し、デバイス上に保管されたメッセージに誰もアクセスできない状態にしたとしても、会話の相手のデバイスがどんな状態であるかまでは知りようがありません。エンドツーエンド暗号化も、さすがにそこはどうにもできません。
このような限界はありながらも、エンドツーエンド暗号化は今のところ、機密データを送信する際の最も安全性の高い方法であり、エンドツーエンド暗号化を採用する通信サービスは増え続けています。良いことです。