我正在开发 iPhone 电子银行应用程序。
我正在使用带有 XML 签名的 WSS 对发送给客户的 SOAP 服务器的请求进行签名。
由于iPhone设备不可信(由于越狱),客户
要求是在将 key 存储到钥匙串(keychain)之前手动加密 RSA key 对(使用 AES128)。
据我目前所知, key 在生成时会自动添加到钥匙串(keychain)中。
所以我的想法是随后提取数据(与 CryptoExercise 示例中提取公钥的方式相同),从钥匙串(keychain)中删除 key ,进行 AES 加密并将其作为自定义 NSData 再次存储到钥匙串(keychain)中。
1)您发现这有什么问题吗?
我在某处读到检索数据或删除 key 可能需要某种密码,尽管我不知道密码是什么。我将在今天晚些时候尝试此操作,如果在此期间没有发布答案,我将发布答案:)
2)我无法找到是否有任何方法可以使用此 key 而不在代码中实现更多黑客攻击?
它看起来像 SecKeyRawSign 方法只接受 SecKeyRef 引用,它是指向钥匙串(keychain)中 key 的指针。是否有其他方法使用 key 的 NSData 进行签名?
我目前唯一的想法是使用 SecItemAdd 方法在签名之前将非加密 key 添加到钥匙串(keychain)中,并在签名后将其删除。但我不喜欢这种情况,因为它会一直发生,并且如果在从钥匙串(keychain)中删除 key 之前应用程序被关闭(崩溃或其他原因),它将保留在那里,直到下次应用程序启动时为止。
有更好的解决方案吗?
问候
最佳答案
考虑检查 Apple 示例和安全文档。框架: https://developer.apple.com/library/ios/#DOCUMENTATION/Security/Conceptual/CertKeyTrustProgGuide/iPhone_Tasks/iPhone_Tasks.html#//apple_ref/doc/uid/TP40001358-CH208-SW13 - 请参阅此链接
关于iphone - 使用私钥的 NSData 进行数据签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2826090/