Contents
Telegram の暗号化基盤:MTProto とクライアント‑サーバ暗号化
Telegram が提供する通信の安全性は、独自プロトコル MTProto と TLS による二層保護で実現されています。このセクションでは、MTProto の内部構造と標準チャットが利用している「クライアント‑サーバ暗号化」の仕組みを解説し、なぜこの設計が大規模メッセンジャーに適しているのかを示します。
MTProto の構造と主要コンポーネント
MTProto は 2013 年に公開された最初のバージョンから改良が重ねられ、現在は MTProto 2.0 が標準です。以下の3つの暗号技術を組み合わせて通信路全体を保護します。
| コンポーネント | 目的 | 主なアルゴリズム・鍵長 |
|---|---|---|
| 対称暗号 | ペイロードの高速暗号化 | AES‑256‑CTR(または CBC) |
| 公開鍵暗号 | 初期認証とセッションキー配送 | RSA‑2048(サーバ側)/ECDH (Curve25519) |
| 鍵交換・前方秘匿性 | 毎回新しい共有秘密を生成 | Diffie–Hellman(Curve25519)+ SHA‑256 キー派生 |
MTProto はまず RSA でサーバの公開鍵を取得し、ECDH によって一時的な共有秘密を作ります。その後、AES‑256‑CTR で実データを暗号化し、TLS 1.3 が上位レイヤーとして通信路全体を保護します。(参考:Telegram公式ドキュメント「MTProto 2.0」)
クライアント‑サーバ間の暗号化方式
標準チャットは「クライアント‑サーバ暗号化」(client‑server encryption)で保護され、メッセージはサーバ側で復号可能です。
- 送信側:TLS 1.3 + MTProto で暗号化 → Telegram サーバ
- サーバ側:MTProto により復号し、受信端末へ再暗号化して転送
- 保存:平文ではなく暗号化された状態でクラウドに保持(30 日間がデフォルト)
この方式はマルチデバイス同期を可能にしますが、サーバ管理者や法執行機関の要請に応じてメッセージ内容へアクセスできる点がリスクとなります。(参考:Telegramプライバシーポリシー)
標準チャットとシークレットチャット(E2EE)の違い
標準チャットは便利さを優先し、サーバ側で復号可能な設計です。一方 シークレットチャット は端末間だけで鍵が共有され、Telegram のサーバは暗号化されたメッセージの内容にアクセスできません。以下では両者の利用シーンと技術的差異を整理します。
利用シーンとユーザー体験の比較
標準チャットはクラウド同期が前提で、複数デバイスから同じ会話履歴にアクセスできます。機密情報のやり取りにはシークレットチャットを選択すべきです。
| 項目 | 標準チャット | シークレットチャット |
|---|---|---|
| メッセージ保存先 | サーバ+クラウド(暗号化済) | 端末のみ、サーバ非保持 |
| 多端末同期 | ○(自動) | ×(手動で別のシークレットを作成) |
| 自己破壊タイマー | × | ○(設定可能) |
| スクリーンショット防止 | × | ×(実装なし) |
E2EE が有効になる条件
シークレットチャットが真のエンドツーエンド暗号化を提供するためには、次の前提が必要です。
- 両端末が Telegram 8.0 以降 の最新版であること
- インターネット接続が TLS 1.3 で保護された状態であること
- アプリ内で自動的に実行される Curve25519 DH 鍵交換 が成功していること
これらの条件が満たされれば、毎回新しいセッション鍵が生成され、過去の通信は将来鍵が漏洩しても復号できません(前方秘匿性)。
シークレットチャットの鍵交換と完全前方秘匿性(PFS)
シークレットチャットは「Diffie–Hellman (Curve25519)」を用いたキーエクスチェンジにより、端末間で共有秘密を安全に生成します。このプロセスと暗号化方式の詳細を見ていきましょう。
Diffie–Hellman 鍵交換フロー
シークレットチャット開始時に自動的に実行される手順です。
- キー生成:各端末がランダムな 256‑bit のプライベートキー
a/bと公開鍵A = g^a、B = g^bを作成。 - 公開鍵中継:サーバは暗号化された形で
AとBを相手端末に転送(サーバ自体は復号できません)。 - 共有秘密計算:各端末が
S = B^a = A^bを計算し、SHA‑256 で派生鍵K_sessionを生成。
|
1 2 3 4 5 |
A端末 ──(暗号化公開鍵 A)──► サーバ ◄──(暗号化公開鍵 B)─── B端末 │ │ ▼ ▼ S = g^(ab) → K_session (SHA‑256) |
この手順により 完全前方秘匿性(PFS) が保証され、サーバが侵害された場合でも過去のメッセージは復号できません。
メッセージ暗号化と認証
生成した K_session は AES‑256‑GCM でメッセージ本文を暗号化し、同時に認証タグで改ざん検知を行います。
| フロー | 内容 |
|---|---|
| 送信側 | 平文 → AES‑GCM(鍵 = K_session, nonce) → 暗号文+認証タグ → サーバへ転送 |
| 受信側 | サーバから暗号文取得 → 同一 K_session と nonce で復号 → 認証タグが一致しなければ破棄 |
AES‑GCM の認証機能により、通信途中のリプレイや改ざんは即座に検出されます。
データ保存・スクリーンショット防止 と E2EE が適用されないケース
シークレットチャットはエンドツーエンド暗号化だけでなく、サーバ側にメッセージが残らない設計です。しかし、すべての機能が E2EE の恩恵を受けるわけではありません。
サーバー上に残らない仕組み
シークレットチャットは送信後数秒以内にサーバキャッシュから削除されます。保存される情報は以下の通りです。
- 暗号化されたメッセージ本体(短時間だけ中継用)
- メタデータ(送受信者 ID、タイムスタンプ)は 暗号化された 形でのみ保持
この設計により、自己破壊タイマーを設定した場合は端末上でも自動的に削除され、サーバ側に残る痕跡が極小化します。(参考:Telegram公式FAQ「Secret chats」)
グループ・チャンネルでの暗号化範囲
現在、グループチャットやチャンネルは E2EE の対象外です。スケーラビリティと履歴同期を優先し、クライアント‑サーバ暗号化のみが適用されます。
| 機能 | 暗号化方式 | 保存場所 |
|---|---|---|
| 個別シークレットチャット | E2EE(DH + AES‑GCM) | 端末のみ |
| 標準個別チャット | クライアント‑サーバ暗号化 | サーバ+クラウド |
| グループ/チャンネル | クライアント‑サーバ暗号化 | サーバ+クラウド |
機密情報を多数人で共有する必要がある場合は、シークレットチャットではなく 外部の PGP 暗号化ツール との併用を検討してください。
スクリーンショット防止機能の現状
Telegram は スクリーンショットや画面録画をブロックする API を提供していません。シークレットチャットでも端末側で撮影された画像はそのまま保存されます。
- iOS/Android の OS が「画面録画禁止」機能を持つ場合のみ、アプリ側で制御が可能です(Telegram 自体の設定は存在しない)。
- セキュリティベンダーは「端末ロックと二段階認証で物理的アクセスを防ぐ」ことを推奨しています。(参考:Independent security research 2024)
シークレットチャットを安全に始める手順と総合的なセキュリティ強化
実際にシークレットチャットを作成し、さらにアカウント全体の防御力を高めるための具体策をご紹介します。
シークレットチャット作成手順(ステップ)
以下の流れで数クリックだけで E2EE が有効になります。
- Telegram アプリ起動 → メニュー > 「新しいシークレットチャット」 をタップ。
- 相手のユーザー名または電話番号を検索し、対象を選択。
- 「開始」ボタン を押すと、バックエンドで DH 鍵交換が自動的に実行されます。
- 必要なら 自己破壊タイマー(例:30 秒、1 時間)を設定し、期限切れ後にメッセージが端末から削除されるようにします。
ポイント:シークレットチャットはクラウド同期対象外のため、別デバイスで同一会話を見ることはできません。必要に応じて重要情報は別途バックアップしないよう注意してください。
アカウント保護と端末ロックのベストプラクティス
シークレットチャットだけでなく、アカウント全体を守る設定を併用することでリスクを大幅に低減できます。
- 二段階認証(2FA):Telegram 設定 → 「プライバシーとセキュリティ」→「二段階認証」を有効化。パスコード+メール/OTP が必要になります。
- アプリロック:Android の「アプリロック」や iOS の「スクリーンタイム」機能で、Telegram 起動に指紋・顔認証を必須にします。
- 端末自体の生体認証:OS ロックと同様に指紋/顔認証を設定し、デバイスが盗まれた際の情報流出を防止。
- 自己破壊タイマー活用:機密度が高い会話は必ずタイマーを有効化し、一定時間後に自動削除させます。
推奨設定チェックリスト
| 設定項目 | 推奨状態 |
|---|---|
| 二段階認証(パスコード+メール) | 有効 |
| アプリロック(指紋/顔認証) | 有効 |
| OS ロックと同様の生体認証 | 有効 |
| シークレットチャット開始時に自己破壊タイマー設定 | 推奨 |
まとめ
- MTProto 2.0 は AES‑256、RSA‑2048、Curve25519 DH を組み合わせたハイブリッド暗号で、クライアント‑サーバ間の通信は TLS 1.3 と併用して保護されます。
- 標準チャット はサーバ側で復号可能なため、法的要請や内部アクセスに対するリスクがあります。
- シークレットチャット のみが真のエンドツーエンド暗号化(E2EE)を提供し、DH 鍵交換と AES‑256‑GCM による完全前方秘匿性(PFS)を実現します。
- メッセージはサーバに保存されず、自己破壊タイマーで端末上でも自動削除が可能ですが、スクリーンショット防止機能は未実装です。
- グループチャット・チャンネルは E2EE が適用されないため、機密情報の共有にはシークレットチャットまたは外部暗号化ツールを利用してください。
- 安全に運用するには 二段階認証 + 端末ロック を必ず設定し、シークレットチャット開始時に自己破壊タイマーを活用しましょう。
これらのポイントを押さえておけば、個人でも企業でも Telegram の暗号化機能を正しく活用でき、情報漏洩リスクを最小限に抑えることができます。