在服务器和客户端之间共享 RSA 密钥

sharing RSA keys between the server and the client

所以我正在开发一个客户端使用 RSA (java) 加密数据并将其发送到必须完成解密的服务器 (php) 的应用程序! 所以问题是我如何在客户端和服务器之间共享密钥? 仅供参考,客户端正在使用 GET 方法发送加密数据,因此我无法发送带有加密数据的密钥,因为在这种情况下,每个人都可以看到它并解密信息 有什么想法吗?

执行此操作的唯一方法是让客户端启动连接。您将在服务器上生成一个密钥对并(安全地)将 public 密钥发送到客户端。然后客户端可以用 public 密钥加密一个对称会话密钥并发送给服务器。现在,服务器可以解密收到的数据包并恢复会话密钥(例如 AES)。

问题当然是如何安全地获取客户端的public密钥。如果您可以在客户端代码中嵌入 public 键,那么这还算可以,但如果不能,那么这很容易受到中间人攻击。

与其推出自己的加密货币,不如使用 TLS 等既定协议,因为有很多地方可能出错。

上述协议过于简单,并没有实现完美的前向保密。如果你想要那个,那么你需要 运行 一个密钥协议协议,例如 Diffie-Hellman 密钥交换。