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

时间:2015-10-30 18:44:27

标签: encryption server client rsa

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

1 个答案:

答案 0 :(得分:0)

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

问题当然是安全地获取客户的公钥。如果你可以在客户端代码中嵌入公钥,那么这是好的,但如果没有,那么这很容易受到中间人攻击。

您应该使用已建立的协议(如TLS),而不是滚动自己的加密,因为有很多可能出错。

上述协议过于简单,并未实现完美的前向保密。如果您需要,那么您需要在此基础上运行密钥协商协议,例如使用Diffie-Hellman密钥交换。