Encryption 混合密码系统中AES初始化向量与客户端的通信

Encryption 混合密码系统中AES初始化向量与客户端的通信,encryption,rsa,aes,public-key,private-key,Encryption,Rsa,Aes,Public Key,Private Key,我需要为客户机-服务器通信实现安全性。我已经实现了以下几点 要在混合密码系统中加密发送给Alice的消息,Bob执行以下操作: 获取Alice的公钥 为数据封装方案生成新的对称密钥 使用刚刚生成的对称密钥在数据封装方案下加密消息 使用Alice的公钥在密钥封装方案下加密对称密钥 将这两个加密发送给Alice 要解密此混合密文,Alice执行以下操作: 使用她的私钥解密密钥封装段中包含的对称密钥 使用此对称密钥解密数据封装段中包含的消息 我将RSA用于公钥密码系统,AES用于对称密钥密码系统。每件

我需要为客户机-服务器通信实现安全性。我已经实现了以下几点

要在混合密码系统中加密发送给Alice的消息,Bob执行以下操作:

  • 获取Alice的公钥
  • 为数据封装方案生成新的对称密钥
  • 使用刚刚生成的对称密钥在数据封装方案下加密消息
  • 使用Alice的公钥在密钥封装方案下加密对称密钥
  • 将这两个加密发送给Alice
  • 要解密此混合密文,Alice执行以下操作:

  • 使用她的私钥解密密钥封装段中包含的对称密钥
  • 使用此对称密钥解密数据封装段中包含的消息
  • 我将RSA用于公钥密码系统,AES用于对称密钥密码系统。每件事都很好,但我不知道如何处理AES初始化向量。目前,我正在连接AES密钥和初始化向量,用公钥对其进行加密并将其发送到服务器

    我只是想得到一些关于这种方法的意见。如何通过其他通信协议SSL等解决此问题


    谢谢。

    我做了同样的事情,我用同样的方法处理它——将AES密钥与IV连接起来,并对它们进行加密


    您也可以只发送密钥并使用密钥本身来生成IV,例如,使用密钥散列的前128位作为IV。只要您为每个会话生成一个新的AES密钥,并且不反复使用相同的AES密钥和相同的IV,就可以安全地进行加密。

    静脉注射-你可以用透明的方式发送。只需确保每次都选择一个新的(与使用AES键的方式相同)


    也就是说,将AES密钥和IV打包在一起通常很方便。16字节的加密没有那么昂贵。

    您不需要加密IV。将其与加密密钥捆绑,然后(以明文形式)发送给收件人

    这方面的标准确实存在。该方案在CMS(S/MIME基于CMS)中称为“KeyTransRecipientInfo”,PGP提供了类似的模式。TLS还将初始化向量作为参数包含在密钥加密算法标识符中,使用与CMS相同的ASN.1语法。一个健壮的、开源的库来执行此操作,可用于许多平台

    至少,研究CMS规范可能有助于避免家用brew实现中的一些陷阱。看