15

在 watchOS 2 中,不再有共享钥匙串。

如果我想将钥匙串值从 iOS 应用程序发送到 Watch 应用程序,通过 WCSession updateApplicationContext 发送它是否安全?

4

3 回答 3

6

是的。

如果您的钥匙串值没有改变,并且您反复更新您的应用程序上下文,您可能希望安排只发送一次值(以便手表添加到其钥匙串中),而不是反复重新发送钥匙串值。

一位 Apple 工程师在开发者论坛上讨论使用 Watch Connectivity 发送钥匙串项目:

如果您想在手表上访问手机上的数据,您的应用可以使用 WatchConnectivity 传输所需的特定数据和钥匙串项目。Apple Watch 上的钥匙串包含与配对 iPhone 上的钥匙串不同的一组条目,因此如果您在两个地方都需要某些东西,您可以为每台设备生成一次,或者使用 WatchConnectivity 在它们之间传输。

更新:

在 watchOS 2 中,Watch Connectivity 是在配对手机和手表之间传输数据的机制。根据iOS 安全指南,设备之间的通信是加密的。

至于字典是否可以在内存中访问,或者在您的扩展程序收到它之前它如何被持久化,我认为您必须依靠 Apple 来解决任何可能的漏洞。

可以合理地说,信息不像钥匙串那样安全,直到您的扩展程序唤醒,接收更新,然后将值存储在钥匙串中。

于 2016-01-29T02:42:30.770 回答
5

根据 Apple 安全指南:-

钥匙串数据保护 许多应用程序需要处理密码和其他简短但敏感的数据,例如密钥和登录令牌。iOS 钥匙串提供了一种安全的方式来存储这些项目。钥匙串被实现为存储在文件系统上的 SQLite 数据库。只有一个数据库;securityd 守护进程确定每个进程或应用程序可以访问哪些钥匙串项。钥匙串访问 API 会导致对守护程序的调用,该守护程序会查询应用程序的“keychain-access-groups”、“application-identifier”和“applicationgroup”权利。访问组不是限制对单个进程的访问,而是允许在应用程序之间共享钥匙串项目。钥匙串项目只能在来自同一开发者的应用程序之间共享。这是通过要求第三方应用程序使用通过应用程序组通过 iOS 开发人员计划分配给它们的前缀的访问组来管理的。前缀要求和应用程序组唯一性通过代码签名、供应配置文件和 iOS 开发人员计划强制执行。

使用类似于文件数据保护中使用的类结构来保护钥匙串数据。这些类具有与文件数据保护类等效的行为,但使用不同的键,并且是名称不同的 API 的一部分。


苹果手表 它使用专为 iOS 构建的安全功能和技术来帮助保护设备上的数据,以及与其配对的 iPhone 和互联网的通信。这包括数据保护和钥匙串访问控制等技术。用户的密码也与设备 UID 纠缠在一起以创建加密密钥。Apple Watch 与 iPhone 的配对使用带外 (OOB) 流程来交换公钥,然后是 BTLE 链接共享密钥。Apple Watch 显示一个动画图案,由 iPhone 上的摄像头捕捉。该模式包含一个用于 BTLE 4.1 带外配对的编码秘密。如有必要,标准 BTLE 密钥条目用作备用配对方法。一旦建立了 BTLE 会话,Apple Watch 和 iPhone 就会使用改编自 IDS 的流程交换密钥,如本文的 iMessage 部分所述。交换密钥后,蓝牙会话密钥将被丢弃,Apple Watch 和 iPhone 之间的所有通信都使用 IDS 加密,加密的 BTLE 和 Wi-Fi 链接提供二级加密层。如果流量受到损害,则每隔 15 分钟使用一次密钥滚动来限制暴露窗口。为了支持需要流数据的应用程序,使用本文 FaceTime 部分中描述的方法提供加密,利用配对 iPhone 提供的 IDS 服务。Apple Watch 实现了文件和钥匙串项目的硬件加密存储和基于类的保护,如本文的数据保护部分所述。钥匙链项目的访问控制钥匙包也被使用。用于手表和 iPhone 之间通信的密钥也使用基于类别的保护来保护。当 Apple Watch 不在蓝牙范围内时,可以使用 Wi-Fi 代替。Apple Watch 不会加入 Wi-Fi 网络,除非配对的 iPhone 上有加入 Wi-Fi 网络的凭据,它会自动向手表提供已知网络列表。Apple Watch 可以通过按住侧边按钮手动锁定。此外,运动启发法用于尝试在设备从手腕上取下后不久自动锁定设备。锁定后,Apple Pay 将无法使用。如果手腕检测提供的自动锁定在设置中关闭,Apple Pay 将被禁用。使用 iPhone 上的 Apple Watch 应用程序关闭手腕检测。也可以使用移动设备管理强制执行此设置。如果手表正在佩戴,配对的 iPhone 也可以解锁手表。这是通过建立由配对期间建立的密钥验证的连接来实现的。iPhone 发送密钥,手表用它来解锁其数据保护密钥。iPhone 不知道手表密码,也不会传输它。可以使用 iPhone 上的 Apple Watch 应用关闭此功能。Apple Watch 一次只能与一部 iPhone 配对。与新 iPhone 配对会自动抹掉 Apple Watch 上的所有内容和数据。在配对的 iPhone 上启用“查找我的手机”也会启用 Apple Watch 上的激活锁。激活锁使任何人都更难使用或出售丢失或被盗的 Apple Watch。激活锁需要用户的 Apple ID 和密码才能取消配对、擦除、

钥匙串服务易用性 https://developer.apple.com/library/ios/documentation/Security/Conceptual/keychainServConcepts/02concepts/concepts.html

于 2016-02-08T05:46:45.400 回答
3

苹果的回应:

应用程序的内容在传输过程中被加密。否则,内容将存储在应用程序的容器中,这提供了容器的固有安全性。

这是安全白皮书的链接。 https://www.apple.com/business/docs/iOS_Security_Guide.pdf

对于在途部分,您应该查看“App Security”下的“Apple Watch”部分。对于容器安全的相关部分,您应该查看“加密和数据保护”下的“文件数据保护”部分。

于 2016-02-22T18:24:13.200 回答