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

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

在现代文件系统(以及现代 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:数据无法恢复。不过,如果你想极端一点,你可以这样做:)

  1. 在内存中创建一些空间: 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/

相关内容