在现代文件系统(以及现代 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
Q1:卸载ramfs会破坏其中包含的数据吗?
Q2:如果数据不能保证被破坏,是否有任何可行的方法来恢复所述数据(或者我只是偏执)?
Q3:如果数据可以恢复,
# dd if=/dev/zero of=/mnt/tmp/ram/[filename]
正确销毁数据还是 ramfs 不能保证就地覆盖文件?
限制:系统无法强制重启在这些操作之前/期间/之后。
如果您好奇,本例中的“敏感数据”是 pam 数据库的未加盐、未散列的用户名+密码。 “安全数据”是加盐/散列数据库,最终将存储在主驱动器上。我不希望敏感数据接触驱动器(因为我使用的是 ext3 - 据我所知,它不能保证在不擦除整个分区的情况下数据将无法恢复)。
如果您知道更好的方法,请赐教,谢谢。
答案1
Q1:是的
Q2:数据无法恢复。不过,如果你想极端一点,你可以这样做:)
- 在内存中创建一些空间:
mkdir ram mount -t ramfs -o size=1000M ramfs ram/
- 创建一些随机填充的文件,我们在该 RAM 空间中对其进行加密。由于充满了随机数据,因此不可能在随机数据和加密数据之间建立界限。
dd if=/dev/urandom of=ram/test bs=1M count=512
- 设置加密
cryptsetup -y luksFormat ram/test cryptsetup luksOpen ram/test encypted
- 格式化并挂载新的安全空间:
mkfs.ext4 /dev/mapper/encypted mkdir securedir mount /dev/mapper/encypted securedir/
- Umont secureir/ 然后 ram/ 以释放数据,直到时间结束。
umount securedir/ umount ram/