如何将AES初始化Vector传递给客户端以实现混合密码系统

Fai*_*oor 9 encryption rsa aes public-key private-key

我需要为客户端 - 服务器通信实现安全性.我已经实现了以下混合密码系统

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

  1. 获得Alice的公钥.
  2. 为数据封装方案生成新的对称密钥.
  3. 使用刚刚生成的对称密钥在数据封装方案下加密消息.
  4. 使用Alice的公钥加密密钥封装方案下的对称密钥.
  5. 将这两种加密发送给Alice.

为了解密这个混合密文,Alice执行以下操作:

  1. 使用她的私钥来解密密钥封装段中包含的对称密钥.
  2. 使用此对称密钥来解密数据封装段中包含的消息.

我使用RSA用于公钥密码系统,AES用于对称密钥密码系统.每件事都很好,但我不知道如何处理AES初始化向量.目前,我正在连接AES密钥和初始化向量,用公钥加密它并将其发送到服务器.

我只想对这种方法有所了解.如何通过其他通信协议SSL等解决此问题

谢谢.

eri*_*son 10

你不加密IV.将其与加密密钥捆绑在一起并将其(以明文形式)发送给收件人.

这方面的标准确实存在.该方案在CMS中称为"KeyTransRecipientInfo"(S/MIME基于该方案),并且PGP提供类似的模式.TLS还包括初始化向量作为密钥加密算法标识符中的参数,使用与CMS相同的ASN.1语法.许多很多平台都可以使用强大的开源库来执行此操作.

至少,研究CMS规范可能有助于避免家庭酿造实施中的许多陷阱.请参阅RFC 3369的§6.1和§6.2.1.