收藏
回答

【安全问题】微信公众号消息加解密使用了AES不安全的填充算法,且IV固定。是否计划改进?

如下图,微信公众号提供的消息加解密算法,使用了NoPadding 和 固定IV,存在一定安全隐患,请问能否改进?

最后一次编辑于  2021-06-10
回答关注问题邀请回答
收藏

1 个回答

  • 小张
    小张
    2021-06-10

    如何得出存在安全隐患的?

    2021-06-10
    有用
    回复 1
    • 青红造了个白
      青红造了个白
      2021-06-15
      初始向量的值依密码算法而不同。最基本的要求是“唯一性”,也就是说同一把密钥不重复使用同一个初始向量。这个特性无论在区块加密或流加密中都非常重要。
      示例: 对明文P做流加密,转换成密文C。所使用的是流密钥K,它来自密钥与初始向量。我们可以得到等式:C = P xor K。假如攻击者得知密文C1与C2来自同一把密钥与初始向量。那么攻击者就能透过底下公式得到明文P1与P2:C1 xor C2 = (P1 xor K) xor (P2 xor K) = P1 xor P2.
      许多要求初始向量必须让攻击者无法预测。这种要求一般使用随机数或拟随机数来达到。在这种应用中,重复的初始向量是可以被忽略的,但是生日攻击的问题依然得列入考量,因为若向量可以被预测,会让攻击者找到撤销明文的线索。
      示例: 比如A使用CBC模式加密消息,而有一位攻击者E能截看所有密文并指定特定的明文给A,让A进行加密(即,E有办法运行选择明文攻击)。接着,我们假设A用明文PAlice与初始向量IV1做出密文CAlice。然后E设计了明文PEve,并能控制或得知初始向量IV2的出现。那么E就可以反复测试,直到E设计的明文被加密后等于密文CAlice。自此,E用以下公式得知自己设计的明文PEve等于明文PAlice
      CAlice = E(IV1 xor PAlice) = E(IV2 xor (IV2 xor IV1 xor PAlice)).[6]
      初始向量的值主要还是取决于密码算法。其做法不外乎就是随机或指定(stateful)。使用随机的方式则取值由发送方计算,并要将向量值送交给接收方。指定的方式则是让收发两方分享初始向量所能指定的所有值(state),这些值收发双方必须预先就定义好。
      https://zh.wikipedia.org/wiki/%E5%88%9D%E5%A7%8B%E5%90%91%E9%87%8F
      2021-06-15
      1
      回复
登录 后发表内容