2

我正在开发一个电子银行 iphone 应用程序。
我正在使用带有 XML 签名的 WSS 来签署对客户 SOAP 服务器的请求。
由于无法信任 iPhone 设备(由于越狱),客户要求在将密钥存储到钥匙串之前手动加密 RSA 密钥对(使用 AES128)。

从我目前发现的情况来看,密钥在生成时会自动添加到钥匙串中。
所以我的想法是之后提取数据(与 CryptoExercise 示例中提取公钥的方式相同),从钥匙串中删除钥匙,进行 AES 加密并将其作为自定义 NSData 再次存储到钥匙串中。

1)你觉得这有什么问题吗?
我在某处读到检索数据或删除密钥可能需要某种密码,尽管我没有得到什么密码。我将在今天晚些时候尝试此操作,如果在此期间没有发布答案,我将发布答案:)

2)如果没有在代码中实施更多黑客攻击,我找不到是否有任何方法可以使用此密钥?
它看起来像 SecKeyRawSign 方法只接受一个 SecKeyRef 引用,它是指向钥匙串中的密钥的指针。是否有其他使用密钥的 NSData 进行签名的方法?
我目前唯一的想法是在签名前使用 SecItemAdd 方法将未加密的密钥添加到钥匙串中,并在签名后将其删除。但我不喜欢这样,因为它会一直发生,如果应用程序在从钥匙串中移除之前关闭(崩溃或其他情况),它将一直保留在那里,直到下一次启动应用程序。

有更好的解决方案的想法吗?

问候

4

1 回答 1

1

考虑检查 Apple 示例和文档的安全性。框架: https ://developer.apple.com/library/ios/#DOCUMENTATION/Security/Conceptual/CertKeyTrustProgGuide/iPhone_Tasks/iPhone_Tasks.html#//apple_ref/doc/uid/TP40001358-CH208-SW13 - 请参阅此链接

于 2012-05-10T12:43:45.853 回答