为什么没有密码你的账户更加安全?一起了解下通行密钥
nanshan 2025-01-08 16:15 18 浏览 0 评论
当 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 的大力推进下手边的电脑、平板或是手机也可以通过通行密钥化身为实体密钥了。据我统计以下的平台均支持通行密钥:
- Apple:iOS 16、iPadOS 16、macOS Ventura 与 tvOS 16 以上均支持,支持 iCloud 钥匙串同步且支持通过 AirDrop 分享
- Google:Chrome 108 版本以上、Google Play 服务(Google 自动填充框架)为最新版,支持在 Android 与 Android、Android 与特定版本 Chrome 之间同步
- Microsoft:在 Windows 11, 22H2 版本以上支持,需要打开并使用 Windows Hello,支持 Chrome 和基于 Chromium 的 Edge
当然,有人还会担心如果一个平台还不支持通行密钥是不是就意味着在那个平台就不能使用通行密钥了,比如 Linux 目前没有支持、也暂时没有计划支持通行密钥。
通行密钥其实也有考虑到这个问题,给出的解决方案则是将带有摄像头的手机、平板化身为实体密钥,通过蓝牙、NFC 或者 USB 线缆等方式将移动设备上解答出来的「答案」通过安全的通道传递给支持通行密钥的软件。跨平台传输密钥的过程在用户角度来看就两步,扫码-扫描指纹/人脸,就和我们平时扫一扫登陆微信没什么区别。
无密码登陆的未来令人遐想,以 1Password 为代表的密码管理服务也很积极努力地拥抱通行密钥这项技术。目前主流的密码管理软件对通行密钥的支持计划如下:
- 1Password:预计于 2023 年早些时候在浏览器插件和桌面端支持通行密钥,移动版 App 则会稍晚一些。目前 1Password 有个技术展示网站帮助 1Password 用户提前感受通行密钥。
- Bitwarden:明确已经处于开发阶段,但上线时间未知。
- Dashlane:处于 Beta 测试阶段,最新版浏览器插件已支持通行密钥;移动版本 app 目前处于开发阶段,其中 Android 版本支持通过 Google 账户保存、同步通信密钥。
除了系统、软件的支持,相信对于我们来说最感兴趣还是哪些网站支持通行密钥了。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 在设置完毕通行密钥以后可以直接在登陆时使用通行密钥。Github、Cloudflare、 Dropbox、 Fastmail 和 Porkbun 等等上门提到的服务也和 Nvidia 一样有着非常相似的过程的添加过程这里就不做展开了,只不过这类服务目前只能使用通信密钥进行 2FA,暂时还不能用于登陆。
Microsoft 账户
首先是 Microsoft 账户,它的特殊之处在于目前你只能在 Windows 11 22H2 上的 Chrome 或者基于 Chromium 的 Edge 浏览器添加通行密钥,在其他浏览器和操作系统中均没有添加通行密钥的入口。登陆 Microsoft 帐户以后,选择「安全」-「高级安全选项"立刻开始"」-「添加一种新的登陆或验证方法」-「设置安全密钥」-「USB 设备」-「下一步」即可开始添加通行密钥。不过和设置一样,目前 Microsoft 账户的通行密钥也仅能在 Windows 11 22H2 上使用。
Google 账户
新方法
Google 已于 2023 年 4 月 3 日正式支持通行密钥,不仅支持 2FA 也支持无密码登陆。设置方法如下:「管理您的 Google 账户」-「安全性」-「您的 Google 账号登陆选项」,找到并点击位于最下方的「通行密钥」,即可开始添加。
根据我的测试来看,拥有 Play 服务且登陆了 Google 账户,在你打开 Google 的通行密钥开关以后,符合上述要求的 Android 手机都将支持通行密钥;据我猜测,Android 手机自动创建的通行密钥本质上就是一套密钥,这套密钥通过 Google 云服务在所有的 Android 设备之间进行同步。另外值得一提的是,目前我手边的 2 台 Android 手机均为 Android 14 系统,系统版本可能也会影响到通行密钥的使用。
而 Apple 设备和 Microsoft 设备还需要额外点击位于屏幕最下方的「创建通行密钥」的按钮额外添加。需要注意的是,如果你以前使用下面提到的旧方法添加过只能用于 2FA 的通行密钥,在设置新的通行密钥之前可能还需要移除旧密钥,不然会添加不上。
旧方法
Google 账户旧通行密钥的设置方法只能用于 2FA,设置时认为两种情况,一种是如果你拥有一台内置了 Titan 安全芯片的 Pixel 设备,Google 会默认将该设备自动添加为登录时用于两步验证的通行密钥设备。
在网页端登录 Google 帐号时,只需拿出 Pixel 设备、授予附近设备权限,即可通过设备上的生物信息识别验证来完成两步认证。
如果没有一台内置了 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 和通行密钥,只能希望国内厂商多多努力拥抱开源的「无密码」协议。希望本文可以帮助到你,也希望我们可以一起进入无密码的未来。
相关推荐
- 0722-6.2.0-如何在RedHat7.2使用rpm安装CDH(无CM)
-
文档编写目的在前面的文档中,介绍了在有CM和无CM两种情况下使用rpm方式安装CDH5.10.0,本文档将介绍如何在无CM的情况下使用rpm方式安装CDH6.2.0,与之前安装C5进行对比。环境介绍:...
- ARM64 平台基于 openEuler + iSula 环境部署 Kubernetes
-
为什么要在arm64平台上部署Kubernetes,而且还是鲲鹏920的架构。说来话长。。。此处省略5000字。介绍下系统信息;o架构:鲲鹏920(Kunpeng920)oOS:ope...
- 生产环境starrocks 3.1存算一体集群部署
-
集群规划FE:节点主要负责元数据管理、客户端连接管理、查询计划和查询调度。>3节点。BE:节点负责数据存储和SQL执行。>3节点。CN:无存储功能能的BE。环境准备CPU检查JDK...
- 在CentOS上添加swap虚拟内存并设置优先级
-
现如今很多云服务器都会自己配置好虚拟内存,当然也有很多没有配置虚拟内存的,虚拟内存可以让我们的低配服务器使用更多的内存,可以减少很多硬件成本,比如我们运行很多服务的时候,内存常常会满,当配置了虚拟内存...
- 国产深度(deepin)操作系统优化指南
-
1.升级内核随着deepin版本的更新,会自动升级系统内核,但是我们依旧可以通过命令行手动升级内核,以获取更好的性能和更多的硬件支持。具体操作:-添加PPAs使用以下命令添加PPAs:```...
- postgresql-15.4 多节点主从(读写分离)
-
1、下载软件[root@TX-CN-PostgreSQL01-252software]#wgethttps://ftp.postgresql.org/pub/source/v15.4/postg...
- Docker 容器 Java 服务内存与 GC 优化实施方案
-
一、设置Docker容器内存限制(生产环境建议)1.查看宿主机可用内存bashfree-h#示例输出(假设宿主机剩余16GB可用内存)#Mem:64G...
- 虚拟内存设置、解决linux内存不够问题
-
虚拟内存设置(解决linux内存不够情况)背景介绍 Memory指机器物理内存,读写速度低于CPU一个量级,但是高于磁盘不止一个量级。所以,程序和数据如果在内存的话,会有非常快的读写速度。但是,内存...
- Elasticsearch性能调优(5):服务器配置选择
-
在选择elasticsearch服务器时,要尽可能地选择与当前业务量相匹配的服务器。如果服务器配置太低,则意味着需要更多的节点来满足需求,一个集群的节点太多时会增加集群管理的成本。如果服务器配置太高,...
- Es如何落地
-
一、配置准备节点类型CPU内存硬盘网络机器数操作系统data节点16C64G2000G本地SSD所有es同一可用区3(ecs)Centos7master节点2C8G200G云SSD所有es同一可用区...
- 针对Linux内存管理知识学习总结
-
现在的服务器大部分都是运行在Linux上面的,所以,作为一个程序员有必要简单地了解一下系统是如何运行的。对于内存部分需要知道:地址映射内存管理的方式缺页异常先来看一些基本的知识,在进程看来,内存分为内...
- MySQL进阶之性能优化
-
概述MySQL的性能优化,包括了服务器硬件优化、操作系统的优化、MySQL数据库配置优化、数据库表设计的优化、SQL语句优化等5个方面的优化。在进行优化之前,需要先掌握性能分析的思路和方法,找出问题,...
- Linux Cgroups(Control Groups)原理
-
LinuxCgroups(ControlGroups)是内核提供的资源分配、限制和监控机制,通过层级化进程分组实现资源的精细化控制。以下从核心原理、操作示例和版本演进三方面详细分析:一、核心原理与...
- linux 常用性能优化参数及理解
-
1.优化内核相关参数配置文件/etc/sysctl.conf配置方法直接将参数添加进文件每条一行.sysctl-a可以查看默认配置sysctl-p执行并检测是否有错误例如设置错了参数:[roo...
- 如何在 Linux 中使用 Sysctl 命令?
-
sysctl是一个用于配置和查询Linux内核参数的命令行工具。它通过与/proc/sys虚拟文件系统交互,允许用户在运行时动态修改内核参数。这些参数控制着系统的各种行为,包括网络设置、文件...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- linux 查询端口号 (58)
- docker映射容器目录到宿主机 (66)
- 杀端口 (60)
- yum更换阿里源 (62)
- internet explorer 增强的安全配置已启用 (65)
- linux自动挂载 (56)
- 禁用selinux (55)
- sysv-rc-conf (69)
- ubuntu防火墙状态查看 (64)
- windows server 2022激活密钥 (56)
- 无法与服务器建立安全连接是什么意思 (74)
- 443/80端口被占用怎么解决 (56)
- ping无法访问目标主机怎么解决 (58)
- fdatasync (59)
- 405 not allowed (56)
- 免备案虚拟主机zxhost (55)
- linux根据pid查看进程 (60)
- dhcp工具 (62)
- mysql 1045 (57)
- 宝塔远程工具 (56)
- ssh服务器拒绝了密码 请再试一次 (56)
- ubuntu卸载docker (56)
- linux查看nginx状态 (63)
- tomcat 乱码 (76)
- 2008r2激活序列号 (65)