Relayium

セキュリティと脅威モデル

最終更新: 2026-07-01

Relayium は、鍵を握るのはサーバーではなくファイルを転送する当事者であるように設計されています。このページでは、何がどのように保護されるのか、そしてその保護の限界を説明します。

要点:リアルタイムモードではファイルは当社のサーバーを一切通りません。暗号鍵は各デバイスで新たに生成され、デバイスの外に出ることはありません。そして短い検証コードによって、当事者は悪意あるサーバーを見破ることができます。以下に詳細を記します。

エンドツーエンド暗号化(X25519 + AES-256-GCM)

転送ごとに、各デバイスで新しい一時的な X25519 鍵ペアが生成されます。2 台のデバイスは鍵交換を行い、両ブラウザ内にのみ存在する共有 AES-256-GCM 鍵を導出します。各チャンクはその鍵と一意のノンスで暗号化されるため、シグナリングサーバー、そしてあらゆる中継サーバーが目にするのは暗号文だけです。

検証コード(SAS)——悪意あるサーバーの検出

WebRTC 標準の暗号化(DTLS)は鍵のフィンガープリントをシグナリングサーバー経由で交換するため、不正なサーバーが中間に入り鍵をすり替える可能性があります。これを検出するため、Relayium は双方の公開鍵から 6 桁の Short Authentication String(SAS)を導出し、両方の画面に表示します。2 つのコードが一致すれば、中間に誰もいません。

単純な 6 桁のコード(約 20 ビット)は、原理的には中継サーバーが一致するコードを総当たりで作り出す余地があります。Relayium はコミット後開示ハンドシェイクでこの隙を塞ぎます。各側はまず鍵のハッシュを送ってコミットし、相手のコミットメントを受け取ってから初めて鍵を開示します。そのためサーバーは後から衝突する鍵を選ぶことができず、短いコードは信頼できるままです。

サーバーが決して見ないもの

本サービスは、以下がどのモードでも当社のサーバーに届かないように設計されています:

リアルタイムモードでは、ファイルの実体はサーバーを一切通らず、2 台のデバイス間で直接やり取りされます。シグナリングサーバーは接続確立のためのメッセージを中継するだけで、把握するのはルームの所属(あなたの公開 IP)、あなたが選んだデバイス名、在席状況のみです。

ファイルが中継される場合(TURN)

2 台のデバイスがネットワークをまたいで直接接続できない場合(制限の厳しい NAT やファイアウォール)、転送を完了させるために暗号化ストリームが TURN サーバー経由で中継されます。まず常に直接のピアツーピアが試みられ、中継はフォールバックであり、中継用の資格情報が発行されるのはペアリングコードと共有リンクのセッションのみです。

一時保存ダウンロードリンク——鍵はブラウザから出ない

オプションのダウンロードリンクモードは、受信者がオンラインでない場合のためのものです。ブラウザは何かがアップロードされる前にファイルを AES-256-GCM で暗号化し、復号鍵は URL フラグメント——# より後ろの部分——にのみ置かれます。ブラウザはこれをサーバーに送信しません。

ファイル整合性(SHA-256)

機密性に加えて、各ファイルの整合性も検証されます。各チャンクには AES-GCM の認証タグが付き、受信側ではファイルごとの SHA-256 ハッシュがエンドツーエンドで照合されるため、破損・改ざんされたファイルは黙って受け入れられるのではなく検出されます。

Relayium が防げないこと

エンドツーエンド暗号化は、2 つの誠実なエンドポイント間の転送中のデータを保護します。設計上、次のものは防げません:

ブラウザ対応とその限界

Relayium は、HTTPS 経由で WebRTC が使える最新ブラウザで動作します。一部の機能はブラウザによって異なります:

オープンソースと問題の報告

プロトコル設計とクライアント・サーバーの全コードは GitHub で公開されており、誰でも暗号方式を監査し、自分のサーバーを運用し、貢献できます。セキュリティ上の問題を見つけた場合は、公開の issue を作成するのではなく、リポジトリの GitHub 非公開脆弱性報告を通じて非公開でご報告ください。