在watchOS 2中,没有更多的共享密钥链。
如果我想将iOS应用程序中的钥匙串值发送到Watch应用程序,是否可以通过WCSession updateApplicationContext发送它?
答案 0 :(得分:4)
根据Apple安全指南: -
钥匙串数据保护许多应用程序需要处理密码和其他密码 短而敏感的数据,如密钥和登录令牌。该 iOS钥匙串提供了一种存储这些项目的安全方式。钥匙扣 实现为存储在文件系统上的SQLite数据库。那里 只有一个数据库; securityd守护进程确定哪个钥匙串 每个流程或应用可以访问的项目。密钥链访问API导致 调用守护进程,该守护进程查询应用程序的“keychain-access-groups” “application-identifier”和“applicationgroup”权利。宁 限制访问单个进程,访问组允许密钥链 应用之间要共享的项目。钥匙串项目只能共享 来自同一开发者的应用之间。这是通过要求来管理的 第三方应用程序使用分配了前缀的访问组 通过应用程序组通过iOS Developer Program。前缀 需求和应用程序组唯一性通过代码强制执行 签名,供应配置文件和iOS开发人员计划。
使用类似于该类的类结构来保护钥匙串数据 用于文件数据保护。这些类具有等效的行为 提交数据保护类,但使用不同的键并且是其中的一部分 名称不同的API。
Apple Watch 它使用为iOS构建的安全功能和技术来帮助保护设备上的数据以及通信 配对iPhone和互联网。这包括技术 例如数据保护和钥匙串访问控制。用户的 密码也与设备UID纠缠在一起以创建加密 键。将Apple Watch与iPhone配对使用带外保护 (OOB)进程交换公钥,然后是BTLE链接 共同的秘密。 Apple Watch显示动画图案,即 在iPhone上被相机捕获。该模式包含编码 用于BTLE 4.1带外配对的秘密。标准BTLE 如有必要,密码输入用作后备配对方法。一旦 BTLE会话建立,Apple Watch和iPhone交换密钥 使用从IDS改编的流程,如iMessage部分所述 这篇论文。交换密钥后,蓝牙会话 密钥被丢弃,以及Apple Watch和Apple之间的所有通信 iPhone使用IDS加密,加密的BTLE和Wi-Fi 提供辅助加密层的链接。利用关键滚动 以15分钟的间隔限制曝光窗口,应该是交通 损害。为了支持需要流数据的应用,加密就是 使用FaceTime部分中描述的方法提供 纸,利用配对iPhone提供的IDS服务。苹果 Watch实现了硬件加密存储和基于类的保护 文件和钥匙串项目,如数据保护中所述 本文的一节。钥匙链物品的访问控制钥匙包 也被使用。用于手表和手表之间通信的按键 iPhone也使用基于类的保护进行保护。当Apple Watch 不在蓝牙范围内,可以使用Wi-Fi。 Apple Watch 不会加入Wi-Fi网络,除非这样做的凭据 出现在配对的iPhone上,它提供了已知的列表 网络自动到手表。 Apple Watch可以手动完成 通过按住侧面按钮锁定。此外,动议 启发式用于尝试自动锁定设备 从手腕上取下后不久。锁定后,Apple Pay 不能用。如果手腕检测提供的自动锁定是 在设置中关闭,Apple Pay被禁用。手腕检测是 关闭使用iPhone上的Apple Watch应用程序。此设置也可以 使用移动设备管理强制执行。配对的iPhone也可以 如果佩戴手表,请解锁手表。这是 通过建立由密钥验证的连接来完成 在配对期间建立。 iPhone发送手表使用的密钥 解锁其数据保护密钥。手表密码未知 iPhone也不传输。可以使用此功能关闭此功能 iPhone上的Apple Watch应用程序。 Apple Watch只能与一个配对 iPhone一次。与新iPhone配对会自动删除所有内容 来自Apple Watch的内容和数据。启用“查找我的电话” 配对的iPhone还可以在Apple Watch上启用Activation Lock。激活 Lock使任何人都难以使用或销售具有的Apple Watch 丢失或被盗激活锁定需要用户的Apple ID和 用于取消配对,删除或重新激活Apple Watch的密码。
答案 1 :(得分:3)
是
如果您的钥匙串值没有变化,并且您反复更新应用程序上下文,您可能希望安排仅发送一次值(以便将手表添加到其钥匙串中),而不是重复重新发送钥匙串价值。
Apple工程师在开发人员论坛上讨论using Watch Connectivity to send keychain items:
如果手机上有您想要访问手表的数据,您的应用可以使用WatchConnectivity传输所需的特定数据和钥匙串项目。 Apple Watch上的钥匙串包含来自配对iPhone上钥匙串的一组不同条目,因此如果您在两个地方都需要一些东西,您可以为每个设备生成一次,也可以使用WatchConnectivity在它们之间进行转移。
<强>更新强>
在watchOS 2中,Watch Connectivity是一种在配对手机和手表之间传输数据的机制。根据{{3}},设备之间的通信是加密的。
至于字典是否可以在内存中访问,或者在扩展程序收到之前它是如何保留的,我认为你必须依靠Apple来解决任何可能的漏洞。
可能有理由说信息不是作为钥匙串的安全地点,直到您的分机醒来,收到更新,然后将值存储在钥匙串。
答案 2 :(得分:2)
Apple的回应:
应用程序的内容在传输过程中已加密。否则内容 存储在应用程序的容器中,提供固有的安全性 容器。
以下是安全白皮书的链接。 https://www.apple.com/business/docs/iOS_Security_Guide.pdf
对于在途部分,你应该看看“Apple Watch” “App Security”下的部分。对于容器的相关部分 安全性,你应该看看“文件数据保护”部分 在“加密和数据保护”下。