我正在测试Yubico YubiKey 5 NFC。我使用KeePassXC来保存合理的信息。KeePassXC接受YubiKeys,但只有一个。是否可以在一个.kdbx文件中添加多个?
在两个独立的YubiKeys中拥有两个不同的种子是不可能的。您需要将相同的种子添加到另一个YubiKey中以保留其副本。文档说明:
如果我的YubiKey坏了会发生什么?我可以创建备份密钥吗?
您应该始终复制存储在YubiKey上的HMAC机密,并将其保存在安全的位置。这可以是一份模拟纸质副本,但由于YubiKey个性化工具允许您将自定义密钥编程到密钥中,您也可以使用相同的密钥编程第二个密钥
我可以在KeePassXC数据库中注册多个YubiKey吗?
您只能使用一个密钥来加密数据库。所以你可以使用多个YubiKey,但它们都必须用相同的秘密进行编程(见上面的问题(。
在两个YubiKeys的插槽2中设置相同id的解释如下。您必须将&粘贴相同的种子。
建议在YubiKeys&定期保存数据库以生成新的质询/响应对。远非完美,但比一个密码要好。以下方法(HMAC-SHA1的挑战响应(适用于带有KeePassXC v2.6.2和2x YubiKey 5 NFC的Ubuntu固件v.4.3:
- 安装ykman(Yubiky经理的一部分(
$ sudo apt-get install yubikey-manager
- 检查钥匙#1和钥匙#2中的插槽#2是否为空。您将覆盖两个键上的插槽#2
$ ykman otp info
Slot 1: programmed
Slot 2: empty
- 生成一个base32编码的秘密种子(例如:"SECRETSEED"(,该种子将被编程到两个密钥中。RFC2104建议您的种子与底层哈希函数一样长(SHA1为20字节(
$ base32
SECRETSEED<Enter>
CTRL+D
BASE32SECRETSEED
$
请注意,上述方法将CR添加到种子中。将SECRETSEED存储在安全的地方(最好不是数字(,以防您丢失两个密钥
- 对产生的";BASE32SECRETSEED";到键#1和键#2
$ ykman otp chalresp -t 2
Enter a secret key: BASE32SECRETSEED
Program a challenge-response credential in slot 2? [y/N]: y
- 使用两个键验证相同的挑战是否给您相同的响应
$ ykman otp calculate 2
Enter a challenge (hex): deadbeef
Touch your YubiKey...
aabbccdd11223344556677889900aabbccdd1122
- 将您的一个密钥添加到KeePassXC数据库
数据库>数据库安全>添加额外保护>添加YubiKey挑战响应
- 现在两个键都可以解锁/保存数据库
参考:
- https://developers.yubico.com/Developer_Program/Guides/Touch_triggered_OTP.html
- https://github.com/Yubico/python-yubico/blob/master/examples/rolling_challenge_response
- https://wiki.archlinux.org/title/YubiKey
- https://www.rfc-editor.org/rfc/rfc2104