# 通行密钥passkey原理

**URL:** <https://forum.beginner.center/t/topic/2688>\
**Category:** 🛠工具与编程\
**Tags:** passkey\
**Created:** [2026 年3 月 6 日 03:10 UTC](https://forum.beginner.center/t/topic/2688 "2026-03-06T03:10:28Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

作者： ![doggie](https://forum.beginner.center/user_avatar/forum.beginner.center/doggie/32/550_2.png) [@doggie](https://forum.beginner.center/u/doggie)\
发布日期： [2026 年3 月 6 日 03:10 UTC](https://forum.beginner.center/t/topic/2688/1 "2026-03-06T03:10:28Z")

</div>

## 推荐词

原理类似于ssh密钥

# 原文

> 本文由 [简悦 SimpRead](http://ksria.com/simpread/) 转码， 原文地址 [liaoxuefeng.com](https://liaoxuefeng.com/blogs/all/2023-08-15-what-is-passkey/index.html#0)

苹果在 2022 年的 WWDC 大会上宣布了在 iOS 设备上可以使用一种名叫 Passkey 的无密码登录，苹果把它翻译成 “通行密钥”，并随后又在 macOS 上支持它。谷歌和微软随后也宣布在 Android 和 Windows 系统上支持通行密钥。

那么，什么是通行密钥？它和传统的登录方式有何区别？

我们先回顾最原始的登录方式——密码登录：

```auto
┌──── Sign in ─────────────┐
│ │
│ ┌────────────────┐ │
│ │bob@example.com │ │
│ └────────────────┘ │
│ ┌────────────────┐ │
│ │ ******** │ │
│ └────────────────┘ │
└──────────────────────────┘

```

密码登录，要求用户设置一个高强度的密码，因为强度低，容易被破解，但强度高，又记不住。很多网站要求注册时密码必须包含大小写字母、数字和特殊符号，纯属给用户添堵。

而用 Passkey 登录，则无需输入密码，只需要点一下 “一键登录”，就可以直接完成登录。

这种无密码登录到底是什么原理，为什么这么神奇？

其实 Passkey 的核心技术非常简单粗暴，就是用非对称密钥通过签名完成认证：

```auto
┌─────────────────────┐ ┌──────────────────────┐
│ Client │ │ Server │
│ ┌───┬───────────┐ │ signature │ ┌─────┬──────────┐ │
│ │bob│private key│──┼───────────┼─▶│bob │public key│ │
│ └───┴───────────┘ │ │ ├─────┼──────────┤ │
└─────────────────────┘ │ │alice│public key│ │
                                  │ └─────┴──────────┘ │
                                  └──────────────────────┘

```

使用 Passkey 登录时，网站存储了用户的公钥，而用户的私钥存放在本地设备（电脑或手机）中，通过给服务器发送私钥签名，服务器验证签名无误，即登录成功。

由于非对称加密是目前加密强度最高的加密技术，所以用 Passkey 登录，以目前计算机的算力，任何人都无法破解，可以说安全性是 100%。

接下来我们看看如何使用 Passkey 登录网站。以下演示使用 macOS 系统和 Safari 浏览器。

使用 Passkey 分为两步：登记公钥和一键登录。

登记公钥就是在服务器上登记用户对应的公钥，这个步骤只需要做一次。然而服务器如何知道当前用户的身份呢？所以，登记公钥前，还是需要以传统方式登录网站。比如，我们用 OAuth 登录网站 [www.liaoxuefeng.com](http://www.liaoxuefeng.com)，然后在右上角选择用户 - 通行密钥 - 注册新的通行密钥，浏览器会弹出提示框询问是否存储 Passkey 到 iCloud：

 ![](https://discoursecdn.beginner.center/original/2X/8/8b3620067552c0dd63e1f4195eb1348782435bb4.png)

选择 Continue，浏览器先在本地保存了私钥，然后把公钥发送给服务器，我们就可以看到当前用户绑定的公钥：

 ![](https://discoursecdn.beginner.center/original/2X/5/5559c8ec03105168c6c72f174f6720aa6f83926c.png)

至此，Passkey 就可以使用了。

我们退出登录后，再准备重新登录，选择 Passkey 登录：

 ![](https://discoursecdn.beginner.center/original/2X/f/f7cda7ff14f27820afed463bdb31a7232c34419e.png)

点击`Sign in with Passkey`，浏览器弹出对话框，询问是否用已保存的 Passkey 登录网站：

 ![](https://discoursecdn.beginner.center/original/2X/7/784a1a12469f2974be5f55bc54650ef938123ab8.png)

选择 Continue，登录成功！

如果在 iPhone 和 Mac 上使用的是同一用户，由于 iCloud 会在多个设备中自动同步，所以我们在 iPhone 上使用系统浏览器时，也可以直接用 Passkey 登录：

 ![](https://discoursecdn.beginner.center/original/2X/d/dec8115b2c7eceedb493e0821c8a54f6ec281b77.png)

使用 Passkey 登录，就是这么简单！

### 优点

使用 Passkey 非常安全，不存在破解的可能。此外，本地存储 Passkey 时，还会同时关联网站域名，可以从根本上防止钓鱼攻击，因为一个 Passkey 对应一个网站，无法跨多个网站使用。

### 使用限制

Passkey 就是用非对称密钥签名登录，那么私钥存储在哪呢？

私钥存储在操作系统内置的密钥管理器中，浏览器通过与操作系统的 API 交互完成签名，所以，操作系统和浏览器都要支持 Passkey 才行。Mac 的系统浏览器 Safari 本身是苹果自己开发的，当然能直接集成 macOS 的 Passkey 功能。如果换成 Chrome 浏览器，当前版本还无法直接与 macOS 的 Passkey 交互，所以它会弹出一个二维码，可以用 iPhone 相机扫码登录，属于曲线救国路线，稍微麻烦点。但可以肯定，各浏览器迟早都会打通直接与操作系统的 Passkey 交互。

### 如何删除 Passkey

可以从服务器上删除 Passkey（实际是删除公钥），也可以从本地设备删除 Passkey（实际是删除私钥），都可以让该 Passkey 失效。

从服务器上删除 Passkey 需要登录网站后，找到相关页面删除。从本地删除 Passkey，可以打开 Mac 的系统设置 - 口令，在列出的网站上点击右键，选择删除。
