Security 客户端-服务器安全连接握手

Security 客户端-服务器安全连接握手,security,encryption,cryptography,Security,Encryption,Cryptography,我想知道在创建安全的客户机-服务器连接的方式上是否存在任何安全问题 注意:我知道这类问题最明显的答案是只使用SSL/TLS,但我希望您能回答我的具体情况 我的连接协议如下(以下通信为未加密的纯文本): 客户端连接到服务器套接字 服务器向客户端发送2048位公钥 客户端生成一个256位AES密钥,用接收到的公钥RSA对其进行加密,并将其发送到服务器(服务器解密并获得AES密钥) 客户机生成一个256位HMAC密钥,将其加密为客户机嵌入的公开RSA密钥,并将其发送到服务器(服务器将其解密并获得秘密H

我想知道在创建安全的客户机-服务器连接的方式上是否存在任何安全问题

注意:我知道这类问题最明显的答案是只使用SSL/TLS,但我希望您能回答我的具体情况

我的连接协议如下(以下通信为未加密的纯文本):

  • 客户端连接到服务器套接字
  • 服务器向客户端发送2048位公钥
  • 客户端生成一个256位AES密钥,用接收到的公钥RSA对其进行加密,并将其发送到服务器(服务器解密并获得AES密钥)
  • 客户机生成一个256位HMAC密钥,将其加密为客户机嵌入的公开RSA密钥,并将其发送到服务器(服务器将其解密并获得秘密HMAC密钥)
  • 服务器向客户端发送AES密钥的HMAC,证明其拥有与客户端嵌入的公钥对应的私有RSA密钥,并证明服务器的真实性

  • 所有进一步的通信都用AES加密,并用HMAC验证。

    < P>中间的人可以很容易地将自己的公钥发送给客户端,并从服务器接收原始公钥。< / P>
    然后它可以从两个方向窃听对话。

    我投票将这个问题作为离题题结束,因为这与软件开发没有直接关系。这很容易受到攻击,因为公钥的来源从未被验证过。我想说,这与软件开发有直接关系,因为它是我正在制作的软件的一部分。在我看来,即使从服务器接收到的初始公钥来源未知,当服务器必须解密使用客户端嵌入公钥加密的消息时(步骤4和5),整个连接也会失败。答案仍然是TLS。别以为你能改进它。你不能。你在这里要问的事实就是充分的证据。