iOS应用数据加密与公钥/私钥



我是新的主题,并将感谢如何实现iOS应用程序的公钥/私钥加密的任何帮助/方向。看起来安全框架会做我需要的,但我想确保我有最好的建议。

基本上,用户A和用户B希望安全通信。用户A将拥有用户B的公钥,并使用该公钥加密消息。然后用户B获取消息并使用私钥对其进行解密。

所以我猜问题是:

  1. 生成公钥/私钥的最佳方法是什么?是OpenSSL吗?

  2. 如果是OpenSSL,是否有办法在iOS设备内做到这一点,或者我是否需要依赖服务器/外部生成私钥/公钥?

  3. 如果在iOS设备之外生成私钥/公钥是唯一的选择,这是一个简单的问题,使iOS设备通过HTTP请求密钥文件,像一个正常的下载?

  4. 当最终用户拥有公钥和私钥时,是否有一个简单的教程/示例显示如何使用RSA加密和解密消息(是RSA选项btw)?

  1. 尽可能避免OpenSSL,在OSX/iOS上使用Apple加密方法。
  2. 在服务器端OpenSSL可能是你最好的选择。
  3. 可以使用https安全地传输密钥
  4. 以下链接提供了很好的示例代码:

使用SecKeyGeneratePair()生成密钥,参见SO Question示例代码。

使用SecItemCopyMatching ()获取传输密钥,参见SO Answer示例代码。

执行RSA加密的示例代码见此SO答案

指出:

私钥/公钥在同一台机器上一起生成。公钥可以很容易地公开共享,但问题是对公钥进行身份验证。https是传输密钥的可行方法。

通常数据不使用公钥/私钥进行加密/解密。这有两个原因:它非常慢,它的数据大小有限(受密钥大小的限制)。一般来说,数据是用对称的方法加密的,比如AES和一个随机密钥,密钥用公钥加密,用私钥发送和解密。然后使用该密钥对AES加密的实际数据进行解密。

OpenSSL不再由Apple提供,您需要获得一个您喜欢的源代码版本并自己构建它。不提供OpenSSL的原因是小版本不向后兼容,当苹果提供当前版本和开发人员使用不兼容的旧版本的应用程序时,会产生问题。

教程:Google it.

最新更新