4

我正在开发一个客户端服务器应用程序,其中数据通过服务器在两个客户端之间传输。

数据应该加密,我想使用AES。我的想法是使用PBKDF2从客户端的密码中获取 AES 密钥。

在这种情况下,客户端将对数据进行编码,服务器将对其进行解码,使用第二个客户端的密码对其进行重新编码并将其发送给第二个客户端。

您认为这是实现这一目标的最佳方式吗?

有没有办法让第一个客户端编码和第二个客户端在没有服务器干扰的情况下解码?

如何加密 AES 密钥并将其从一个客户端传输到另一个客户端?


您如何看待以下解决方案?

  1. 客户端和服务器使用 Diffie-Hellman 创建一个私有 AES 密钥(此密钥特定于每个客户端)。
  2. 传输客户端创建会话 AES 密钥并使用私有 AES 密钥对其进行编码。
  3. 服务器解密会话密钥并为会话中的每个客户端重新加密(使用每个客户端的私钥)。
  4. 传输客户端使用会话 AES 密钥加密数据并将其发送到服务器。
  5. 服务器将数据发送到所有接收客户端,无需任何处理。
4

3 回答 3

4

您还可以使用Diffie–Hellman 密钥交换。你使用什么编程语言?

于 2009-11-22T13:12:07.797 回答
3

您可以使用非对称加密算法安全地发送 AES 密钥,然后使用此密钥进行对称 AES 加密/解密。沟通可能是这样的:

  1. 客户端想要与带有加密消息的服务器通信。
  2. 客户端生成一对公钥/私钥并将公钥发送给服务器。
  3. 服务器使用公钥加密一些密钥并将其发送回客户端。
  4. 客户端使用他的私钥来解密秘密(现在双方都知道密钥来加密/解密他们的通信)。
  5. 客户端使用带有密钥的 AES 来加密他想要发送到服务器的消息。
  6. 服务器使用密钥来解密消息。
于 2009-11-22T13:08:05.447 回答
0

您必须首先创建自己的协议来通信程序的一部分,或者使用可用的安全协议,例如 HTTPS。我唯一可以告诉您的是,加密/解密等繁重的计算操作必须先由客户端传递,然后再由服务器进程传递可靠的请求。

于 2012-04-22T00:44:09.070 回答