Matrix 精选

Matrix 是少数派的写作社区,我们主张分享真实的产品体验,有实用价值的经验与思考。我们会不定期挑选 Matrix 最优质的文章,展示来自用户的最真实的体验和观点。

文章代表作者个人观点,少数派仅对标题和排版略作修改。


前段时间,我在 TuTu 生活志 视频中 ,看到了 Titan Security Key,并对这款来自 Google 的硬件安全密钥产生了兴趣。

在购买和使用了一个多月后,通过本文,我来简单谈一谈我的使用感受。

关于硬件安全密钥

什么是硬件安全密钥

硬件安全密钥将认证信息存储在独立硬件上,用于代替密码,或者提供一种 双因素验证 机制。

如果用户开启了基于硬件安全密钥的双因素验证,输入密码后,必须连接密钥再次确认,才能正常登录。这种机制为账号提供了额外的一层保护。

硬件安全密钥一般基于 FIDO 协议,网站可使用 WebAuthn API 访问密钥。FIDO 和 WebAuthn 均为开放的标准:

本文介绍的 Titan Security Key,并不是唯一一个硬件安全密钥。在它出现之前,YubiKey 已经受到了不少人的欢迎。另外,我们常用的银行 U 盾,也属于硬件安全密钥的一种(只不过使用了私有协议)。

越来越多的厂商和组织 已经开始支持硬件安全密钥,包括 Google、Apple、阿里巴巴、华为等。

为什么需要硬件安全密钥?

目前已经有不少网站支持了双因素验证,在输入密码之后,还需要输入一个六位动态验证码。

验证码一般可以通过两种方式获取:通过短信接收,或者通过 Google 身份验证器 等 App 获取(基于 RFC 6238 TOTP)。这两种方式在安全性上,都有一定的欠缺。

对于短信 ,手机上的 GSM 协议是一个「古老」的协议,通信内容比较容易被监听。此外,手机或 SIM 卡丢失,也会让其他人随意获取验证码:

对于 基于 TOTP 的双因素验证 ,安全性相比短信有较大提升。但与硬件安全密钥相比,仍存在一些安全弱点:

另外,攻击者还可以通过网络钓鱼 社会工程学等方式,获取临时验证码。而硬件安全密钥较难被其他人物理接触,一定程度上减轻了这些问题。

密钥忘带、丢失怎么办?

对于密钥忘带、丢失等情况,可通过准备两个或多个安全密钥的形式解决:

  • 一个挂在钥匙扣上,和钥匙一起随身携带
  • 另一个做为备份密钥,放在家中或异地保存

大多数网站都支持添加多个硬件安全密钥。下文中介绍的 Google 高级保护计划,还会强制要求用户添加至少两个硬件密钥。

关于 Titan Security Key

Titan Security Key 是来自 Google 的硬件安全密钥,由 飞天诚信 Yubico 代工。

根据接口和协议的不同,这款安全密钥分为三个版本:

  • 蓝牙 /NFC/USB 版本
  • USB-A/NFC 版本
  • USB-C 版本

此外,Google 还提供了 蓝牙 /NFC/USBUSB-A/NFC 打包的版本,一次购买即可同时拥有主备两个密钥。我购买的就是这个版本:

Titan Security Key 开箱,以及包装内所有内容(两个打包的版本,包含两个安全密钥、Micro-USB 数据线、USB-A 转 USB-C 转接头)
Titan Security Key 包装及其内容(两个打包的版本)

Google 高级保护计划

Google 高级保护计划为用户账号提供了更强大的安全保护措施:

为 Google 账号开启高级保护计划后,能够获得如下方面的安全性增强:

  1. 登录 Google 账号时,必须使用硬件安全密钥进行双因素验证,原有的双因素验证(手机验证码、TOTP 动态验证码等)全部失效,无法继续使用
  2. 禁止第三方应用访问 Gmail 或 Google Drive(Apple Mail、Thunderbird 等常用邮件客户端除外)
  3. 在 Android 设备上,禁止安装 Google Play 之外的应用
  4. 如果密钥丢失或忘记密码,恢复账号需要额外的验证步骤

当然,这些安全性的提升,也会带来便利性和灵活性的降低。是否要打开 Google 高级保护计划,就要看个人取舍了。

为了避免密钥丢失导致账号无法访问,Google 要求用户至少准备两个硬件安全密钥。所以,两个打包的 Titan Security Key 套装,就成了最适合 Google 高级保护计划的硬件。

 设置 Google 高级保护计划,需要添加两个安全密钥
设置 Google 高级保护计划,需要添加两个安全密钥

另外,作为 Google 的「亲儿子」,Titan Security Key 在 Google 账号中,能显示专属的图标,方便区分不同的密钥:

Google 账号页面,能够根据型号,显示 Titan Security Key 的专属图标
Google 账号页面,能够根据型号,显示 Titan Security Key 的专属图标

对于 G Suite 企业版账号,管理员还可以设置更加灵活的安全策略,例如允许或禁止特定的第三方应用(例如 Spark 邮件客户端 )访问 Gmail。(当然,这样做也会一定程度上削弱 Google 账号的安全性。)

 在 G Suite 管理后台中,设置允许 Spark 邮件客户端访问 Gmail
在 G Suite 管理后台中,设置允许 Spark 邮件客户端访问 Gmail

移动设备兼容性

对于不少人来说,手机、平板等移动设备,已经成为生活中必不可少的一部分。所以,是否能够方便地在移动设备上使用,也是选择硬件安全密钥的一个重要考虑因素。

Google 自家的 Android,对 Titan Security Key 的支持也是最为全面的。对于 USB、蓝牙、NFC 三种协议,Android 都能提供完整的支持。

 在 Android 上使用 Titan Security Key,支持蓝牙、USB、NFC 三种模式
在 Android 上使用 Titan Security Key,支持蓝牙、USB、NFC 三种模式

从 2019 年开始,Apple 也开始在 macOS、iOS、iPadOS 上逐步支持硬件安全密钥:

对于 iPhone,除了使用 闪电转 USB 相机转换器 等配件,也可以直接使用 NFC 无线连接。当然,对于 iPad Pro,使用 USB-C 接口连接也是比较方便的。

用户也可以在 iPhone 和 iPad 上,通过蓝牙方式连接 Titan Security Key,但必须通过 Google Smart Lock App 连接,且只能登录 Google 账号,不支持第三方网站。

 在 iPhone 上使用 Titan Security Key,支持 USB 和 NFC
在 iPhone 上使用 Titan Security Key,支持 USB 和 NFC

顺便提一下,在刚刚结束的 WWDC20 上,Apple 还为 Safari 带来了基于 WebAuthn API 的 Face ID/Touch ID 认证功能。对于没有硬件安全密钥的用户,今后也可以通过指纹或人脸识别,实现更方便的双因素验证了。

在第三方服务中使用:1Password、Dropbox 等

由于 FIDO 和 WebAuthn 是一套开放的标准,目前已经有不少的互联网服务,支持通过硬件安全密钥进行双因素验证。

通过如下链接,可以了解到各个互联网服务对双因素验证的支持情况:

经过测试,大部分网站都能完美兼容 Titan Security Key,包括 WordPress.com、Dropbox、Twitter 等:

 使用 Titan Security Key 登录 Dropbox
使用 Titan Security Key 登录 Dropbox

常用密码管理器的网页版,例如 1PasswordBitwarden,也能通过 Titan Security Key 进行双因素验证:

 使用 Titan Security Key 登录网页版 1Password
使用 Titan Security Key 登录网页版 1Password

在我的测试中,只有 Microsoft 账号(OneDrive、Office 365、Outlook 等)不兼容 Titan Security Key。

Microsoft 账号利用硬件安全密钥的方式,与其他网站不太一样:直接利用硬件安全密钥进行免密码登录,而不是双因素验证。与此同时,Microsoft 也对硬件安全密钥提出了更多的要求,例如需要支持 FIDO2 标准等:

而 Titan Security Key 不支持 FIDO2,所以也就无法用于登录 Microsoft 账号了:

 使用 Titan Security Key 无法登录 Microsoft 账号
使用 Titan Security Key 无法登录 Microsoft 账号

同时,大部分客户端软件,例如 macOS 版本的 1Password,以及 Dropbox 的 iOS App,都不支持硬件安全密钥。开源的 KeePass 密码管理器,也没有支持 Titan Security Key 的插件:

 在 Dropbox iOS App 上,无法使用 Titan Security Key 进行登录
在 Dropbox iOS App 上,无法使用 Titan Security Key 进行登录

高级玩法

SSH

OpenSSH 8.2 带来了 FIDO/U2F 支持,可选择 ecdsa-sked25519-sk 两种密钥类型,实现双因素验证。Titan Security Key 只支持 ecdsa-sk

对于 macOS,可通过 Homebrew 安装最新版的 OpenSSH(brew install openssh)。

安装新版 OpenSSH 后,使用 ssh-keygen -t ecdsa-sk 生成密钥对,并上传到服务器上,即可实现双因素验证。后续登录服务器时,必须连接硬件安全密钥,才能正常登录。

# 生成密钥对
$ ssh-keygen -t ecdsa-sk -f ./id_ecdsa_sk
Generating public/private ecdsa-sk key pair.
You may need to touch your authenticator to authorize key generation.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in ./id_ecdsa_sk
Your public key has been saved in ./id_ecdsa_sk.pub

# 登录服务器,必须连接硬件安全密钥,才能正常登录
$ ssh -i ./id_ecdsa_sk blanboom@172.16.15.12
Confirm user presence for key ECDSA-SK SHA256:XXX
Welcome to Ubuntu 20.04 LTS (GNU/Linux 5.4.0-33-generic x86_64)
blanboom@blanboom-ubuntuvm:~$

Windows Hello

在 2019 年,Windows Hello 也开始支持硬件安全密钥 。但实测不兼容 Titan Security Key:

Windows Hello 不支持 Titan Security Key
Windows Hello 不支持 Titan Security Key

这是因为 Windows Hello 和 Microsoft 账户一样,也必须使用符合要求的 FIDO2 密钥,才能正常登录。具体请参考前文中关于 Microsoft 账户的内容。

Linux 与 macOS 登录

在 Linux 上设置 Titan Security Key,步骤会稍微麻烦一点:需要安装 libpam-u2f,并修改配置文件。具体配置方法请参考如下文章:

经测试,Titan Security Key 能够完美地在 Ubuntu 20.04 LTS 上运行。无论是首次登录,还是使用 sudo 命令,都能正常兼容。

 在 Ubuntu 上成功设置 Titan Security Key
在 Ubuntu 上成功设置 Titan Security Key

macOS 也可以通过 Titan Security Key 进行双因素验证,设置步骤和 Linux 大同小异:

但是,对于启用了 FileVault 全盘加密的 Mac, 开机首次登录时并没有真正进入 macOS,所以不方便使用 Titan Security Key。(一种变通的解决方法,是先对硬盘进行加密,设置一个独立的加密密码,再安装 macOS。但开机时需要多输入一次硬盘加密密码。)

购买建议

目前,YubiKey 是市面上最流行的硬件安全密钥。那么,在 YubiKey 和 Titan Security Key 之间,我们应该如何挑选最适合自己的硬件安全密钥?

先来看下 Titan Security Key 的优点:

  1. 来自 Google,内置由 Google 设计的固件(不过闭源固件对一部分人来说并不是优点)
  2. 部分型号支持蓝牙,可通过蓝牙连接移动设备(但在 iOS 上仅能通过 Google Smart Lock App 登录 Google 服务,不支持登录第三方服务)
  3. 提供两个密钥打包的套装,只需要购买一份套装,就可以方便地开启 Google 高级保护计划
  4. 在 Google 账号中添加 Titan Security Key,能够为不同型号的密钥显示不同的图标

YubiKey 5 系列 的特色如下:

  1. 具有更丰富的型号。其中,YubiKey 5Ci 拥有 USB-C 和 Lightning 双接口,同时兼容 iPhone、iPad,以及新款的电脑和 Android 设备,无需转接
  2. 支持最新的 FIDO2 标准
  3. 能够模拟键盘,自动输入密码或 TOTP 动态验证码。即使网站不支持硬件安全密钥,也能通过 YubiKey 登录
  4. 支持 PGP Smartcard 等功能
  5. 拥有更丰富的生态。例如 KeePass 密码管理器有 KeeChallenge 插件,安装后即可支持 Yubikey

所以,在选购硬件安全密钥时,如果仅仅是为了使用 Google 高级保护计划,来自 Google 的 Titan Security Key 是最合适的选择;但如果想将密钥用在更多不同的场景中,功能丰富的 YubiKey 5 更值得购买。

推荐阅读 The Verge 的这篇文章。作者通过对比市面上常见的硬件安全密钥,给出了详细的购买建议:

> 下载少数派 客户端 、关注 少数派公众号 ,了解更妙的数字生活 🍃

> 想申请成为少数派作者?冲!