ecryptfsを使用して暗号化されたデータファイルのタイムスタンプを隠す方法は?

ecryptfsを使用して暗号化されたデータファイルのタイムスタンプを隠す方法は?

私は〜だったマイコンピュータの単一ディレクトリを暗号化するためにecryptfsを使用して調査中しかし、私が気づいたことの1つは、以下のように、低レベルの暗号化データファイルから暗号化されていないファイルのタイムスタンプ操作がリークされることです。ホームフォルダを完全に非表示にします。 ecryptfsは正しい選択ですか?これは、攻撃者がファイルを識別するのに大きな助けになる可能性があります。

各データファイルに固定タイムスタンプを使用するなど、これらのタイムスタンプを隠す方法はありますか?ファイルサイズも攻撃者に役立つ可能性があることを知っていますが、それほど減らすことができます。 (まあ、それともできますか?攻撃者が暗号化されたファイルの暗号化されていないバージョンで暗号化されたファイルの正確なサイズを一意に決定できますか?別の質問があるようです)。

次のコマンドを使用してこれを再現できます。

export ECRYPTFS_DIR="$HOME/ecryptfs"
export ECRYPTFS_DATA_DIR="$HOME/.ecryptfs-data"

sudo mount -t ecryptfs \
      -o key=passphrase,ecryptfs_cipher=aes,ecryptfs_key_bytes=16,ecryptfs_passthrough=no,ecryptfs_enable_filename_crypto=yes \
      "$ECRYPTFS_DATA_DIR" \
      "$ECRYPTFS_DIR"
echo AAAA > ~/ecryptfs/aaaa
echo BBBB > ~/ecryptfs/bbbb
dd if=/dev/zero bs=1k count=1k > ~/ecryptfs/zzzz
sudo umount "$ECRYPTFS_DIR"
ls -l "$ECRYPTFS_DATA_DIR"

これにより、そのファイルの正しいタイムスタンプが表示されます。

Ubuntu 20.04、Linuxカーネル5.4でテストされました。

答え1

いいえ、タイムスタンプを隠すことはできません。タイムスタンプやファイルサイズなどのメタデータ(タイムスタンプよりプライバシーを侵害する可能性が高い)を隠すには、ディスク全体(またはパーティション全体)暗号化が必要です。

touchmtime(コンテンツ修正時間)を強制的に異なる方法があるかもしれません(実際には、次のように手動で実行できます)。ctime(インデックスノード変更時間)。 ctimeは、ファイルが何らかの方法で最後に変更された時間です。

関連情報