保护iOS中的数据。钥匙串或任何其他方法?

时间:2017-11-01 10:22:04

标签: ios swift encryption

我是iOS的新手,正在开发一个应用程序,我需要在API端点返回的令牌的基础上维护会话。我查了一下,发现安全数据不应存储在用户默认值中,因此我选择了Keychain。我的问题是:

  • Keychain足够安全吗?
  • 还有其他好的选择吗?
  • Keychain加密后是否存储值(默认行为)?
  • 如果没有,那么加密/解密与Keychain一起使用的正确方法是什么?

目前我使用的Keychain相关命令如下:

import SwiftKeychainWrapper //installed through Cocoapods

    //Storing
    let saveTokenSuccessful: Bool = KeychainWrapper.standard.set(token!, forKey: "myToken") 

    //Retrieving
    let retrievedToken: String? = KeychainWrapper.standard.string(forKey: "myToken")

    //Deleting  
    let removeTokenSuccessful: Bool = KeychainWrapper.standard.remove(key: "myToken")

2 个答案:

答案 0 :(得分:2)

  

Keychain足够安全吗?

我会这么说,可能取决于您数据的敏感度。

  

Keychain加密后是否存储值(默认行为)?

来自文档:

  

加密是GCM中的AES 128(伽罗瓦/计数器模式)

Apple过去发布了一篇关于iOS安全性的论文,这可能是一个很好的阅读。你可以找到它here

有关keychains的更多信息。

答案 1 :(得分:1)

Keychain是一个很好的解决方案,因为数据在存储到文件系统之前会自动加密。 来自Apple doc

  

...当用户解锁设备时,钥匙串会自动解锁,然后在设备锁定时锁定。应用程序只能访问自己的钥匙串项目,或者与应用程序所属的组共享的项目。