🔐 むずかしい話はやさしく

P2Pと安全性

CrossFlowは、あなたのスマホと相手のスマホをできるだけ直接つなげて送ります(この「直接つながる」仕組みをP2Pと呼びます)。サーバーは相手を見つける案内役だけで、ファイルの中身を読むための鍵は持っていません。

端末同士を暗号化された経路でつなぐP2Pの説明イラスト
サーバーは案内役。ファイル本文は暗号化された経路で相手へ届きます。

🗺️ 全体の流れ

転送の全体像

専門用語が並びますが、ようは「サーバーは連絡係、実際のファイルは2人の間で直接やりとり」というイメージです。

1

アプリが接続

起動中の端末は案内係のサーバー(シグナリングサーバー)につながって、オンライン状態を保ちます。

2

相手を確認

送信側は登録ずみの相手へ「送るよ」と知らせ、受信側は友だちかどうかを確認します。

3

受信側が判断

件数、サイズ、サムネイル、コメントを見て、受け取るか断るかを選びます。

4

経路を作る

同じWi-Fi、スマホ同士の直接通信(WebRTC)、中継サーバー(TURN)のどれかを自動で選んでつなぎます。

5

検証して保存

暗号のカギが合っているか・ファイルが壊れていないかを確認し、問題があれば保存しません。

🛣️ 3つの通り道

3つの接続経路

通り道はアプリが自動で選びます。あなたが手動で選ぶ必要はありません。

同じWi-Fiで直接

同じWi-Fiや同じネットワーク内に相手がいる場合、いちばん近道でサクッと転送します。

スマホ同士で直接(WebRTC)

インターネット越しでも、できるだけ端末同士を直接つなぎます。つなぎ先を探す仕組み(STUN)を裏側で使っています。

中継サーバー経由(TURN)

直接つながれない厳しいネットワークでは、中継サーバーを間にはさみます。この場合もファイルの中身は暗号化されたままです。

🏢 サーバーの仕事

サーバーがすること、しないこと

サーバーは「郵便局の窓口」みたいなもの。荷物(ファイル)の中身は見られません。

✅ サーバーがすること

  • 端末がオンラインかどうかを管理します。
  • 友達追加リクエストや承認を相手へ届けます。
  • 端末同士がつながるための接続情報(技術的にはoffer・answer・ICE candidateと呼びます)を橋渡しします。
  • 必要なときだけ、中継サーバー用の一時的な情報を渡します。

🚫 サーバーがしないこと

  • ファイルの中身を保管しません。
  • ファイルの中身を読むためのカギを持ちません。
  • 友だちリストを恒久的な名簿として保存しません。
  • 受信側が断ったのか、オフラインなのかを送信側へ細かく教えません。

転送前の確認に必要な情報として、相手ID、転送ID、件数、合計サイズ、ファイル名、サムネイル、コメントは扱われます。ただしこれは荷物の「宛名」や「伝票」にあたる情報で、ファイルの中身そのものとは別ものです。

🔑 暗号化のしくみ

E2E暗号化のしくみ

「E2E暗号化」とは、送った人と受け取った人しか中身を見られない仕組みのこと。手紙を鍵つきの箱に入れて送るイメージです。

友だち登録用のカギ

初めて起動したとき、端末ごとに「本人確認用のカギ」が作られます。友だち登録のときにこのカギ(の公開部分)を交換して、以後の相手確認に使います。

転送ごとの使い捨てカギ

転送のたびに、その場限りのカギを作ります。送信側と受信側だけが同じ秘密を計算でき、転送が終わったら使い回しません。

ファイルを細かく分けて暗号化

ファイルを小さな断片に分けてから暗号化します。途中で改ざんされたり壊れたりしていたら気づける仕組みです。

届いたファイルのチェック

受け取ったあと、送られたときと中身が一致しているか確認します。一致しなければ失敗として扱い、保存しません。

知らない人はブロック

受信側は、送ってきた相手が自分の連絡先にいるかを確認します。登録していない相手からの転送は、確認画面にすら出てきません。

自動受信は超限定的

自動で受け取る機能は、お気に入り登録した相手だけに使えます。設定からいつでもオフにできます。

QRコードで公開情報だけを交換して友達追加する説明イラスト
QRコードには友達登録に必要な公開情報が入ります。秘密鍵やファイル本文は含まれません。

🔎 QRコードの中身

QRコードと友達コードの安全性

含まれる情報

プロトコルバージョン、ペアリングID、デバイスID、ニックネーム、公開鍵、サーバーURL、有効期限などです。

含まれない情報

秘密鍵、過去の転送ファイル、端末内の友達リスト、ファイル本文は含まれません。

期限がある理由

古いコードを使い回さないためです。必要なときに表示し直し、目の前の相手と登録してください。

📌 知っておきたいこと

知っておきたい制限

両方の端末が通信できる必要があります

相手のアプリが起動していない、通信が不安定、ネットワークがP2Pを制限している場合は接続に失敗することがあります。

TURN経由は遅くなることがあります

中継経路なので直接通信より速度が落ちる場合があります。ただしファイル本文は暗号化されたままです。

再インストール後は再登録が必要な場合があります

バックアップから完全復元しない場合、端末識別鍵が変わるため、以前の友達から見ると別端末になります。