1

我的可可应用程序将具有以下功能: 1. 密码保护登录。用户必须输入密码才能使用该应用程序 2. 登录后,用户可以创建一些个人资料,该资料可以存储一些安全信息,如密码。

经过一番研究,我被告知我应该使用 KeyChain 来保存安全信息(所以在我的情况下,每个个人资料中的登录密码和安全信息)。

似乎有一个很好的 KeyChain 包装器 SSKeyChain 可以用来实现我的目标(因为我对 c lang 不太熟悉,所以使用苹果的钥匙串对我来说很难)而且我还找到了一些使用 SSKeyChain 的示例iOS:如何在应用程序中存储用户名/密码?

To save a password:

[SSKeychain setPassword:@"AnyPassword" forService:@"AnyService" account:@"AnyUser"]
To retrieve a password:

NSString *password = [SSKeychain passwordForService:@"AnyService" account:@"AnyUser"];

但是我不确定我是否需要“保护”我的钥匙串: 1. 调用 setPassword:forService:account 时:我应该包含明文密码吗?还是我需要先加密我的密码?同样在设置服务名称时,我是否应该只包含我的应用程序名称 2. 如果可以使用 passwordForService: 轻松检索密码,那么它似乎不安全?因为其他应用程序也可以调用相同的方法来检索钥匙串?(前提是他们知道服务名称和帐户)

我已阅读苹果文档:https ://developer.apple.com/library/mac/#documentation/security/conceptual/keychainServConcepts/02concepts/concepts.html#//apple_ref/doc/uid/TP30000897-CH204-TP9

似乎你必须“锁定”和“解锁”这个钥匙串。我检查了 SSKeyChain 文档http://docs.samsoff.es/SSKeychain/Classes/SSKeychain.html但找不到任何“锁定”和“解锁”此类钥匙串的方法。那我要怎么保护呢?

4

1 回答 1

1

默认情况下,系统中的钥匙串服务将每个应用程序限制为只能访问其自己的钥匙串项目。锁定和解锁都在 Keychain Services 的幕后处理。

当您使用 Xcode 创建应用程序时,Xcode 会向应用程序包添加应用程序标识符权利。Keychain Services 使用此权利授予应用程序访问其自己的钥匙串项的权限。

http://developer.apple.com/library/mac/#documentation/Security/Reference/keychainservices/Reference/reference.html

于 2013-05-07T18:06:34.340 回答