Introducing Car Keys
System & Services 进阶 28m

Car Keys 数字车钥匙入门

Introducing Car Keys

2020年6月22日

在 Apple 官方观看视频

一句话判断

苹果正式把 iPhone 变成了车钥匙——通过 NFC 和 Secure Enclave 实现的数字车钥匙方案,不仅是”手机开门”这么简单,而是重新定义了车钥匙的共享、管理和安全模型。

这场 Session 讲了什么

Car Keys 是苹果在 iOS 14 中推出的数字车钥匙功能,基于 NFC 技术和 ISO 18013-5 标准(即数字车钥匙的行业标准)。用户可以将车钥匙添加到 Wallet App 中,用 iPhone 或 Apple Watch 靠近车门即可解锁车辆,甚至在 iPhone 电量耗尽后仍然可以通过备用电源模式工作。

Session 详细介绍了车钥匙的完整生命周期:从车辆配对(Pairing)、日常使用(解锁、启动引擎),到钥匙共享(通过 iMessage 将车钥匙分享给家人或朋友),再到钥匙管理(挂失、远程撤销)。特别值得关注的是钥匙共享功能——你可以设置临时钥匙,限制接收者的使用权限(比如限制最高车速、音响音量等),这对家庭用车场景非常实用。

苹果还介绍了后台通信机制和车主配对流程,以及车厂如何通过 CarKit framework 集成这些功能。

值得深挖的点

Secure Enclave 中的密钥管理。 车钥匙的私钥存储在 Secure Enclave 中,这意味着即使 iOS 系统被攻破,车钥匙也无法被提取。所有的签名操作都在 Secure Enclave 内完成,配合 NFC 的近距离通信,构成了一个从硬件到软件的完整信任链。

钥匙共享的安全模型。 通过 iMessage 共享钥匙时,苹果使用了端到端加密。共享钥匙的权限是独立的——你可以给朋友一把只能开门不能启动引擎的钥匙,或者一把只在特定时间段有效的钥匙。这种细粒度的权限控制是物理车钥匙无法实现的。

代码片段

import CarKit

// 检查设备是否支持数字车钥匙
if CarKey.isSupported {
    print("当前设备支持 Car Keys 功能")
}

// 监听车钥匙状态变化
// 当用户在 Wallet 中添加或删除车钥匙时会触发通知
NotificationCenter.default.addObserver(
    forName: CarKey.keyDidChangeNotification,
    object: nil,
    queue: .main
) { notification in
    // 更新 App 中的车钥匙状态显示
    updateKeyStatus()
}
// 钥匙共享配置示例
// 车主可以通过 iMessage 将钥匙分享给他人
// 并设置使用限制
let sharingConfiguration = CarKeySharingConfiguration(
    maxSpeed: 120,        // 限制最高车速 120 km/h
    maxVolume: 60,        // 限制音响音量
    expirationDate: Date().addingTimeInterval(7 * 24 * 3600),  // 7 天后过期
    requiresApproval: true  // 首次使用需要车主确认
)

最佳实践

  • 实现完整的钥匙生命周期管理。 包括配对、日常使用、共享、撤销四个阶段。尤其要处理钥匙丢失后的远程撤销流程,这是用户最关心的安全场景。
  • 做好低电量模式的支持。 Car Keys 支持 Express Mode(快捷交通卡模式),不需要 Face ID 验证就能开门。同时要测试电量耗尽后的备用电源模式是否正常工作。
  • 为钥匙共享设计合理的默认权限。 临时钥匙的默认权限应该是受限的,由用户主动选择是否放宽,而不是默认全权限。
  • 处理多设备同步。 用户可能同时在 iPhone 和 Apple Watch 上有车钥匙,确保两者状态同步。

还有什么值得关注

  • BMW 是首批支持 Car Keys 的汽车品牌,后续会有更多车厂加入
  • 超宽带(UWB)技术将在未来版本中支持空间感知,精确判断用户在车的哪一侧
  • 车钥匙支持通过 iCloud 远程管理和撤销
  • Apple Watch 同样支持 Car Keys,独立的钥匙管理体验
WWDC 2020