非系统分区
对于分区其他比系统分区,你可以使用下面的systemd单元:
[Unit]
Description=Wipe Keys before <target>
After=<target>
[Service]
Type=oneshot
ExecStart=/path/to/wipe
[Install]
WantedBy=<target>
<target>是您所需模式的对应目标。从systemd-suspend.service联机帮助:
suspend.target,hibernate.target或hybrid-sleep.target
和wipe脚本:
dmsetup suspend "$name"
dmsetup message "$name" 0 key wipe
或者如果你使用 LUKS
cryptsetup luksSuspend <name>
恢复系统后,您需要发出:
dmsetup message "$name" 0 key set "$key"
dmsetup resume "$name"
或者
cryptsetup luksResume <name>
虚拟机
如果将整个虚拟机放在主机的加密磁盘上,可以使用相同的方法,但需要通过“保存系统状态”停止来宾,并确保此状态也保存在加密磁盘上. Wou 会在您的wipe脚本中添加类似以下命令的内容:
VBoxManage controlvm "$vboxname" savestate
并恢复
VBoxManage controlvm "$vboxname" resume
请记住,未能真正阻止来宾不会暴露您的加密密钥。它只会让来宾的 RAM 在您的 RAM 或交换中未加密。
全系统加密
有一个休眠解决方案(将 RAM 保存到驱动器),具有整个系统加密。基本上你还必须加密你的交换。请参见此处和此处挂起到 RAM 时这对您没有帮助。