为什么keychain比保存在文件中的加密数据更安全?

时间:2015-10-20 11:09:55

标签: ios objective-c iphone

为什么keychain比在iOS应用程序的文档目录中保存为文件的加密数据更安全。

5 个答案:

答案 0 :(得分:2)

通常,数据使用对称加密算法(如AES)加密,加密密钥保存在钥匙串中。数据可以放在任何文件位置,保护是通过加密算法和密钥。

钥匙串存储加密的密钥(和其他小数据),并限制对该数据的访问。此外,在最近的iPhone(5S及更高版本)中,钥匙串位于单独的处理器中,Secure Enclave还限制了访问。没有更安全的方法来在iOS中存储密钥。

答案 1 :(得分:1)

可以使用iExplorer和其他第三方应用程序访问文档文件夹。

实际上,根据苹果推荐,钥匙链仅用于少量数据。

大多数移动应用程序必须与需要身份验证的Web服务进行交互。服务通常需要身份验证才能提供个性化内容(如社交网络)或限制对敏感信息(如公司数据)的访问。最常见的是,身份验证需要用户名和密码。大多数iOS应用程序将这些凭据存储在Keychain中 - 这是Apple为iPhone和iPad应用程序提供的密码管理系统,用于安全地存储小块敏感信息,例如用户名,密码,令牌,证书,用于非对称加密的私钥以及用于密钥的密钥。对称加密。

本文将介绍公司在iOS Keychain中存储这些凭据时保护对公司资源的访问所需的信息,以及保护安全的个人保护存储在Keychain中的个人密码所需的信息。

有许多条件会影响应用程序存储在钥匙串中的数据的安全性:

设备上密码的存在和强度 分配给应用程序的Keychain项目的访问限制 该设备是否已越狱 设备中使用的芯片组

答案 2 :(得分:1)

Apple's Documentation很好地涵盖了这个主题。与其他人所说的相反,钥匙串没有存储在Secure Enclave中。

钥匙串元数据(kSecValue以外的所有其他属性)使用元数据密钥加密,以加快搜索速度,而秘密值(kSecValueData)使用密钥加密。元数据密钥受Secure Enclave保护,但被缓存在应用处理器中,以允许快速查询密钥链。密钥始终需要通过安全区域进行往返。

钥匙串是作为SQLite数据库实现的,存储在文件系统中。

这意味着,尽管“钥匙串”和“文档”文件夹都存储在磁盘上,但“钥匙串”更为安全,因为它需要将加密密钥存储在单独的硬件(“安全保护区”)中,并且不能通过软件访问该加密密钥

截至本博文发布大约七年后,从未从Secure Enclave内部泄露敏感数据。

答案 3 :(得分:0)

答案 4 :(得分:-1)

钥匙串数据也可以使用与文档目录中的数据类似的方式加密。钥匙串不存在大量数据的区别。

文档目录使数据不安全,因为它可以通过方法调配轻松访问,并且可以破坏加密。钥匙串中的数据消除了这一缺点,并且通过加密,可以为数据提供更好的安全性。