iOS 钥匙串在设备之间共享数据

Posted

技术标签:

【中文标题】iOS 钥匙串在设备之间共享数据【英文标题】:iOS Keychain Sharing Data Between Devices 【发布时间】:2014-04-24 21:45:26 【问题描述】:

我有一堆应用程序使用同一个钥匙串组来共享一些敏感数据。在同一设备上测试应用程序时效果很好,它们可以访问和编辑共享数据。我想知道是否可以在 iDevices 之间共享数据,我的 iPad (ios 7) 和 iPhone (iOS 6) 似乎将它们分开存储(是本地的吗?),我认为它被安全地存储在 Apple 的服务器中,因为它被称为 iCloud钥匙链。

我使用来自RayWenderlich tutorial 的KeychainWrapper 类,稍作修改以获得唯一的钥匙串访问组。

+ (NSMutableDictionary *)setupSearchDirectoryForIdentifier:(NSString *)identifier 
    ...
    //Added this line 
    [searchDictionary setObject:KEYCHAINGROUP forKey:(__bridge id)kSecAttrAccessGroup];
    ...
    return searchDictionary;

是否可以使用 Keychain 在设备和应用程序之间同时共享数据?如果是我应该如何实现它?

【问题讨论】:

【参考方案1】:

现在您可以将 kSecAttrSynchronizable 属性添加到钥匙串的项目中,以便通过 icloud 在设备之间进行同步: https://developer.apple.com/documentation/security/ksecattrsynchronizable

还不如使用一个特殊的库,比如 KeychainAccess 来管理钥匙串(检查这个answer)

【讨论】:

【参考方案2】:

Keychain 将数据存储在本地设备上。如果您需要在设备之间共享敏感数据,您可以将数据加密并存储在 iCloud 上。

【讨论】:

以上是关于iOS 钥匙串在设备之间共享数据的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iOS 应用程序之间共享钥匙串数据

在设备之间共享 iOS sqlite 数据库的最佳方式是啥

我可以使用 RFCOMM 蓝牙协议在 iOS 设备和另一台设备之间共享数据吗?

在 iOS 上的应用程序之间共享数据

在 iOS App 和 Todays Extension 之间共享数据

如何在两个 iOS 应用之间共享应用内购买数据?