Discord

DiscordはDAVEプロトコルを発表した。DAVEプロトコルは、プラットフォーム上の音声およびビデオ通話を不正な傍受から保護するために設計されたカスタムE2EE(エンドツーエンド暗号化)プロトコルである。

DAVEはTrail of Bitsのサイバーセキュリティ専門家の協力を得て作成され、E2EEシステムのコードと実装も監査された

新システムは、プライベート・チャンネルでのユーザー間の1対1の音声・ビデオ通話、小規模グループ・チャットでの音声・ビデオ通話、大規模グループでの会話に使用されるサーバー・ベースの音声チャンネル、リアルタイム・ストリーミングをカバーする。

「本日より、DM、グループDM、音声チャンネル、Go Liveストリームにおける音声とビデオのE2EEへの移行を開始します

“通話がエンドツーエンドで暗号化されていることを確認し、その通話で他のメンバーの確認を行うことができるようになります。”

Discordは元々、ゲームプレイ中にコミュニケーションを取るゲーマーのために構築されたが、今では世界で最も人気のあるコミュニケーション・プラットフォームの1つに成長し、共通の趣味を持つグループ、クリエイター、ビジネス、様々なコミュニティに対応している。

DAVEの導入は、2億人以上が利用する同プラットフォームのデータセキュリティとプライバシーを強化する重要な動きだ。

最も重要なことは、Discordがプロトコルとそのバックライブラリをオープンソースにすることを決定し、セキュリティ研究者による精査を可能にしたことだ。完全な技術情報を記載したホワイトペーパーも公開され、コミュニティに対する透明性が確保された。

DAVEの技術概要

DAVEはWebRTCエンコード変換APIを使用しており、メディアフレーム(オーディオとビデオ)はエンコードされた後、送信のためにパケット化される前に暗号化される。受信側はフレームを復号化してからデコードします。

ヘッダーや予約シーケンスなどの特別なコーデックのメタデータだけが暗号化されずに残されます。

DAVE's operational overview
DAVEの運用概要
ソースはこちら:ディスコード

鍵管理に関しては、安全でスケーラブルなグループ鍵交換のためにMLS(Messaging Layer Security)プロトコルが使用され、各参加者は送信者ごとの対称メディア暗号鍵を持つ。ID鍵ペアの生成には楕円曲線デジタル署名アルゴリズム(ECDSA)が使用される。

グループの構成が変わると(メンバーが脱退するか、新しいメンバーが加入する)、新しい「エポック」が始まり、新しい鍵を生成することでグループの暗号化状態がその新しいエポックに移動する。このプロセスは、参加者に目立った混乱を与えることなく完了するはずだ。

Discordによれば、MLSは鍵交換に多少の遅延を加えるが、DAVEは大規模なグループ通話でもその遅延を数百ミリ秒の閾値以下に抑えるように設計されている。

最後に、ユーザー認証に関しては、グループのMLSエポック状態から得られる「ボイス・プライバシー・コード」と呼ばれる認証コードの比較など、帯域外の方法がある。

持続的な追跡に対する耐性は、エフェメラルな ID キーを使用することで達成される。

Screen with Voice Privacy Codes
音声プライバシーコード画面
Discord

段階的なロールアウト

Discordは、対象となるすべてのチャンネルのDAVEへの移行プロセスを開始しており、ユーザーはインターフェイス上の対応するインジケータを確認することで、通話がエンドツーエンドで暗号化されているかどうかを確認できるようになる。

すべてのユーザーがすべてのデバイスとチャンネルで新しいE2EEシステムに完全にアクセスできるようになるまでには、しばらく時間がかかると予想されます。

旧式のクライアントはトランスポートのみの暗号化に制限されるため、ユーザーは最新のクライアント・アプリケーションにアップグレードする以外に何もする必要はありません。

最初のロールアウトはDiscordのデスクトップアプリとモバイルアプリをカバーし、将来的にはウェブクライアントがそれに続く。