在 Fedora Linux 上使用 FIDO U2F 安全密钥
FIDO U2F 安全密钥是一种小型的基于 USB/NFC 的设备。它是一种硬件安全令牌,具有多个安全相关的用途模块。FIDO U2F 标准兼容的密钥品牌有多种,包括 NitroKey、SoloKey v2 和 YubiKey。与类似 Yubico OTP 的专有协议相比,FIDO 协议是不依赖特定硬件令牌的,并且使用的工具也不依赖特定制造商。
【资料图】
本文介绍了 FIDO 协议,并展示了如何安装和启用 FIDO U2F 安全密钥作为替代身份验证因素,以用于登录终端、GDM 或进行 sudo 认证。
对于 YubiKey,特别是其不支持 FIDO2/U2F 的旧版设备,请参阅之前的文章:
如何在 Fedora Linux 上使用 YubiKey
本文不涵盖存储 OpenPGP 密钥或 X.509 证书的操作,因为这些功能与硬件相关,不属于 FIDO U2F 标准的一部分。
保留备用安全密钥一旦你开始使用安全令牌,就必须考虑到自己可能会被锁定在与这些令牌相关联的账户之外的情况。由于硬件安全令牌是独特的,并且被设计为非常难以复制,你不能像在使用 KeePass 或 AndOTP 等软件保险库时那样制作备份。因此,你使用主要密钥进行的所有注册都应立即使用第二个备份密钥重复进行,并将其存储在安全的位置,甚至可能是保险箱中。
在实践中,这意味着你需要将两个硬件令牌注册到你的 Linux 和 Web 账户中,并生成两份 OpenSSH 私钥,并将这两份 OpenSSH 公钥上传到你使用的服务器和服务(例如 GitHub)中。
如果你丢失了一个密钥,你将需要使用第二个密钥登录与密钥注册的每个服务,删除丢失的密钥,并注册一个新密钥。对于使用 FIDO2 协议的无密码登录尤其如此。
FIDO2、U2F 和 FIDO 联盟FIDO2 是由FIDO 联盟维护的一系列标准。FIDO 联盟希望最终完全摒弃密码,并提供通过多个因素安全验证用户身份的过程,而无需使用密码。
该标准包括万维网联盟(W3C)的网页认证Web Authentication(WebAuthn)和 FIDO 联盟的客户端到认证器协议Client-to-Authenticator Protocol(CTAP)。WebAuthn 是一种用于请求和处理公钥挑战进行认证的标准 API。通过这个标准,浏览器会向客户端发送一个挑战challenge,然后客户端使用私钥生成一个响应response,挑战者再使用之前交换的公钥进行验证。如何生成挑战答案对于服务来说是不可知的,而是由 CTAP 控制。用户可能会被要求使用多种验证方法,如生物识别、PIN 或存在性检查(或这些方法的组合)。这些验证方式在认证时与注册密钥时的方式相同。
为了保护与硬件令牌的任何交互,可以选择设置一个访问 PIN,并且默认情况下未设置。大多数密钥在连续八次输入访问 PIN 失败后将自动失效。恢复失效的密钥并设置新 PIN 的唯一方法是重置密钥。然而,当密钥重置时,所有其服务注册将丢失!
FIDO2 密钥还支持 FIDO U2F 协议(现已更名为 CTAP1)。该协议旨在提供第二或多因素(但非无密码)认证。Linux 的 PAM 认证系统也可以配置为使用 U2F 协议。虽然 FIDO U2F 不是为无密码认证设计的,但 U2F PAM 模块允许无密码认证。
安全影响FIDO2 / U2F 通过将安全密钥与用户账户绑定来工作。大多数密钥默认启用/使用基本的存在性检查。它们通常通过点亮并提示你触摸密钥来进行存在性检查。FIDO2 PIN 是可选的,默认情况下未设置。当密钥用于登录 Linux 帐户或用于使用 sudo 时,只需确保设备和密钥物理上存在即可。FIDO2 PIN 是一个重要的附加验证步骤,用于确保只有你才能使用密钥进行身份验证。
等一下!现在我还要记住额外的 PIN 吗?这不就是一个更短的密码吗?
—— 担心的读者
FIDO2 PIN 不是密码,它是一个简短、容易记住的短语。这并不是一个问题,因为:
你需要物理访问密钥且输入 PIN 错误达到八次会使密钥失效,这使得暴力破解变得困难。相反地,现在你可以使用存储在密码管理器中的安全密码,而无需记住它。
谷歌在 2016 年进行的一项案例研究,题为 《安全密钥:现代网络的实用密码学第二因素》,显示了安全密钥有效地保护用户免受密码重用、钓鱼和中间人攻击的影响。
使用 PAM 进行用户认证本地系统认证使用可插拔认证模块(PAM)。U2F 设备的 PAM 模块(因此进行认证)是pam_u2f
。你的密钥是否支持 FIDO2 或 FIDO U2F 取决于其固件版本和硬件型号。
设置如下:
安装 PAM 模块。将密钥注册到你的用户账户上。使用authselect
在 PAM 中激活智能卡支持。authselect是一个用于配置带有可重现配置文件的 PAM 的工具。使用authselect
的配置文件可以避免手动修改/etc/pam.d
目录下的配置文件。
所需的软件包可在官方仓库中获取。
[…]$ sudo dnf install pam-u2f pamu2fcfg fido2-tools
在密钥上设置 FIDO2 PINFIDO2 标准定义了一种用于访问保护的可选 PIN。如果 PIN 丢失或失效,没有 PUK 或其他恢复方式,请确保你有一种备用的身份验证方法。如果通过连续输入无效的 PIN 使 PIN 失效,恢复的唯一方法是重置密钥。然而,重置密钥会删除其所有凭据,并将其与以前注册的所有服务断开连接。
fido2-tools
包含一个用于设置密钥的 FIDO2 PIN 的工具:fido2-token
。使用fido2-token -L
获取当前连接的 FIDO2 设备列表,并使用fido2-token -C
设置一个新的 PIN:
[…]$ fido2-token -L/dev/hidraw1: vendor=0x1050, product=0x0407 (Yubico YubiKey OTP+FIDO+CCID)[…]$ fido2-token -C /dev/hidraw1Enter current PIN for /dev/hidraw1:Enter new PIN for /dev/hidraw1:
将安全密钥注册到本地账户使用工具pamu2fcfg
检索一个配置行,该行将放入~/.config/Yubico/u2f_keys
中。pam_u2f
是由 Yubico 提供的通用 U2F 密钥模块,因此使用 Yubico 特定的默认配置路径。该文件中的每个配置行由用户名和密钥特定的凭据/配置部分以冒号分隔。确保每个用户仅使用一行。
fedora-user:owBYtPIH2yzjlSQaRrVcxB...Pg==,es256,+presence+pin[:该用户另外的密钥]
如果密钥受 PIN 保护,你将被要求输入 PIN 来进行此操作。对于第一个密钥的初始注册,请使用以下命令:
[…]$ mkdir -p ~/.config/Yubico[…]$ pamu2fcfg --pin-verification > ~/.config/Yubico/u2f_keys
要将另一个密钥(例如备份密钥)添加到此单用户配置中,请使用以下命令:
[…]$ pamu2fcfg --nouser --pin-verification >> ~/.config/Yubico/u2f_keys
pam_u2f
还支持使用一个中心身份验证文件。在这种情况下,请确保每个用户使用一行,并将给定用户的所有密钥保持在同一行上。如果两行引用相同的用户名,那么只有最后一行将被使用!请参阅pam_u2f 手册页获取所有可用选项的详细信息。
authselect是一个用于控制系统 PAM 配置的工具。它引入了配置文件作为额外的抽象层。一个authselect
配置文件可以更改多个 PAM 配置文件。配置文件具有控制附加功能和行为的参数,例如启用 FIDO U2F 安全密钥。有关authselect
的详细介绍计划在未来的文章中进行。
显示当前活动的authselect
配置文件。如果选择了 SSSD(系统安全服务守护程序)配置文件并启用了 U2F 支持,则输出可能类似于以下内容:
[…]$ authselect currentProfile ID: sssdEnabled features:- with-pam-u2f
使用authselect
和with-pam-u2f
标志,在 PAM 中激活 FIDO U2F 支持:
[…]$ sudo authselect select sssd with-pam-u2f
如果你还想使用指纹读取器,必须同时启用这两个功能:
[…]$ sudo authselect select sssd with-pam-u2f with-fingerprint
这会在 PAM 中激活具有pam_u2f
和指纹读取器支持的 SSSD 配置文件。例如,当使用上述authselect
配置文件在终端上使用 sudo 时,首先会要求你提供指纹,如果指纹识别失败,则使用 U2F 密钥。然而,GDM 将首先使用 U2F 密钥。
当使用生物识别、U2F 密钥或任何其他不需要密码短语登录 GNOME 的方法时,无法自动解锁“登录”钥匙环。这是因为,默认情况下,钥匙环的密码短语设置为与你的登录密码短语相同。通常,PAM 将你的登录密码短语传递给钥匙环守护程序。由于你在通过生物识别或 U2F 密钥进行身份验证时不需要输入密码短语,因此 PAM 没有密码短语可以传递给钥匙环守护程序。这个问题没有简单直接的解决方法。
如果你为家目录使用 LUKS 加密并且操作的是单用户系统,你可以从钥匙环中移除密码短语。这将使你的 GNOME 钥匙环在文件级别上保持未加密。但它仍然在块级别上由 LUKS 加密,因为 LUKS 加密与单用户系统上的默认基于文件的钥匙环加密等效。由于钥匙环的加密仅旨在保护其内容免受离线访问,钥匙环在登录后将被解密/解锁,任何运行时应用程序或恶意软件在解锁后都有可能访问钥匙环的内容。由于 LUKS 也是一种离线保护机制,因此可以认为它是钥匙环正常基于文件的加密的替代选择。
如果你的系统被多个用户使用,则 LUKS 加密和钥匙环的正常基于文件的加密不是等效的。在具有只由 LUKS 保护的钥匙环的多用户系统中,具有解密磁盘和引导系统授权的任何用户都能够访问同一系统上的任何其他用户的钥匙环。
移除 GNOME “登录”钥匙环密码短语非常简单。只需设置一个新的空密码,钥匙环将被解锁,并且其内容将以未加密的方式存储在文件级别上。可以使用图形实用程序 Seahorse(也称为“密码和密钥”)来在 GNOME “登录”钥匙环上设置一个空密码。
警惕和其他用例即将发布的文章将探讨如何使用 U2F Dracut 插件使用 FIDO2/U2F 密钥解锁 LUKS 加密的磁盘。
OpenSSH 8.2+ 支持使用ed25519-sk
安全密钥。这个主题已经在之前的文章《如何在 Fedora Linux 上使用 YubiKey》中涉及到。
需要注意的是,FIDO2/U2F 是一种认证标准。还有其他用于安全令牌的用例(主要由 Yubico 建立),例如 (T)OTP、PIV(用于 x509 密钥管理)或 OpenPGP,这些用例不是一般性的,而是具体硬件上的用例。
关键词:
相关阅读
-
在 Fedora Linux 上使用 FIDO U2F 安全密钥
FIDOU2F安全密钥是一种小型的基于USB NFC的设备。它是一种硬件安全令牌 -
隐秘的档案攻略大全
隐秘的档案是一款好玩的解密游戏,小编也是第一时间整理了隐秘的档案攻 -
云顶之弈S9冰枪泽丽阵容玩法攻略
在云顶之弈最新的S9赛季中,游戏加入了多个全新的羁绊和棋子,很多玩家 -
数字认证(300579):日K线呈现-“曙光...
截至发稿,数字认证(300579)报31 52元 股,成交量3 919万手,换手率1 -
宝马x5故障码2c58处理方法(宝马x5故障...
宝马X5(参数|询价)故障码28a0的解决方法:检查燃油箱排气管是否正确嵌 -
2023年中华经典诵写讲骨干教师培训在兰结课
近日,教育部2023年中华经典诵写讲骨干教师培训在兰州大学结课。国家语 -
南方传媒8月14日盘中涨幅达5%
以下是南方传媒在北京时间8月14日14:15分盘口异动快照:8月14日,南方 -
买期房有风险吗 购买期房是否有风险
期房其实也就是指尚在修建中的商品房,国家允许开发商销售这样的房产, -
五五六六组合歌曲(歌手组合五五六六有...
今天小鱼来为大家解答以上问题,五五六六组合歌曲,歌手组合五五六六有 -
环比大跌、新款Model 3还要等,特斯拉...
随着时针转向8月14日,坊间流传的“ProjectHighland”中期改款Model3( -
流量小生他天天换人设全文阅读(流量小...
1、流量小生他天天换人设网盘见追问部分!影帝杜苍生最近参加了一档, -
大理啤酒走俏海外市场
近日,在昆明海关所属大理海关、孟定海关的联动监管下,一批来自云南大 -
巴彦淖尔市应季蔬菜优“鲜”通蒙
近日,一辆满载10吨洋葱和胡萝卜的货运车从巴彦淖尔市甘其毛都口岸出境 -
小市场大民生 呼和浩特市32家农贸市场...
“没想到市场发生了这么大的变化,环境整洁干净,货物摆放有序,走... -
微软发布Win11 Release Preview 2200...
系统之家8月11日最新消息,微软已向Win1121H2的ReleasePreview通道推送 -
富士莱:公司尚无含有减肥功能组合物相...
每经AI快讯,有投资者在投资者互动平台提问:您好,贵公司产品是否含有 -
蒋中耀(关于蒋中耀简述)
,你们好,今天0471房产来聊聊一篇中耀,中耀简述的文章,网友们对这件 -
新能源车行业研报:欧洲电动车倒在缺少...
图片来源@视觉中国文|BT财经欧盟、中国和美国都正在推广电动汽车。从2 -
宋铁牛(关于宋铁牛简述)
,你们好,今天0471房产来聊聊一篇铁牛,铁牛简述的文章,网友们对这件 -
2016年26岁妻子和老板缠绵,情夫过来捉...
2016年26岁妻子和老板缠绵,情夫过来捉奸,老板躲在窗台上摔死了,捉奸,