在可移动存储上使用带 LUKS 的 Yubikey

在可移动存储上使用带 LUKS 的 Yubikey

我正在尝试使用 Yubikey 4 作为第二个因素来访问 LUKS 加密的 USB HDD。以下是我取得的进展:

我在用着yubikey-luks将我的 HMAC-SHA1 散列密码添加到设备的插槽 7。

  • 问题:cryptsetup 仅在启动时对 yubikey 进行质询,并且我在登录后打开设备。

但是,我可以用来ykchalresp手动挑战我的 Yubikey。

  • 问题
  • 这涉及将我的密码以纯文本形式输入到终端中。
  • 即使我解决了这个问题,我也不知道如何方便地将其通过管道传输/输入到 cryptsetup。

我曾考虑将散列密码写入文件并将其用作--key-file,但这听起来不是一个好主意,因为我会把设备的密钥放在身边。

如果我的命令格式错误,或者您有办法解决我的任何问题,请告诉我!

答案1

我做的正是你想要做的。我做的方式概述如下。这是正确的方法吗?嗯……这有待商榷,但对我来说是有效的。希望这对你有帮助。另外,我不是用 Ubuntu 的,但在 Ubuntu 上应该也能正常工作

首先,我通过编辑设置 Yubikey 配置,/etc/ykfde.conf 将其设置YKFDE_CHALLENGE为一个长随机字符串,例如 40 个字符左右。它是什么并不重要,只要确保它是随机的即可。这样我就可以解密我的驱动器,而无需它要求我输入密码。此外,将其设置为YKFDE_CHALLENGE_SLOT您想要使用的 Yubikey 上的任何插槽。(确保您已在该插槽上为 HMAC-SHA1 质询响应设置了 Yubikey)

接下来,我使用以下命令设置要加密的驱动器:(
假设您已经使用 fdisk 或类似的实用程序对驱动器进行了分区)

# This will ask you for a password. Set a password so that you
# can decrypt the drive without your Yubikey
sudo cryptsetup luksFormat /dev/sda1

# Next, enroll the Yubikey so that it can decrypt it as well
# When required, touch your Yubikey so it can get a challenge-response
# It'll ask for an existing password, just enter the one you set in the last command
sudo ykfde-enroll -d /dev/sda1 -s 1

# Next decrypt the drive and add a file system
# Enter the password you set in the first command
sudo cryptsetup open /dev/sda1 drive
sudo mkfs.ext4 /dev/mapper/drive

完成所有设置后,我mountDrive.sh在主目录中创建了一个名为的文件,如下所示:

. /etc/ykfde.conf
ykchalresp -2 "$YKFDE_CHALLENGE" | sudo cryptsetup open /dev/sda1 drive
sudo mount /dev/mapper/drive /run/mount/

现在,我只需运行sh mountDrive.sh
我的 Yubikey 闪存,点击它,然后我的驱动器就会安装在/run/mount

显然,你需要切换/dev/sda1到你的驱动器设备,并切换/run/mount到你想要安装驱动器的地方

此外,该ykchalresp -2命令还告诉它使用 Yubikey 上的插槽 2。将其更改为您在文件中配置的任何/etc/ykfde.conf插槽

还有一件事是我设置成无需输入密码/etc/sudoers即可使用。也许有更好的方法可以做到这一点,而不必使用解密和安装驱动器……不确定……无论如何,这是我的设置方法:sudosudo

添加%wheel ALL=(ALL) NOPASSWD: ALL/etc/sudoers文件中。
将您的帐户添加到wheel组,例如:

me=`whoami`; sudo usermod -a -G wheel "$me"

答案2

我建议你使用这个小而精的项目: yubikey 全盘加密在 GitHub 上,

它是一组脚本enrollopen一个加密设备。README.md文档很好地说明了您需要做什么。它还提供了在启动时使用 Yubikey 设置自动解密的说明。

基本上,您需要执行以下操作:

  • git clone/download项目及其cd文件夹
  • sudo make install安装项目
  • 你应该修改配置文件/etc/ykdfe.con,特别是我修改了以下选项
    • YKFDE_DISK_UUID(必填,您可以使用命令获取blkid /dev/sdX,其中/dev/sdX是您的外部设备的名称)
    • YKFDE_LUKS_NAME(必填,好名字是luks-<uuid-of-the encrypted-volume>
    • YKFDE_CHALLENGE(可选,但您需要它来启用 2FA)
    • YKFDE_CHALLENGE_SLOT(可选,默认设置为 1,但请记住插槽 1 包含 Yubikey OTP 的配置
    • YKFDE_CHALLENGE_PASSWORD_NEEDED,如果您还想输入密码(这样 Yubikey 就可以充当第二因素身份验证,而不仅仅足以单独解锁卷)

然后你可以按照README.md设置 Yubikey 质询响应并将其作为附加密码添加到加密卷中。

最后,我建议您做一个make test测试配置。

我的 Yubikey 可以与加密循环设备配合使用,因此我认为它也应该可以与外部硬盘配合使用。

希望这可以帮助。

相关内容