予備的な計測

研究

内容を守るのは簡単なほうです。この研究が計測するのは、タイミングと通信量しか見えない観測者がなお何を知りうるか、そしてそれを奪うのに何がかかるかです。

フロー
10
リレー
3
暗号スイート
c25519
構成ごとの実行
5 x 30 s
統計量
中央値

表とグラフは、リビジョン 2078098 で計測した受動的な攻撃の結果のままです。3つのセットのうち、保護なしとカバーの上乗せの行は main、クライアントの一定レートの行は rates、リレーが自分の時計で送る行は paced のセットのものです。各クライアントはランダムな位相で送信を始めます。セット間の整合性を確かめるため、paced のセットはクライアントだけの実行を繰り返しています。窓 10 ms でのその中央値(70 ms で auc 0.922、35 ms で 0.946)は、rates のセットの実行ごとのばらつき(0.890 から 0.965、0.907 から 0.984)の範囲に収まっています。リレーとクライアントはひとつのプロセスの中でループバック上で動くため、ネットワーク遅延はありません。最後のリレーはすべてのメッセージを送り返します。メールボックスを通した2つのクライアントの会話は、これらの数値に含まれません。1点あたり5回の実行なので、差が有意だとは主張しません。1点あたり30回の本計測はこれからです。

観測者に見えるのは、フレームが通過する瞬間だけ。

観測者は入口の回線とリレー間の最後の回線を監視し、フローごとに時間窓内のフレーム数を数え、すべての入口フローとすべての出口フローを相関させます。窓の幅は観測者が選べるので、10 ms と 100 ms の両方で採点します。当て推量は auc 0.5、top-1 は 10% です。

リレー間の帯域と往復遅延に対する攻撃 auc。カバートラフィックの上乗せ、クライアントの一定レート、リレーの自分の時計による送信を比較
保護リレー間の帯域往復遅延の中央値auc、10 msauc、100 mstop-1、10 ms
なしx1.000.146 ms1.0001.000100%
カバーを上乗せ、+2xx2.990.131 ms1.0001.000100%
クライアントの一定レート、70 msx2.8548 ms0.9510.95170%
クライアントの一定レート、35 msx5.6920 ms0.9620.93770%
リレーが自分の時計で送信、66.5 msx3.00187 ms0.5620.4635%
リレーが自分の時計で送信、33.25 msx6.0088 ms0.5540.48715%
両方、クライアント 70 ms、リレー 66.5 msx3.00230 ms0.4620.4423%
両方、クライアント 35 ms、リレー 33.25 msx5.99108 ms0.6730.47220%

計測からわかること。

カバーの上乗せは効かない。

本物のメッセージにカバートラフィックを上乗せしても、まったく効果がありません。帯域を3倍にしても、すべてのフローが結び付けられます。

クライアントの一定レートでは、フローは隠れない。

各クライアントは自分の位相で送信し、その位相はすぐに転送するリレーのチェーンを通り抜けます。10 ms の窓なら、どの周期でも攻撃はフローを結び付けます。auc の中央値は 0.93 から 0.99 の間です。100 ms の窓で auc が 0.50 から 0.55 まで下がるのは、周期が窓を割り切る 25、50、100 ms の場合だけで、ほかの周期では 0.77 から 0.95 にとどまります。周期が窓を割り切るときはほぼすべてのスコアが同点になり、保護については何も語りません。

リレーが自分の時計で送ると、この攻撃は弱まる。

この攻撃が数えるのはセルだけです。チェーンの接続が開閉する瞬間はチェーン全体で一致しますが、まだ攻撃に含めていません。auc の中央値は 0.44 から 0.67 の間にあり、ほかの行では 0.94 から 1.00 です。ただし、これらの実行では当て推量の水準にあることは示せません。8つの中央値のうち4つは 0.45 から 0.55 の外にあります。そう主張するには、量と許容幅を計測の前に決めたうえで、その帯の内側に収まる同等性の区間が必要ですが、5回の実行ではその区間は得られません。1回の実行の 95% 区間は 40 件中 33 件で 0.5 を含みます。残りの7件のうち、3件は上に、4件は下にあります。10 フローの実行 5 回では、わずかな漏れが残っているのか、まったく無いのかを区別できません。それを決めるのは本計測です。代償は、リレーが送るすべての回線での一定のストリームと、往復にリレー周期の約 2.7 から 2.8 倍の遅延が加わることです。66.5 ms で 187 ms、33.25 ms で 88 ms。両方を使う行ではリレーの周期がクライアントより 5% 短く、取りこぼした送信を取り戻せます。リレーの時計だけの行も同じリレー周期を使い、クライアントはすぐに送ります。

入口リレーはモデル化していない。

観測者は2つの回線を監視し、クライアントのセルを直接見る入口リレーはモデル化していません。クライアントの一定レートが、送信の瞬間を入口リレーから隠すかどうかは計測していません。

10 ms と 100 ms の窓における、クライアントのセル周期に対する攻撃 auc

計測したもの、計画中のもの。

鍵素材
計測済み:書き出した go の Object ペイロード内で、選んだクライアントのセル鍵ごとに正確に連続する32バイトの出現数を数えます。active/closed-now/closed-1s の順に、c25519 none は3/3/3、all は2/2/2、gost none は3/3/3、all は1/0/0でした。各条件の全プロセスで、すべての鍵がこの件数でした。各条件30個の新しいプロセスを予定して評価し、全360観測を評価、除外はありません。リビジョン eddddb2、最適化した go 1.27.3、linux/amd64。c25519 all は close 後も観測され、gost のゼロは消去を証明しません。外部からの取得、ディスク/スワップ/履歴、他の秘密値は未計測で v0.4.0 より後です。
前方秘匿性
単体テストで、リレーがオニオン鍵を解放すると、その鍵に向けて作られたチェーン確立のセルが開かなくなることを確認しています。隣のリレーが記録したセルを、リレーのメモリから取り出した鍵で記録の古さごとに開く実験は未計測で、v0.4.0 より先に延期しています。協調的なクライアントの実験は、記録された通信を復号しません。
メタデータ
トラフィック相関攻撃が、セルのタイミングと数だけで、入口の回線のフローとリレー間の最後の回線のフローを結び付けます。カバーのレート、クライアントの一定レート、リレーの自分の時計による送信に対する auc、top-1 の正解率、fpr 0.01 での tpr を報告します。リレーでの遅延の水準、メッセージのサイズのクラス、2つの入口とメールボックスからなる会話のトポロジーは計画中です。
タイミングの透かし
過去の c25519 系列 f0f1885、最適化した go 1.27.3 で、40反復ブロック、960実行が完了しました。正しい指定と元のチェーンの応答性を満たしたのは、リレーの周期送信なしでは各クライアントモード40/40、調べた各正の周期では0/40でした。25、47.5、50、52.5 ms では能動/sham の各条件で応答性40/40。75 ms では160実行すべてで6本とも切断し、可用性の損失です。能動での誤指定7件と sham の指定7件を残し、即時送信かつ周期送信なしの sham は4/40でした。分母は各モード、周期、介入に属します。受動的な攻撃の表は別のリビジョンです。
部分的な侵害
無作為に選んだチェーンが不正なリレーに当たる頻度は、クライアント自身の選択で計算し標本を取っています。リレーの経路の知識はプロトコルから導き、実リレーのテストで信頼の境界を確認します。残るリレー観測の全計測は v0.4.0 に必須ですが、設計中で未実装です。
コスト
チェーンを通る往復遅延、カバーとパディングによる帯域の倍率、そして鍵合意、署名、セルの暗号化のベンチマークによる gost と x25519 の比較。リレーのスループット、クライアントあたりの実効レート、メモリロックのコストは計画中です。

計測は kind クラスタを止め、ホストでビルドをしない状態で行い、相関のレポートの各行に、計測環境が動く仮想マシンの中の負荷、シード、コードのリビジョンを記録しています。シードが決めるのはクライアントのスケジュールで、実行そのものではありません。paced のセットを同じシードとイメージで2回実行すると、リレーの時計を使う行の中央値のひとつが約 0.15 動きました。保護なし、またはカバーだけのときの往復遅延は1ミリ秒未満で、セットの間で約 0.01 ms 異なるため、最後の桁には意味がありません。

手法と攻撃者モデル(英語)