sedutil 挂起

Wil*_*mus 5 encryption suspend power-management

我在sedutilSamsung Evo 850 SSD 上使用LinuxPBA 进行全盘加密。

一切正常,除了在“启用”加密时我无法挂起,因为磁盘在挂起和锁定时失去电源。现在,我知道这是一个已知的错误,但我不能没有暂停。

于是我想到了两个解决办法:

  • 在挂起之前运行“禁用”命令,在恢复时运行“启用”。
  • 暂停到 S1

我尝试了第一个但失败了。现在被锁定并运行全新安装。事实证明,在 Ubuntu 中启用后者是相当回避的,如果可能的话,由于电池使用,我更喜欢第一个选项(我喜欢让我的笔记本电脑 24/7 全天候开机或暂停)。

目前我已禁用加密,但我真的很想再次启用它。对我来说,它比 LUKS 更好,因为它是基于硬件的,并且没有解锁就不能编辑任何分区。

小智 3

嗯,我面临着同样的问题。事实上,还没有,但我在不知道这个限制的情况下购买了 SED。

有一些支持 SED 的软件解决方案确实支持 S3 挂起,但它们是 a) 针对企业级别的基于订阅的解决方案,b) 相当昂贵。也许它们不适用于 Linux。

您已经确定了根本问题:在 S3 上,驱动器的电源被切断,从而有效地禁用了它。恢复时,驱动器被锁定,RAM 中的数据不知道什么,因此您的系统将崩溃。为了避免这种情况,需要有一种机制,以某种方式将解锁密码存储在 RAM 中,并且在恢复后首先运行,以确保驱动器可以再次访问。我知道这会带来严重的安全问题,因为密钥需要在所有/大部分时间都位于内存中,从而可能被恶意软件读取。但这不符合 OPAL 标准。也许这些商业程序使用 BIOS 实现的帮助(可能是 ATA 安全功能?)。然而,我确实认为,对于大多数用户来说,在内存中公开密钥是可以接受的风险,并且仍然可以防止随机遭遇的盗窃/间谍活动。值得注意的是,任何基于软件的 FDE 也必须始终将未加密的密钥存储在 RAM 中!

我真的希望 sedutil 的开发人员能够找到一种方法来实现类似的解决方案来启用 S3。这确实是我无法启用 SED 功能的原因。另一方面,由于 Windows 10 在我的(!)笔记本电脑上从 S3 恢复后,truecrypt 也会导致蓝屏。

  • 如果只是:( 我现在已经关闭了 SED 功能。我总是挂起我的计算机,所以这对我来说是一个破坏性的事情。 (2认同)

des*_*gua 0

将 Linux 设置为能够使用自加密驱动器从 S3 挂起状态唤醒

我们需要:

  1. 设置 Linux 内核以允许访问 sed 配置,
  2. 编译 sedutil 的修改版本,
  3. 创建一个 systemd 服务来将哈希密码存储在内核本身上,以便在唤醒时准备好解锁驱动器。

ps.:
I. 必须先使用 sedutil 设置驱动器。
二. 在 Debian 稳定版上测试。
三.开始之前,请备份所有数据。

配置 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

[服务]
Type=oneshot
ExecStart=-+/opt/sedutil-cli -n -x --prepareForS3Sleep 0 <哈希> <设备>
RemainAfterExit=true

[安装]
WantedBy=多用户.target

  • 启用并启动服务
    systemctl enable sedutil-sleep.service
    systemclt start sedutil-sleep.service

参考:

  1. sedutil 网站
  2. Arch Linux 文档
  3. 第90期