Encryption 触摸ID认证概念

Encryption 触摸ID认证概念,encryption,ios,keychain,Encryption,Ios,Keychain,我目前正在开发一个iOS应用程序,其中我使用用户选择的密钥加密一些用户数据。数据可以存储在本地或iCloud中,也可以同时存储在两者中。我还想允许更快的访问,如4位pin码或绘图模式 在这两种情况下,我都可以将加密密钥存储在iOS密钥链中,并使用4位代码或模式字符串对其进行解密。基本上,我不会将主密钥以明文形式存储到密钥链中 问题是Touch ID。目前我正在将主密钥以明文形式存储到密钥链中,因为我不知道如何避免。如果有人能给我一个想法、概念、伪代码或任何东西,我会非常感激。问题是PIN和模式没

我目前正在开发一个iOS应用程序,其中我使用用户选择的密钥加密一些用户数据。数据可以存储在本地或iCloud中,也可以同时存储在两者中。我还想允许更快的访问,如4位pin码或绘图模式

在这两种情况下,我都可以将加密密钥存储在iOS密钥链中,并使用4位代码或模式字符串对其进行解密。基本上,我不会将主密钥以明文形式存储到密钥链中


问题是Touch ID。目前我正在将主密钥以明文形式存储到密钥链中,因为我不知道如何避免。如果有人能给我一个想法、概念、伪代码或任何东西,我会非常感激。

问题是PIN和模式没有包含足够的信息来创建安全密钥。它们只能用于解锁,因为您可以在尝试X次后拒绝登录,并且您可能无法自动完成登录过程

如果我没有弄错的话,iOS已经使用PIN码或图案来保护钥匙链了。苹果似乎确实在使用PIN码或密码模式进行加密,难怪iOS的密钥链保护很容易被破坏。但是,按照同样的原则构建自己的方案是没有用的,所以你最好还是坚持关键链


正确处理此问题的唯一其他方法是向用户请求一个强密码,在其上使用PBKDF2或bcrypt,并使用生成的密钥进行加密。

像这样的实现细节更容易引起堆栈溢出问题。密钥链不是已经加密了吗?我的印象是,这几乎就是它的全部意义。触摸ID是一个问题,问题是什么?2.将密钥存储在密钥链中时,无需对其进行加密。3.使用4位代码确实不安全。我知道4位代码不太安全,但这是用户的选择。因此,当触控ID被启用时,我只会将主密钥以明文形式存储在钥匙链中。我并不完全同意2。。在将数据保存到密钥链之前,可能需要对数据进行加密,因为越狱可能会破坏密钥链。在某些情况下,如保护公司敏感数据,这可能会造成问题。