v0.2.0:計測のやり直しと、コードがすることだけを書いた文書
2回目のリリースは、リレーの認証、リレー間の認証された回線、オニオン鍵の取り替え、無作為に選ぶチェーンをまとめたものです。数値はこのリリースのコードで計測し直し、文書の記述はすべてそのコードと突き合わせました。
訂正(2026-10-16):リリース v0.3.0 のリビジョン 2078098 での計測では、リレーが自分の時計で送ることで攻撃が当て推量の水準まで下がることは示されませんでした。auc の中央値は 0.44 から 0.67 に下がりますが、1点あたり5回の実行ではそれ以上は示せません。以下の当て推量についての主張は撤回します。現在の数値は研究のページにあります。
2回目のリリース v0.2.0 は、これまでの3回のお知らせで説明した内容をまとめたものです。リレーの 認証、リレー間の認証された回線、オニオン鍵の取り替え、無作為に選ぶチェーンです。さらにふたつの 変更が入りました。どちらも、事実より多くを語らないためのものです。
計測をやり直した
研究のページの数値は、最初のリリースより前に計測したものでした。その後、セルの 形式も、回線も、チェーンの選び方も変わりました。そこで、予備的な計測をリリースしたコードで やり直しました。10 フロー、構成ごとに 30 秒の実行を 5 回、シードは前回と同じです。
結論は変わりません。
- 本物のメッセージにカバートラフィックを上乗せしても、やはり効果がありません。帯域が3倍でも 攻撃の auc は 1.000 です。
- クライアントだけの一定レートでは、やはりフローは隠れません。周期 70 ms で auc 0.951 です。
- リレーが自分の時計で送ると、攻撃はほぼ当て推量まで下がります。周期 66.5 ms、窓 10 ms で auc 0.523、 往復遅延の中央値は 185 ms です。
表現を変えた箇所がひとつあります。以前のページは、リレーの時計で攻撃は当て推量まで下がると 書いていました。中央値は 0.46 から 0.64 の間にあり、1回の実行の 95% 区間は 40 件中 34 件で 0.5 を含みます。10 フローの実行 5 回では、わずかな漏れが残っているのか、まったく無いのかを 区別できません。そのため、いまは「ほぼ当て推量」と書いています。結論は、1点あたり 30 回の 本計測で出します。
文書はコードがすることだけを書く
readme と6つの文書のすべての記述を、英語版とロシア語版の両方でコードと突き合わせました。156 箇所を直しました。まだ無い 部分は「計画」と明記し、脅威モデルの対策の表には状態の列を加えました。
この確認のあとで、読者に知っておいてほしいことです。
- 受信側クライアントとエンドツーエンドの層は、まだありません。チェーンの最後のリレーが メッセージを読みます。
- メッセージはひとつのセルに収まる必要があります。3ホップで 444 バイトです。それより長い ものは拒否されます。
- 計測で使うのは、受動的な観測者による基本的な相関攻撃ひとつだけです。計測はひとつのプロセスの 中でループバック上で動き、ネットワーク遅延はありません。
- 実験計画のうち、計測済みなのはフローの結び付けとチェーンの選択です。メモリからの鍵の取り出し、 鍵が盗まれた場合の前方秘匿性、リレーが侵害されるシナリオ、タイミングの透かしは計画中です。
- スワップされないようにロックされているのは鍵のバッファだけです。暗号ライブラリがヒープに残す コピーはロックされていません。
すべて限界のページに載せました。
確認で見つかった欠陥
クライアントのコードを文書と並べて読むなかで、欠陥が見つかりました。一定レートのとき、 クライアントはひとつのセルより長いメッセージをエラーなしでキューに受け入れていました。 送信スケジュールはそのメッセージで失敗して止まり、カバーを含めてクライアントが送るセルが すべて止まりました。クライアントの回線を見ている観測者には、一定のストリームがその瞬間に 途切れたことが見えました。
いまクライアントは、そのようなメッセージをキューに入れる前にエラーで拒否します。この欠陥を 引き起こせたのはクライアントの利用者自身だけで、遠隔の相手にはできませんでした。 アドバイザリは GHSA-r8r8-v474-jxm9 です。
これで解決しないこと
- 1点あたり 5 回の実行は、差が有意だと主張するにはまだ少なすぎます。
- 攻撃は、基本的なもののままです。接続のタイミング、学習型の相関器、 能動的な攻撃者は計測していません。
- 確認で「計画」と明記したものは、明記しただけでは実現していません。
ロードマップの次の項目は、エンドツーエンドの層を持つ受信側クライアントと、 クライアント間の否認可能な認証です。
リリースは githubにあります。表の全体は readme(英語)に、限界は 適用範囲(英語)に、 各実験ブロックがいま何を計測しているかは 実験(英語)にあります。