我正在使用sedutil
LinuxPBA 对我的 Samsung Evo 850 SSD 进行全盘加密。
一切正常,只是我无法在加密“启用”时暂停,因为磁盘在暂停时会断电并锁定。现在,我知道这是一个已知的错误,但我不能没有暂停。
因此我想到了两个解决方案:
- 暂停前运行“disable”命令,恢复时运行“enable”命令。
- 暂停至 S1
我尝试了第一种方法,但失败了。现在被锁定了,正在运行全新安装。事实证明,在 Ubuntu 中启用后者相当困难,如果可能的话,我更喜欢第一种方法,因为电池使用量大(我喜欢让笔记本电脑全天候开机或挂起)。
目前我已经禁用了加密,但我真的很想再次启用它。对我来说,它比 LUKS 更好,因为它是基于硬件的,并且没有解锁就无法编辑任何分区。
答案1
嗯,我也遇到了同样的问题。实际上还没有,但我买了 SED 时并不知道这个限制。
有一些支持 SED 的软件解决方案确实支持 S3 暂停,但它们是 a) 针对企业级别的订阅式解决方案,并且 b) 相当昂贵。而且它们可能不适用于 Linux。
您已经确定了根本问题:在 S3 上,驱动器的电源被切断,从而有效地禁用了它。在恢复时,驱动器被锁定,RAM 中的数据不知道,因此您的系统将崩溃。为了规避这种情况,需要有一种机制,以某种方式将解锁密码存储在 RAM 中,并在恢复后首先运行以确保驱动器再次可访问。我知道这会带来严重的安全问题,因为密钥需要一直/大部分时间都在 RAM 中,这使得恶意软件可以读取它。但这不符合 OPAL 标准。也许那些商业程序使用了 BIOS 实现的帮助(可能是 ATA 安全功能?)。但我确实认为,对于大多数用户来说,将密钥披露在内存中是可以接受的风险,并且仍然可以防止随机遭遇盗窃/监视。值得注意的是,任何基于软件的 FDE 也必须始终将未加密的密钥存储在 RAM 中!
我真的希望 sedutil 的开发人员能够找到一种方法来实现类似的解决方案来启用 S3。这确实是阻止我启用 SED 功能的原因。另一方面,由于 Windows 10 也在我的笔记本电脑上从 S3 恢复后 truecrypt 会导致蓝屏。
答案2
设置 Linux 以便能够使用自加密驱动器从 S3 挂起模式唤醒
我们需要:
- 设置 Linux 内核以允许访问 sed 配置,
- 编译修改版的 sedutil,
- 制作一个 systemd 服务将哈希密码存储在内核本身上,以便在唤醒时可以解锁驱动器。
附言:
I. 必须先使用 sedutil 设置驱动器。II
. 在 Debian Stable 上测试。III
. 开始之前,请备份所有数据。
配置Linux内核以允许访问SED:
编辑 /etc/default/grub 并添加“libata.allow_tpm=1”作为启动参数。例如:
sudo vi /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="libata.allow_tpm=1"
sudo update-grub
编译修改版的 sedutil
- 安装依赖项
sudo apt install build-essential autoconf pkg-config libc6-dev make g++-multilib m4 libtool ncurses-dev unzip zip git python zlib1g-dev wget bsdmainutils automake curl bc rsync cpio git nasm
- 打开终端并运行:
git clone --branch s3-sleep-support https://github.com/badicsalex/sedutil.git
cd sedutil
autoreconf --install
make all
sudo mv sedutil-cli /opt/sedutil-cli
创建 Systemd 服务
查找散列加密密钥:
sedutil-cli --printPasswordHash <password> <device, for example:/dev/sda>
制作文件 /etc/systemd/system/sedutil-sleep.service,内容如下:
[单元]
描述=sedutil-sleep[服务]
类型=oneshot
ExecStart=-+/opt/sedutil-cli -n -x --prepareForS3Sleep 0 <hash> <设备>
RemainAfterExit=true[安装]
WantedBy=multi-user.target
- 启用并启动服务
systemctl enable sedutil-sleep.service
systemclt start sedutil-sleep.service
参考: