![在可移动存储上使用带 LUKS 的 Yubikey](https://linux22.com/image/895375/%E5%9C%A8%E5%8F%AF%E7%A7%BB%E5%8A%A8%E5%AD%98%E5%82%A8%E4%B8%8A%E4%BD%BF%E7%94%A8%E5%B8%A6%20LUKS%20%E7%9A%84%20Yubikey.png)
我正在尝试使用 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
即可使用。也许有更好的方法可以做到这一点,而不必使用解密和安装驱动器……不确定……无论如何,这是我的设置方法:sudo
sudo
添加%wheel ALL=(ALL) NOPASSWD: ALL
到/etc/sudoers
文件中。
将您的帐户添加到wheel
组,例如:
me=`whoami`; sudo usermod -a -G wheel "$me"
答案2
我建议你使用这个小而精的项目: yubikey 全盘加密在 GitHub 上,
它是一组脚本enroll
和open
一个加密设备。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 可以与加密循环设备配合使用,因此我认为它也应该可以与外部硬盘配合使用。
希望这可以帮助。