我的程序要求用户创建一个4位数的密码(非常类似于iPhone内置的解锁屏幕)。程序将存储密码并根据以后输入的密码对其进行测试,并拒绝或允许访问文档的tableview。我还需要在iCloud中存储密码,另外一个设备想要使用相同的文档数据库。我不需要存储用户名信息。
我一直在阅读有关使用钥匙串的内容,但这对我的目的来说似乎有些过分。我是安全的初学者,不知道该做什么和不该做什么。任何人都可以指出我正确的方向,我可以阅读哪些文件或教程适合我的申请?谢谢你的帮助。
更新
关于使用钥匙串回复以下答案的说明:
如果我要使用钥匙串,我会受到苹果文档的印象,我无法将该密码存储在iCloud上。这提出了一个有趣的问题,因为在iCloud上存储文档是我的应用程序的基本行为,因为用户需要访问受多个设备上的密码保护的同一组文档。我该如何处理这个问题?是否有一种已知的安全方法可以解决这个问题,还是我必须完全放弃使用钥匙串?
答案 0 :(得分:2)
您是打算将假装安全措施进行简单的字符串比较,还是实际上加密私有数据而只是使用故意弱的密钥?
这两种方法都有效,但我认为您的用户期望后者。 (他们会upset if someone read their data in plain text right out of the phone backup dumps吗?)
如果您实际上是使用故意弱密钥加密他们的数据,那么您肯定应该使用内部钥匙串,并且可能使用PBKDF2根据非常短的时间制作有用的密钥您可以获得的秘密数据量。任何其他方法可能会让您陷入尴尬境地或彻头彻尾的恶意用户。让Apple尽可能多地管理。 (不要将密钥存储在iCloud中。)
请注意,使用钥匙串和PBKDF2 仍会让用户的数据保持开启状态,非常容易进行暴力关键猜测,但必须使用这样的短按键。
答案 1 :(得分:2)
我认为SHA1对你的目的有好处 只记得在原始字符串中添加一些“salt” 我2年前在iphone App Obj-C上做过,应该是直截了当的 这篇文章可能有帮助 Objective C: SHA1 :)希望它有所帮助