LINE のメッセージはどう届くのか? メッセンジャーサーバーと E2E 暗号化
LINE で送信ボタンを押すと、メッセージが相手のスマホへ直接飛んでいくように見えますが、実際はそうではありません。メッセージは必ず運営会社のサーバーを経由します。この単純な事実ひとつで、メッセンジャーの多くの動きが説明できます。「既読」がどうやってつくのか、スマホの電源が切れていた間のメッセージがなぜちゃんと届くのか、そして暗号化の範囲がサービスごとになぜ違うのかまでです。今回の記事では、その中身をコードなしで整理していきます。
メッセージは郵便局を経由します #
メッセンジャーの基本構造は郵便局と同じです。自分が送ったメッセージは、まずメッセンジャー会社のサーバーに届いて保管され、サーバーが相手のスマホへ配達します。直接の手渡しではなく、預けてから配達です。
なぜこう作るのでしょうか。相手のスマホが常にオンとは限らないからです。機内モードでもバッテリー切れでも、受け取る側が不在のときに、送る側がメッセージを送れなければなりません。サーバーが郵便局のように保管しておけば、相手のスマホが再びつながった瞬間、たまっていたメッセージをまとめて配達できます。飛行機を降りてスマホの電源を入れると、メッセージがどっと流れ込んでくるあの場面こそ、この構造の証拠です。
配達の方法は状況によって二つに分かれます。アプリが開いていれば、スマホとサーバーの間にすでにつながっている通路へすぐ流し込み、アプリが閉じていればプッシュ通知でスマホを起こします。「通知は来たのに、アプリを開いてやっと内容が表示される」という微妙な時差は、この二つの経路の合作です。
「既読」がつく原理 — 領収書の往復 #
LINE の「既読」も、ほかのメッセンジャーのチェックマークも、すべて同じ原理です。配達の各段階ごとに、領収書が逆向きに戻ってくるのです。
- 自分のスマホ → サーバーに到着:「受付済み」の領収書
- サーバー → 相手のスマホに到着:「配達済み」の領収書
- 相手がトークを開いて読む:「既読」の領収書 — このとき「既読」がつきます
LINE の画面に見えるのは最後の段階だけですが、裏ではこうした領収書が行き来しています。だから「既読」がつかない状態は、正確に言うと「相手のスマホまで届いたかどうかは画面からわからないものの、少なくとも既読の領収書はまだ戻ってきていない状態」です。そして、この領収書たちも結局はサーバーを経由するメッセージです。既読表示、入力中の表示、プロフィール変更の通知まで、メッセンジャーで目にするほとんどすべてが、同じ郵便局を行き来する小さな手紙です。
スマホと PC で同じトークが見えるマルチデバイスも、この構造の延長です。サーバーが会話の控えを持っているので、新しい端末がログインすれば、サーバーがその端末にも写しを配達してあげればよいわけです。
通信の暗号化 — はがきではなく封筒で #
サーバーを経由すると聞くと、不安になるかもしれません。なら、通信会社や同じ Wi-Fi にいる誰かが、自分のメッセージを見られるのではないか、と。これに対する最初の防御が、通信(転送中)の暗号化です。自分のスマホからサーバーまで、サーバーから相手のスマホまでの移動区間が、HTTPS と同じ原理で封筒に入れられます。途中で横取りしても、中身は読めません。
ただ、この方式にははっきりした限界があります。封筒は区間ごとに開けられ、また閉じられます。つまり、サーバーの上では中身が読める状態になります。会社が実際にのぞくかどうかとは別に、構造としては見られますし、捜査機関の適法な要請やハッキング事故の対象にもなり得ます。多くのサービスのふつうのチャットは、この段階にとどまっています。
E2E 暗号化 — 郵便局も開けられない手紙 #
二段階目が E2E 暗号化(end-to-end encryption、エンドツーエンド暗号化)です。端(自分のスマホ)から端(相手のスマホ)まで鍵がかかっているという意味で、鍵を会話の当事者のスマホだけが持つ方式です。サーバーは鍵のかかった手紙を保管して配達しますが、開けることはできません。会社自身も中身を読めないようにする設計なので、ハッキングや提出の要求があっても、出せるのは鍵のかかった束だけです。
適用範囲はメッセンジャーごとに違います。Signal はすべての会話が既定で E2E 暗号化ですし、WhatsApp も既定で適用されます。LINE は「レターシーリング」という名前で、1対1 のトークなどに E2E 暗号化を既定で適用していますが、すべての種類のメッセージや機能がカバーされるわけではありません。さらに Telegram のように、ふつうのチャットは通信の暗号化までで、E2E 暗号化は「シークレットチャット」という別モードとして提供するサービスもあります。どこまで守られているかは、サービスごと、機能ごとに違うのです。
それなら、なぜ全部を E2E 暗号化にしないのでしょうか。サーバーが中身を読めないと、会社が代わりにやってくれていたことが難しくなるからです。新しいスマホでの過去のトークの復元、サーバー側の検索、トークのマルチデバイス同期といった便利機能が、すべて「鍵をどう安全に運ぶか」という難しい問題に変わります。機種変更のときにトーク履歴の引き継ぎへ専用のバックアップ手順が必要なのも、まさにこの問題のためです。E2E 暗号化のモードで一部の機能が抜けるのは、怠慢ではなく構造の代償です。便利さと機密性の間の取引というわけです。
使う側が持ち帰るもの #
構造を知ると、判断の基準ができます。
- E2E 暗号化が適用されていないふつうのチャットは、移動区間は暗号化されても、サーバー上では読める構造です。日常の会話には十分で、だからこそ便利機能が豊富です。
- 本当に敏感な会話(身分証の写真や口座情報など)は、E2E 暗号化が適用された場所で送るか、そもそもメッセンジャーで送らないのが正解です。一度送った写真は、相手のスマホとサーバーの保管庫に残ります。
- バックアップの設定も同じ目で見ます。トーク履歴のバックアップが暗号化なしでクラウドに上がるなら、本体のトークに鍵がかかっていても、写しが開いているのと同じです。バックアップの暗号化オプションをオンにしておくのがよいです。
まとめると、メッセージは直接届くのではなく、サーバーという郵便局を経由し、「既読」がつくのは既読の領収書が帰ってきたときです。ふつうのチャットは移動区間だけが封筒に入り、E2E 暗号化は郵便局さえ開けられない手紙を作ります。次に設定の中で「レターシーリング」という項目を見かけたとき、それが何を約束する機能なのか、正確に見分けられることを願っています。