【问题标题】:Client server AES encryption客户端服务器AES加密
【发布时间】:2009-11-22 13:03:59
【问题描述】:

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

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

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

您认为这是实现此功能的最佳方式吗?

有没有办法让第一个客户端编码和第二个客户端解码而不受服务器干扰?

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


您对以下解决方案有何看法?

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

【问题讨论】:

    标签: aes


    【解决方案1】:

    您也可以使用Diffie–Hellman key exchange。您使用什么编程语言?

    【讨论】:

    • 我正在用 C++ 编写如何使用 Diffie-Hellman?你的意思是DH的输出密钥将用作AES密钥?我认为它不允许我只在客户端执行编码/解码。我忘了提到客户端可能会将数据发送给多个接收客户端
    • Diffie Hellman 不够安全,因为它很容易被中间人攻击
    【解决方案2】:

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

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

    【讨论】:

    • RSA 或任何其他非对称算法是否优于派生函数?
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-17
      • 1970-01-01
      • 2012-01-09
      • 2015-10-29
      • 2011-08-19
      • 2021-01-02
      相关资源
      最近更新 更多