内容を守るのは、まだ簡単なほう。
暗号化は、何を話したかを隠します。いつ、どれだけ、誰に話したかは隠しません。jimichi はこの二つ目の問いを中心に設計され、タイミングと通信量しか見えない観測者がなお何を知りうるかを計測します。
3つのリレー
すべてのメッセージは入れ子の暗号化を施され、3つのリレーを通ります。クライアントは、自分の一覧にあるリレーからチェーンを無作為に選びます。各リレーは1層だけを外し、隣のリレーしか知りません。2つのクライアントは、チェーンの最後のリレーにあるメールボックスを通して、エンドツーエンドの層のもとでやり取りします。メールボックスが持つのは、自分では読めない一定サイズのレコードだけです。
ひとつのサイズ
セルはすべて同じサイズです。本物のメッセージでも、カバートラフィックでも、チェーン確立のセルでも変わりません。メッセージは1つのセルに収まる必要があり、それより長いものは拒否されます。
メモリだけ
セッション鍵は一時的です。鍵を入れるバッファはロックされたメモリに置かれ、使用後にゼロで消去されます。リレー自身はディスクに何も書きません。暗号ライブラリがヒープに持つコピーはロックされません。
計測する
リポジトリには攻撃も含まれます。タイミングと通信量がまだ何を漏らすかを採点するトラフィック相関の観測者です。
攻撃は、自分たちで作った。
音声あり静かであるように。
鍵はロック解除後にだけ読み込まれ、ロックすると消去されます。連絡先は安全番号を照合して確認します。
ロック中
鍵はロック解除後にだけメモリに読み込まれ、ロックすると消去されます。
昨日
無事に帰れた?
うん、ありがとう。終電はがらがらだった。
よかった。おやすみ
今日
お昼の約束、まだ大丈夫?
うん、1時ごろに。
配達済み
図書館の近くのお店?
新しいメニューが出たって
いいね。入口で会おう。
送信済み
メッセージ
安全番号
あなた
ミラ
会ったときや通話で、この番号を照合してください。一致すれば、間に誰もいません。
372018841905532716042995744018602739118513640577298031622491
カバートラフィックだけでは守れない。
受動的な観測者は、すべての入口フローとすべての出口フローを相関させます。当て推量は auc 0.5 です。
- 1.000
- カバートラフィックを上乗せした場合の攻撃 auc。リレー間の帯域が x2.99 でも、すべてのフローが結び付けられます。
- 0.951
- クライアントだけで一定レート 70 ms にした場合の攻撃 auc。クライアントの位相はチェーンを通り抜けます。
- 0.562
- リレーが自分の時計で 66.5 ms ごとに送る場合の攻撃 auc(窓 10 ms)。これらの実行では、当て推量の水準にあることは示せません。代償は往復遅延の中央値 187 ms です。