HomeKit 通信安全性
HomeKit 奠定了家庭自动化的基础,通过使用 iCloud 以及 iOS、iPadOS 和 macOS 安全性来保护和同步专用数据,而无需将这些数据透露给 Apple。
HomeKit 身份标识和安全性基于 Ed25519 公私密钥对。iOS、iPadOS 和 macOS 设备上会为每位用户针对 HomeKit 生成 Ed25519 密钥对,即用户的 HomeKit 身份标识。该密钥对被用来认证 iOS、iPadOS 和 macOS 设备之间以及 iOS、iPadOS 和 macOS 设备与配件之间的通信。
储存在钥匙串中且仅包括在加密的钥匙串备份中的密钥使用“iCloud 钥匙串”在设备间保持最新(可用时)。HomePod 和 Apple TV 通过轻点设置或如下所述的设置模式来接收密钥。iPhone 通过 Apple 身份识别服务 (IDS) 将密钥共享到配对的 Apple Watch。
HomeKit 配件间的通信
HomeKit 配件会生成自己的 Ed25519 密钥对,用来与 iOS、iPadOS 和 macOS 设备进行通信。如果将配件恢复为出厂设置,则会生成新的密钥对。
为了在 iOS、iPadOS 和 macOS 设备与 HomeKit 配件之间建立联系,会使用安全远程密码(3072 位)协议来交换密钥:用户在 iOS、iPadOS 设备上输入由配件生产企业提供的八位数代码,然后使用 HKDF-SHA512 派生密钥按照 ChaCha20-Poly1305 AEAD 进行加密。在设置过程中,还会对配件的 MFi 认证进行验证。不搭载 MFi 芯片的配件可内建对 iOS 11.3 或更高版本中软件认证的支持。
当 iOS、iPadOS 和 macOS 设备以及 HomeKit 配件在使用过程中进行通信时,它们使用上述过程中交换的密钥相互进行认证。每个会话均使用端对端协议建立,并基于逐个会话 Curve25519 密钥通过 HKDF-SHA512 派生密钥进行加密。这同时适用于基于 IP 的配件和低功耗蓝牙 (BLE) 配件。
对于支持广播通知的 BLE 设备,已配对的 iOS、iPadOS 和 macOS 设备会通过安全会话在配件中预置广播加密密钥。此密钥用于加密有关配件状态改变的数据,通过 BLE 广播通知状态改变。广播加密密钥是 HKDF-SHA512 派生密钥,数据使用 ChaCha20-Poly1305 AEAD 算法来加密。广播加密密钥由 iOS、iPadOS 和 macOS 设备定期更改,并使用 iCloud 更新到其他设备(请参阅 HomeKit 数据安全性)。
HomeKit 与 Siri
Siri 可用来询问和控制配件以及激活各种场景。Siri 只会匿名获得有关家庭配置的极少量信息。所提供有关房间名称、配件和场景的信息为命令识别所需。发送给 Siri 的音频可能会指示具体的配件或命令,但此类 Siri 数据并不会关联到 HomeKit 等 Apple 其他功能。
支持 Siri 的 HomeKit 配件
用户可以使用“家庭” App 在支持 Siri 的配件上启用 Siri 等新功能以及其他 HomePod 功能,如计时器、闹钟、广播和门铃。这些功能启用后,配件会与本地网络上具有这些 Apple 功能的已配对 HomePod 协作。音频使用 HomeKit 和“隔空播放”协议通过加密通道在设备之间交换。
“用‘嘿 Siri’唤醒”打开时,配件使用本地运行的触发短语检测引擎来听取“嘿 Siri”短语。如果此引擎检测到该短语,它会使用 HomeKit 将音频帧直接发送到配对的 HomePod。HomePod 会对音频执行第二次检查,如果短语似乎不包含触发短语,则可能取消音频会话。
“触碰使用 Siri”打开时,用户可以按下配件上的专用按钮以开始与 Siri 对话。音频帧会直接发送到配对的 HomePod。
在检测到成功激活 Siri 后,HomePod 会将音频发送到 Siri 服务器,并使用安全、隐私和加密保护措施(与 HomePod 应用于用户激活 HomePod 本身时一样)来满足用户的意图。如果 Siri 有音频回复,则 Siri 的回复会通过“隔空播放”音频通道发送到配件。部分 Siri 请求需要用户提供更多信息(例如,询问用户是否想要听取更多选项)。在这种情况下,配件会收到应该提示用户的指示,然后更多音频会流播放到 HomePod。
配件需要有视觉指示器,以便在其听取活跃时向用户发出信号(例如,LED 指示灯)。除了访问音频流之外,配件不知道 Siri 请求的意图,也不会储存任何用户数据。