关于linux/unix系统上敏感数据的创建和销毁

Sch*_*ves 6 linux tmpfs ramdisk data-destruction

在现代文件系统(和现代 SSD)中,无法保证如果您使用传统实用程序(例如 dd)覆盖文件,数据将就地覆盖并销毁日志备份。结果,数据有可能被恢复。因此,经过一些研究,我认为安装临时 ramfs(tmpfs 由于可能会交换而被排除在外)将是可行的方法:

# mkdir -p /mnt/tmp/ram
# mount -t ramfs -o size=[size, but ramfs grows as needed] ramfs /mnt/tmp/ram
# [create the sensitive data, secure it, copy out secured data]
# umount /mnt/tmp/ram
Run Code Online (Sandbox Code Playgroud)

Q1:卸载 ramfs 是否会破坏其中包含的数据?

Q2:如果不能保证数据被销毁,有没有什么可行的方法可以恢复这些数据(或者我只是偏执)?

Q3:如果数据是可恢复的,

# dd if=/dev/zero of=/mnt/tmp/ram/[filename]
Run Code Online (Sandbox Code Playgroud)

正确销毁数据还是不能保证 ramfs 就地覆盖文件?

约束:在这些操作之前/期间/之后不能强制系统重新启动

如果您好奇,在这种情况下,“敏感数据”是 pam 数据库的未加盐、未散列的用户名+密码。“安全数据”是加盐/散列的数据库,最终会出现在主驱动器上。我不希望敏感数据接触驱动器(因为我使用的是 ext3 - 据我所知,如果不擦除整个分区,则无法保证数据将无法恢复)。

如果你知道更好的方法来做这件事,请赐教,谢谢。

Bog*_*dan 5

问题 1:是的

Q2:无法恢复数据。不过,如果你想变得极端,你可以这样做:)

  1. 在 ram 中创建一些空间: mkdir ram mount -t ramfs -o size=1000M ramfs ram/
  2. 创建一些随机填充的文件,我们在该 RAM 空间中对其进行加密。充满随机数据将无法在随机数据和加密数据之间建立界限。 dd if=/dev/urandom of=ram/test bs=1M count=512
  3. 设置加密 cryptsetup -y luksFormat ram/test cryptsetup luksOpen ram/test encypted
  4. 格式化并挂载新的安全空间: mkfs.ext4 /dev/mapper/encypted mkdir securedir mount /dev/mapper/encypted securedir/
  5. Umont secureir/ 然后 ram/ 丢失数据直到时间结束。 umount securedir/ umount ram/