WWDC Quick Look 💓 By SwiftGGTeam
Deploy passkeys at work

Deploy passkeys at work

观看原视频

Highlight

Passkeys 通过 Managed Apple ID 支持 iCloud Keychain、设备访问管理控制和声明式设备管理的企业认证配置,让企业可以在受管设备上安全部署无密码登录,同时防止钓鱼攻击、凭证盗窃和 2FA 绕过。

核心内容

企业面临的三大安全威胁

企业每天面临三种主要攻击(01:35):

钓鱼攻击

根据 Verizon 2022 年数据泄露调查报告,超过 10 亿次钓鱼尝试中,2.9% 的员工会点击钓鱼链接。公司规模越大,风险越高:100 人公司约 3 人点击,500 人公司约 15 人,1000 人公司约 29 人。一次成功的钓鱼往往是全面入侵的起点。

Passkeys 消除了这个问题:没有东西可输入,每个 passkey 内在绑定到特定的网站或 App,用户永远不会在错误的网站上使用 passkey(02:47)。

凭证盗窃

2022 年 40% 的数据泄露涉及被盗凭证。密码服务器上存储的是哈希值,哈希可以被窃取并破解,然后攻击者用 A 网站的密码尝试登录 B、C 网站。

Passkeys 打破了这种循环:服务器只存储公钥,没有值得窃取的东西(03:39)。

双因素认证绕过

SMS 验证码和 TOTP(基于时间的一次性密码)都可以像密码一样被钓鱼。推送通知虽然不能被钓鱼,但容易受到”推送疲劳攻击”——攻击者不断发送推送通知,直到用户误点接受。

Passkeys 不是又一个补丁,它用设计安全的新主因素替代了根本破损的旧主因素(04:35)。

安全与体验的兼得

创建 passkey 比创建密码更快更简单。登录时不需要记忆和输入密码,只需 Face ID 或 Touch ID(05:17)。

企业环境的特殊需求

IT 管理员在部署 passkeys 时有四个独特需求(06:41):

  1. 管理使用 iCloud Keychain 和 passkeys 的 Apple ID 账户
  2. 只允许 passkeys 同步到受管设备,而非员工的个人设备
  3. 确保工作 passkeys 存储在 IT 管理的 Managed Apple ID 的 iCloud Keychain 中
  4. 向依赖方证明 passkey 是在受管设备上创建的
  5. 关闭 passkeys 共享功能

Managed Apple ID 支持 iCloud Keychain

Managed Apple ID 由组织在 Apple Business Manager 或 Apple School Manager 中创建和管理。macOS Sonoma、iOS 17 和 iPadOS 17 起,Managed Apple ID 支持 iCloud Keychain(07:50)。

好处:

  • 用户在所有设备上获得 passkeys 的同步体验
  • IT 可以管理这些账户
  • Managed Apple ID 的 iCloud Keychain 中的 passkeys 不能被共享

设备访问管理控制

Apple Business Manager 和 Apple School Manager 新增了访问管理功能,有两种控制方式(08:34):

控制员工可以用 Managed Apple ID 登录哪些设备

  • 任何设备(默认)
  • 仅受管设备(适合 BYOD 场景)
  • 仅受管监督设备(最高安全级别,适合组织配发设备)

控制 iCloud 内容(包括 iCloud Keychain 中的 passkeys)可以同步到哪些设备

同样有上述三个选项。

设备管理服务器需要实现对这些功能的支持,Apple Business Essentials 开箱即用。

企业 Passkey 认证配置

声明式设备管理新增了企业 passkey 认证配置(10:07)。这个配置可以:

  • 安全地在设备上为用户生成 passkey
  • 当用户访问配置中指定的网站时触发
  • 引用一个身份资产,用于执行标准的 Web Authentication 认证
  • 依赖方验证认证后允许访问相关网站

配置示例:

{
    "Type": "com.apple.configuration.security.passkey.attestation",
    "Identifier": "B1DC0125-D380-433C-913A-89D98D68BA9C",
    "ServerToken": "8EAB1785-6FC4-4B4D-BD63-1D1D2A085106",
    "Payload": {
        "AttestationIdentityAssetReference": "88999A94-B8D6-481A-8323-BF2F029F4EF9",
        "RelyingParties": [
            "www.example.com"
        ]
    }
}

关键点:

  • AttestationIdentityAssetReference 引用身份资产
  • RelyingParties 指定哪些网站会使用这个身份进行认证
  • 配置激活后,身份证书从企业证书颁发机构服务器预配

认证流程

  1. MDM 服务器发送 passkey 认证配置和身份资产到设备
  2. 配置激活后,从企业 CA 服务器预配身份证书
  3. 用户访问网站,网站请求 passkey
  4. 依赖方可以指示只接受带有企业认证的新 passkey
  5. 设备生成新 passkey,用预配的身份证书进行认证
  6. 网站验证认证,检查设备证书是否链回组织的 CA

依赖方需要知道信任哪个 CA 证书。组织管理员可以把 CA 证书副本上传到依赖方(12:38)。

WebAuthn Packed Attestation 格式

依赖方需要检查 Web Authentication passkey 创建响应中的认证声明(13:12):

attestationObject: {
    "fmt": "packed",
    "attStmt": {
        "alg": -7, // for ES256
        "sig": bytes,
        "x5c": [ attestnCert: bytes, * (caCert: bytes) ]
    },
    "authData": {
        "attestedCredentialData": {
            "aaguid": "dd4ec289-e01d-41c9-bb89-70fa845d4bf2", // for Apple devices
            <…>
        },
        <…>
    },
    <…>
}

关键点:

  • 先检查 aaguid 是否匹配 Apple 设备的值
  • alg: -7 表示使用 ES256 算法
  • sig 是认证签名
  • x5c 数组包含认证证书和证书链,每个都是 X.509 格式

详细内容

配置部署流程

第一步:MDM 服务器配置

MDM 服务器发送以下声明到设备:

  1. Passkey Attestation Configuration:指定依赖方和引用的身份资产
  2. Identity Asset:包含从企业 CA 获取证书所需的信息

第二步:设备激活

设备收到声明后:

  • 解析配置中的 AttestationIdentityAssetReference
  • 向企业 CA 服务器请求身份证书
  • 将证书存储在钥匙串中

第三步:用户访问网站

当用户访问 RelyingParties 中列出的网站时:

  • 网站调用 WebAuthn API 请求创建 passkey
  • 设备检测到需要企业认证
  • 使用预配的证书对新生成的 passkey 进行认证
  • 返回认证对象给网站

第四步:依赖方验证

网站验证认证:

  • 检查 aaguid 确认来自 Apple 设备
  • 验证证书链是否链回组织的 CA
  • 确认 passkey 是在受管设备上创建的
  • 接受或拒绝 passkey 注册

用户体验

以 Tailscale 为例(14:37):

  1. 用户选择 passkey 名称
  2. 点击 “Create a passkey and join”
  3. Passkey 保存在 Managed Apple ID 的 iCloud Keychain 中
  4. 点击 “Continue”,用 Face ID 完成登录

如果用户尝试在个人设备上创建 passkey,会看到错误提示:设备不受组织管理。这是通过 passkey 认证实现的。

再次登录更简单:点击 “Sign in with passkey”,选择之前使用的 passkey,用 Face ID 确认即可。

核心启发

为内部工具网站启用 Passkey 登录

  • 做什么:把公司内部的 Wiki、Dashboard、CI 系统等工具的登录方式从密码改为 passkey
  • 为什么值得做:内部工具往往密码策略松懈,是钓鱼攻击的高价值目标。passkey 消除了密码被窃取的风险
  • 怎么开始:在支持 WebAuthn 的服务器上实现 passkey 注册和认证流程,前端调用 navigator.credentials.create()navigator.credentials.get()

用 Managed Apple ID 统一管理员工凭证

  • 做什么:为员工创建 Managed Apple ID,开启 iCloud Keychain,设置仅受管设备同步
  • 为什么值得做:确保工作 passkeys 不会同步到员工的个人设备,降低凭证泄露风险
  • 怎么开始:在 Apple Business Manager 中创建 Managed Apple ID,配置访问管理控制为 “managed devices only”

为 SaaS 集成企业 Passkey 认证

  • 做什么:让公司的 SaaS 供应商(如 Slack、Notion)支持企业 passkey 认证,限制只有受管设备能注册
  • 为什么值得做:结合 MDM 的认证配置和 SaaS 的 WebAuthn 支持,可以确保员工只能用公司设备访问关键服务
  • 怎么开始:向 SaaS 供应商提供企业 CA 证书,配置依赖方只接受带有企业认证的 passkey

逐步淘汰 SMS 2FA

  • 做什么:在部署 passkey 后,逐步关闭账户的 SMS 和 TOTP 双因素认证
  • 为什么值得做:SMS 和 TOTP 都可以被钓鱼,passkey 本身就是多因素认证(设备 + 生物识别),额外添加脆弱的第二因素反而增加攻击面
  • 怎么开始:先在高风险账户(管理员、财务)上试点 passkey,验证依赖方支持后,关闭这些账户的 SMS 2FA

关联 Session

评论

GitHub Issues · utterances