使用公钥/私钥的iOS App数据加密

时间:2014-06-18 17:01:21

标签: ios security encryption

我是该主题的新手,非常感谢有关如何为iOS应用程序实施公钥/私钥加密的任何帮助/指导。看起来安全框架会做我需要的,但我想确保我有最好的建议。

基本上,用户A和用户B想要安全地进行通信。用户A将拥有用户B公钥,并使用它来加密消息。然后,用户B获取消息并使用私钥对其进行解密。

所以我想问题是:

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

  2. 如果是OpenSSL,是否有办法在iOS设备中执行此操作,或者我是否需要依赖服务器/外部代的私钥/公钥?

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

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

1 个答案:

答案 0 :(得分:1)

  1. 如果可能,请避免使用OpenSSL,请在OSX / iOS上使用Apple加密方法。
  2. 在服务器端,OpenSSL可能是您最好的选择。
  3. 您可以使用 https 安全地传输密钥。
  4. 以下链接提供了良好的示例代码:
  5. 要使用SecKeyGeneratePair()生成密钥,请参阅SO Question以获取示例代码。

    要获取传输密钥SecItemCopyMatching (),请参阅SO Answer代码。

    例如,执行RSA加密的代码请参阅此SO Answer

    备注:

    私钥/公钥在同一台机器上一起生成。公钥可以轻松公开共享,但问题是验证公钥。 https 是传输密钥的可行方式。

    通常,数据不会使用公钥/私钥加密/解密。这有几个原因:它非常慢,数据量有限(受密钥大小限制)。通常,数据使用对称方法(例如AES和随机密钥)加密,密钥使用公钥加密,使用私钥发送和解密。然后该密钥用于解密AES加密的实际数据。

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

    有关教程:Google it。