jimichi が守れないもの

メタデータの一部を隠す道具は、実力以上に信頼されがちです。ここにその限界を、はっきり書いておきます。

グローバルな観測者
すべての回線を同時に見る攻撃者は、モデルの対象外です。
侵害された端末
スマートフォンやパソコンが乗っ取られていれば、jimichi は役に立ちません。端末へのサイドチャネル攻撃も対象外です。
リレーのホストの root
ロックされたメモリはスワップを防ぎますが、特権を持つ読み取りは防げません。リレーを動かすマシンの root に対して、プロセス単位の対策は効きません。
接続のタイミング
各チェーンはリレー間で自分の tcp 接続を開閉します。その瞬間はチェーン全体で一致し、グローバルな観測者から見えます。この研究の攻撃はそれを計測していません。
強要
否認可能なコンテナが与えるのは言い訳であって、パスワードを明かすよう強要されることへの免疫ではありません。

結果が当てはまらなくなるところ。

計測環境

  • リレーは1台のマシン上のコンテナです。ネットワーク遅延と運営者の分離はモデル化したもので、再現したものではありません。
  • 相関攻撃は、真のフローのラベルがわかっている条件で動かしています。実際のネットワークに当てはめるには注意が必要です。
  • データセットは合成です。カバートラフィックは生成したもので、実際のユーザーから取得したものではありません。
  • 遅延の計測には1ミリ秒より細かい時計が必要なため、windows のホストではなく linux で実行します。

暗号とメモリ

  • gost の実装は認証を受けた暗号モジュールではありません。アルゴリズムは同じで、規格のテストベクトルで確認していますが、保護クラスは主張しません。
  • ライブラリは go のヒープに鍵のコピーを持ち、aead の作業鍵はチェーンが続く間そこに残ります。secmem が守るのは自分のバッファだけです。
  • チェーンの層には、隣のリレーに対する前方秘匿性がありません。リレーの鍵は再起動まで生き続けます。一時的な回線鍵がなければ、回線の記録だけでは読めません。
  • セルの形式は一定サイズと再送防止を備えますが、完全な sphinx ではありません。チェーン内のリレーの位置を隠す仕組みは他にありません。

タイミング

  • 自分の時計での送信には、リレーの周期がクライアントより数パーセント短い必要があります。計測環境では 5% です。周期が等しいと、取りこぼした送信を取り戻せません。
  • 回線が守られるのは、その回線で送るリレーが対策を有効にしている場合だけです。クライアントはそれを確認できません。
  • チェーン確立のセルはリレーの時計を待たずにすぐ送られ、すべての回線でチェーンの始まりを示します。
  • 自分の時計での送信がないと、出口の応答は配達のあとに送られるため、実際の受信者の配達時間が表に出ます。

否認可能性

  • 否認可能性は暗号ではなく環境から崩れます。ファイルシステムのジャーナル、シャドウコピー、タイムスタンプ、ssd のウェアレベリングと trim が書き込みの痕跡を残します。
  • コンテナのスナップショットを時間をおいて複数持つ攻撃者には、偽装上は何も起きていない領域の変化が見えます。その攻撃者に対しては、この性質を主張しません。