如何检测iCloud钥匙串的更改

时间:2016-02-09 11:59:19

标签: ios cocoa icloud keychain

当iCloud(或任何)钥匙串发生变化(项目被添加/删除/更改)时,是否有办法获得通知?

类似于KVS中的NSUbiquitousKeyValueStoreDidChangeExternallyNotification

我想我可以直接在OSX上观看$ HOME / Library / Keychains文件夹,但有更好的选择吗? (这甚至可以在iOS上运行吗?)

1 个答案:

答案 0 :(得分:1)

AFAIK钥匙串服务,无论钥匙串只是本地钥匙串还是iCloud钥匙串,都不会宣布更改。您应该如何使用钥匙串也使得这样做非常值得怀疑。

存储在钥匙串中的密码数据受到保护,因为它始终是加密的。只有当您请求该数据时,它才会被临时解密,仅供您使用,并且解密的副本将传递到您的应用程序然后被丢弃。您应该将该解密副本用于您需要的任何任务,然后将其丢弃。

你为什么要丢弃它?因为在应用程序中保留它时不安全。根进程可以转储应用程序的所有内存,然后此转储将包含纯文本中的所有缓存密码。使用iOS中的安全漏洞,也许我们甚至还不知道,攻击者可能能够以root权限运行代码(毕竟,所有的监狱都是基于这样的漏洞,所以你看,他们确实存在。)

当你需要它时?然后你从钥匙串再次取回它。您每次需要时都会从钥匙串中获取密码。那么为什么需要检测变化呢?当你获取它时,你要么得到一个结果,在这种情况下,你总是有最新的密码存储到钥匙串,无论多久更新最后几分钟,或者你没有得到任何结果,因此知道有在钥匙串中没有这样的密码,因为从来没有一个或它已被删除。你需要处理" 从来没有密码"无论如何在你的应用程序中,通常你可以处理" 密码被删除"案件完全相同。