代码之家  ›  专栏  ›  技术社区  ›  Faisal Mansoor

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

  •  9
  • Faisal Mansoor  · 技术社区  · 16 年前

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

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

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

    1. 使用她的私钥解密密钥封装段中包含的对称密钥。

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

    3 回复  |  直到 13 年前
        1
  •  11
  •   erickson    16 年前

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

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

    §6.1 and §6.2.1 of RFC 3369.

        2
  •  2
  •   Eric Petroelje    16 年前

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

    您也可以只发送密钥并使用密钥本身来生成IV,例如,使用密钥散列的前128位作为IV。只要您为每个会话生成一个新的AES密钥,并且不对同一个IV反复使用同一AES密钥,这应该是安全的。

        3
  •  2
  •   Keith Randall    16 年前

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

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

    推荐文章