jimichi が守れないもの
メタデータの一部を隠す道具は、実力以上に信頼されがちです。ここにその限界を、はっきり書いておきます。
- グローバルな観測者
- すべての回線を同時に見る攻撃者は、モデルの対象外です。
- 侵害された端末
- スマートフォンやパソコンが乗っ取られていれば、jimichi は役に立ちません。端末へのサイドチャネル攻撃も対象外です。
- リレーのホストの root
- ロックされたメモリはスワップを防ぎますが、特権を持つ読み取りは防げません。リレーを動かすマシンの root に対して、プロセス単位の対策は効きません。
- 接続のタイミング
- 各チェーンはリレー間で自分の tcp 接続を開閉します。その瞬間はチェーン全体で一致し、グローバルな観測者から見えます。この研究の攻撃はそれを計測していません。
- 強要
- 否認可能なコンテナが与えるのは言い訳であって、パスワードを明かすよう強要されることへの免疫ではありません。
結果が当てはまらなくなるところ。
計測環境
- リレーは1台のマシン上のコンテナです。ネットワーク遅延と運営者の分離はモデル化したもので、再現したものではありません。
- 相関攻撃は、真のフローのラベルがわかっている条件で動かしています。実際のネットワークに当てはめるには注意が必要です。
- データセットは合成です。カバートラフィックは生成したもので、実際のユーザーから取得したものではありません。
- 遅延の計測には1ミリ秒より細かい時計が必要なため、windows のホストではなく linux で実行します。
暗号とメモリ
- gost の実装は認証を受けた暗号モジュールではありません。アルゴリズムは同じで、規格のテストベクトルで確認していますが、保護クラスは主張しません。
- ライブラリは go のヒープに鍵のコピーを持ち、aead の作業鍵はチェーンが続く間そこに残ります。secmem が守るのは自分のバッファだけです。
- チェーンの層には、隣のリレーに対する前方秘匿性がありません。リレーの鍵は再起動まで生き続けます。一時的な回線鍵がなければ、回線の記録だけでは読めません。
- セルの形式は一定サイズと再送防止を備えますが、完全な sphinx ではありません。チェーン内のリレーの位置を隠す仕組みは他にありません。
タイミング
- 自分の時計での送信には、リレーの周期がクライアントより数パーセント短い必要があります。計測環境では 5% です。周期が等しいと、取りこぼした送信を取り戻せません。
- 回線が守られるのは、その回線で送るリレーが対策を有効にしている場合だけです。クライアントはそれを確認できません。
- チェーン確立のセルはリレーの時計を待たずにすぐ送られ、すべての回線でチェーンの始まりを示します。
- 自分の時計での送信がないと、出口の応答は配達のあとに送られるため、実際の受信者の配達時間が表に出ます。
否認可能性
- 否認可能性は暗号ではなく環境から崩れます。ファイルシステムのジャーナル、シャドウコピー、タイムスタンプ、ssd のウェアレベリングと trim が書き込みの痕跡を残します。
- コンテナのスナップショットを時間をおいて複数持つ攻撃者には、偽装上は何も起きていない領域の変化が見えます。その攻撃者に対しては、この性質を主張しません。