アプリが接続
起動中の端末は案内係のサーバー(シグナリングサーバー)につながって、オンライン状態を保ちます。
🔐 むずかしい話はやさしく
CrossFlowは、あなたのスマホと相手のスマホをできるだけ直接つなげて送ります(この「直接つながる」仕組みをP2Pと呼びます)。サーバーは相手を見つける案内役だけで、ファイルの中身を読むための鍵は持っていません。
🗺️ 全体の流れ
専門用語が並びますが、ようは「サーバーは連絡係、実際のファイルは2人の間で直接やりとり」というイメージです。
起動中の端末は案内係のサーバー(シグナリングサーバー)につながって、オンライン状態を保ちます。
送信側は登録ずみの相手へ「送るよ」と知らせ、受信側は友だちかどうかを確認します。
件数、サイズ、サムネイル、コメントを見て、受け取るか断るかを選びます。
同じWi-Fi、スマホ同士の直接通信(WebRTC)、中継サーバー(TURN)のどれかを自動で選んでつなぎます。
暗号のカギが合っているか・ファイルが壊れていないかを確認し、問題があれば保存しません。
🛣️ 3つの通り道
通り道はアプリが自動で選びます。あなたが手動で選ぶ必要はありません。
同じWi-Fiや同じネットワーク内に相手がいる場合、いちばん近道でサクッと転送します。
インターネット越しでも、できるだけ端末同士を直接つなぎます。つなぎ先を探す仕組み(STUN)を裏側で使っています。
直接つながれない厳しいネットワークでは、中継サーバーを間にはさみます。この場合もファイルの中身は暗号化されたままです。
🏢 サーバーの仕事
サーバーは「郵便局の窓口」みたいなもの。荷物(ファイル)の中身は見られません。
転送前の確認に必要な情報として、相手ID、転送ID、件数、合計サイズ、ファイル名、サムネイル、コメントは扱われます。ただしこれは荷物の「宛名」や「伝票」にあたる情報で、ファイルの中身そのものとは別ものです。
🔑 暗号化のしくみ
「E2E暗号化」とは、送った人と受け取った人しか中身を見られない仕組みのこと。手紙を鍵つきの箱に入れて送るイメージです。
初めて起動したとき、端末ごとに「本人確認用のカギ」が作られます。友だち登録のときにこのカギ(の公開部分)を交換して、以後の相手確認に使います。
転送のたびに、その場限りのカギを作ります。送信側と受信側だけが同じ秘密を計算でき、転送が終わったら使い回しません。
ファイルを小さな断片に分けてから暗号化します。途中で改ざんされたり壊れたりしていたら気づける仕組みです。
受け取ったあと、送られたときと中身が一致しているか確認します。一致しなければ失敗として扱い、保存しません。
受信側は、送ってきた相手が自分の連絡先にいるかを確認します。登録していない相手からの転送は、確認画面にすら出てきません。
自動で受け取る機能は、お気に入り登録した相手だけに使えます。設定からいつでもオフにできます。
🔎 QRコードの中身
プロトコルバージョン、ペアリングID、デバイスID、ニックネーム、公開鍵、サーバーURL、有効期限などです。
秘密鍵、過去の転送ファイル、端末内の友達リスト、ファイル本文は含まれません。
古いコードを使い回さないためです。必要なときに表示し直し、目の前の相手と登録してください。
📌 知っておきたいこと
相手のアプリが起動していない、通信が不安定、ネットワークがP2Pを制限している場合は接続に失敗することがあります。
中継経路なので直接通信より速度が落ちる場合があります。ただしファイル本文は暗号化されたままです。
バックアップから完全復元しない場合、端末識別鍵が変わるため、以前の友達から見ると別端末になります。