这个有可能。
您可以只使用 RSA 公钥加密算法,而无需 PGP 或 X.509v3 围绕它们的任何开销和基础设施。
- 生成公私密钥对。
- 将私钥安全地存储在服务器上。好好保护它。
- 将公钥分发给 iPhone 应用程序。
- iPhone 应用程序使用公钥加密数据。
- iPhone 应用程序将加密数据发送到服务器。
- 服务器使用私钥解密加密数据。
openssl您可以使用命令行工具来玩转这个想法:
在服务器上运行:
$ openssl genrsa -out myprivatekey.pem 2048
$ openssl rsa -in myprivatekey.pem -pubout -out mypublickey.pem
将 mypublickey.pem 复制到客户端,并在客户端在 data.dat 中创建一些数据并运行:
$ openssl rsautl -encrypt -pubin -inkey mypublickey.pem -in data.dat -out enc.dat
将 enc.dat 发送到服务器,然后在服务器上运行:
$ openssl rsautl -decrypt -inkey myprivatekey.pem -in enc.data -out data2.dat
公钥不必受到保护,因此您可以以任何您想要的方式将其分发到 iPhone 应用程序。例如,将其嵌入到应用程序中,将其放在公共 Web 服务器上,通过不安全的电子邮件将其发送给客户端。如果坏人得到它是没有问题的。
注意:在示例中,我创建了一个 2048 位 RSA 密钥。请记住,对于非对称算法(即公钥算法),您需要更长位长度的密钥才能实现与用于对称算法的密钥相同的安全级别。不要以为 128 位 AES 加密非常强大,所以我将创建一个 128 位 RSA 密钥——这对于 RSA 密钥来说太短了,并且不会给你期望的安全强度。
现在您只需要通过在代码中调用 openSSL 库来实现它。