vpn代理吧
当 Chrome 于本月初推送 108 版本到大家手中时,通行密钥(Passkey)就已经在主流的生态系统中准备就绪了。作为一项由 FIDO 联盟发起和推广的无密码登录标准, 通行密钥(Passkey)虽然早在今年 6 月份的时候就在 WWDC 上亮相并走入了大家的视野,不过「无密码的未来」看起来一直雷声大雨点小——好像除了系统支持就没有具体实例支持通行密钥这个功能。
其实并不然,所以本文将从通行密钥是什么出发,一起来看看通行密钥的生态如何以及我们可以怎么设置通行密钥。
虽然早前少数派有专门的 文章 介绍其工作原理,不过这里还是要简单介绍一下通行密钥是干什么以及是怎么做到的。
简单来说,通行密钥主想要实现的,是在原本的「用户名-密码」安全体系外,寻找一种更为简单、直接,但同样具备安全性的用户身份验证方式。比如你正在使用一台设置了面容 ID 的 iPhone,那通过面容 ID 解锁这台 iPhone 即可证明目前是你本人正在操作——而这要比输入登录信息、甚至自动填充登录信息都要快速无感。
这个替代验证手段的思路具体到原理,从某种程度上来说则是真的「干掉了密码」。通行密钥将以往需要加密储存在服务器端的登录信息,替换为非对称加密技术中的口令。和包含用户名、密码的传统凭证数据不同,在非对称加密技术中,注册通行密钥的设备会成一段「公钥」和「私钥」交给提供注册服务的服务器。
我们可以把公钥类比于带「防盗」锁的传统信箱,把私钥类比于信箱的锁的钥匙。邮递员投递的信件就是我们要加密的信息,通过投递到信箱中加密起来,然后也只有信箱的主人才有钥匙能够打开信箱读取信件的内容。如果一个人手上没有钥匙,那就需要用暴力开防盗锁,整个过程不仅耗时耗力,最后也往往没办法打开那把防盗锁。与之对应的,如果某些内容被公钥加密了,则该内容能且仅能被私钥解密。
非对称加密的可靠性正来源于此——若无私钥,在有限的算力和有限的时间内我们一般无法完成极大整数的因数分解;如果加密内容能被解密,则说明对方拥有私钥。
所以只要服务器用公钥加密一段认证信息,用户设备上的私钥钥可以解密这段认证信息,那么就可以证明我是「我」了,这也是通行密钥的实现基础,而通过这一个间接匹配就完成了密码认证。整个过程既不用劳神费力的敲入具体的密码、也不需要让密码离开本地设备,更能避免因为服务器受攻击而导致密码泄露,降低传输风险。
不过用户保存在本地的私钥也需要有安全保障,不然恶意程序随意访问就会破坏这样的间接认证机制。所以在使用通行密钥时往往都会配合用户设备上的生物识别系统进一步加密保存在本地的「私钥」,比如 iDevice 设备上的 TouchID/FaceID、Android 设备上的指纹识别、Windows Hello,甚至是简单的 PIN 认证都可以进一步增强访问私钥时的安全性,而这也是通行密钥绕不过的重要组成部分。
通行密钥背后的技术基础是由 W3C 在 2019 年就纳入正式标准的 WebAuthn 认证,在早期这个 API 只能通过实体密钥使用。但今年 Apple、Microsoft 以及 Google 的大力推进下手边的电脑、平板或是手机也可以通过通行密钥化身为实体密钥了。据我统计以下的平台均支持通行密钥:
Chrome 目前通行密钥的支持情况,目前 Windows 上的 Chrome 暂不支持通行密钥云同步
当然,有人还会担心如果一个平台还不支持通行密钥是不是就意味着在那个平台就不能使用通行密钥了,比如 Linux 目前没有支持、也暂时没有计划支持通行密钥。
通行密钥其实也有考虑到这个问题,给出的解决方案则是将带有摄像头的手机、平板化身为实体密钥,通过蓝牙、NFC 或者 USB 线缆等方式将移动设备上解答出来的「答案」通过安全的通道传递给支持通行密钥的软件。跨平台传输密钥的过程在用户角度来看就两步,扫码-扫描指纹/人脸,就和我们平时扫一扫登陆微信没什么区别。
在 Android 手机上扫描 Windows 电脑上的通行密钥二维码时会索要附近设备的权限
无密码登陆的未来令人遐想,以 1Password 为代表的密码管理服务也很积极努力地拥抱通行密钥这项技术。目前主流的密码管理软件对通行密钥的支持计划如下:
1Password:预计于 2023 年早些时候在浏览器插件和桌面端支持通行密钥,移动版 App 则会稍晚一些。目前 1Password 有个技术展示网站帮助 1Password 用户提前感受通行密钥。
Dashlane:处于 Beta 测试阶段,最新版浏览器插件已支持通行密钥,移动版本 app 目前处于开发阶段。
除了系统、软件的支持,相信对于我们来说最感兴趣还是哪些网站支持通行密钥了。1Password 目前维护了一个支持通行密钥网站、应用程序和其他服务的列表,详细列举了该网站支持通过通行密钥登陆或是仅用于两步认证,并给出的详细的设置地址。
在列表之外,也不断有厂商在陆陆续续的为自家的账号服务添加对于通行密钥的支持,如 Github、Cloudflare、 Dropbox、 Fastmail 和 Porkbun 等等都以不同的形式和名字提供了为现有账号绑定通行密钥的选项,这些服务普遍都在早先支持了 WebAuthn API,所以支持通行密钥也是水到渠成的事情。你可以在这里找到绝大多数已经支持 WebAuthn API 的网站和服务,理论上他们中的绝大多数也都支持通行密钥。
虽然通行密钥既可用于登陆也可用于两步认证,但本身都是基于 WebAuthn API 这项技术,所以绝大多数的通行密钥的设置也通常位于「两步认证 硬件密钥」「NFC 密钥」或是「USB 认证器」这样的选项中,为现有账号添加通行密钥的流程也已经相当无感。
以 Nvidia 的官网账号为例,在账号管理页面底部的「安全设置」中,在多重安全验证的选项中就可以看到一则名为「硬件安全设备」(Hardware Security Device)的栏目,你可以在里面添加多个支持通行密钥的浏览器、 Android 或者 iOS 设备:
添加时还有一些值得注意的地方,首先一个账户可以绑定多通行密钥,不过这些保存通行密钥的平台如果支持同步的话,同一平台中的不同设备会被认为是同一个设备,进而拒绝添加。举个例子来说,比如我在 macOS 上的 Safari 添加了 Nvidia 的通行密钥,这时我再点开添加通行密钥的界面并在 iPhone 上扫描同一个 Nvidia 账户的另一个二维码,在添加时 iPhone 上就会报错。
其次就是在 Android 手机上通过蓝牙等方式添加通行密钥时,Android 手机和对应的电脑都需要正确的上网姿势,否则将不能正确添加通行密钥。最后则是 Nvidia 账户在添加完后比较特殊的地方,Nvidia 在设置完毕通行密钥以后可以直接在登陆时使用通行密钥,这也是目前为止我测试出来的唯一一个,可以实现苹果在 WWDC 上演示的「直接使用通行密钥登陆账号」的网站。
首先是 Microsoft 账户,它的特殊之处在于目前你只能在 Windows 11 22H2 上的 Chrome 或者基于 Chromium 的 Edge 浏览器添加通行密钥,在其他浏览器和操作系统中均没有添加通行密钥的入口。登陆 Microsoft 帐户以后,选择「安全 高级安全选项『立刻开始』 添加一种新的登陆或验证方法 设置安全密钥 USB 设备 下一步」即可开始添加通行密钥。不过和设置一样,目前 Microsoft 账户的通行密钥也仅能在 Windows 11 22H2 上使用。
另一个例外则是 Google 账户,设置时认为两种情况,一种是如果你拥有一台内置了 Titan 安全芯片的 Pixel 设备,Google 会默认将该设备自动添加为登录时用于两步验证的通行密钥设备。
在网页端登录 Google 帐号时,只需拿出 Pixel 设备、授予附近设备权限,即可通过设备上的生物信息识别验证来完成两步认证vpn代理吧。
如果没有一台内置了 Titan 安全芯片的 Pixel 设备,但有一台运行 iOS 16/iPadOS 16 的设备,那么你也可以找到隐藏的添加通行密钥的入口。
首先在 iOS 16/iPadOS 16 上的 Safari 中登陆你的 Google 账户,接着点击右上角的头像-「管理你的 Google 账户 安全性 两步验证 再次输入密码 安全密钥 添加安全密钥 实体 继续」,你就能发现添加通行密钥这个熟悉的入口出现在你面前。用另一台运行 iOS 16 / iPadOS 16 / Android 13 的设备扫描屏幕上出现的二维码即可完成 Google 账户的通行密钥的添加。添加完毕以后也可以在其他平台上使用对应的 Passkey,但我不理解为什么这个接口只对 iOS/iPadOS 打开,但能用就好克老气晕。
以上就是本文的全部内容了,可以看到国外已经有不少的服务支持了通行密钥,虽然绝大多数的服务目前只是作为两步认证的替代品,但依然是一个不错的开始;反观国内服务基本都没有支持 WebAuthn API 和通行密钥,只能希望国内厂商多多努力拥抱开源的「无密码」协议。希望本文可以帮助到你,也希望我们可以一起进入无密码的未来。