C# AES加密中的脆弱IV和salt

C# AES加密中的脆弱IV和salt,c#,encryption,aes,C#,Encryption,Aes,我正在检查这个AES加密/解密项目 但我读到它有静脉注射和盐渍的弱点。这些漏洞是如何发生的 我知道AES不会受到已知的明文攻击,但是如果这个实现是错误的,有没有一种简单的方法可以破坏它并获取密钥或明文?该代码包含多个版本。使用随机salt的最后一个版本(使用salt获得随机加密结果)几乎可以 如您所见,IV是从PBKDF2生成的,这意味着当使用相同的salt和密码时将生成相同的IV。这是一种不理想的效果,因为这意味着相同的明文将创建相同的密文。攻击者可能仅通过观察密文推断您再次发送了相同的消息。

我正在检查这个AES加密/解密项目

但我读到它有静脉注射和盐渍的弱点。这些漏洞是如何发生的


我知道AES不会受到已知的明文攻击,但是如果这个实现是错误的,有没有一种简单的方法可以破坏它并获取密钥或明文?

该代码包含多个版本。使用随机salt的最后一个版本(使用salt获得随机加密结果)几乎可以

如您所见,IV是从PBKDF2生成的,这意味着当使用相同的salt和密码时将生成相同的IV。这是一种不理想的效果,因为这意味着相同的明文将创建相同的密文。攻击者可能仅通过观察密文推断您再次发送了相同的消息。这当然在语义上是不安全的,这就是为什么一些随机性是必要的解决这个问题的方法是使用随机盐。

此代码的另一个问题是1000次迭代次数太少。现在,应该使用至少60000到几百万次的迭代计数。否则,攻击者很容易尝试许多常用密码并找到您使用的密码。因此,增加迭代次数也会严重限制脱机攻击者的吞吐量

该代码的另一个重要问题是,没有对密文进行身份验证。根据您的系统体系结构,攻击者可能会发起填充oracle攻击,并解密您通过多个联机查询发送的任何密文。防止这种情况发生的方法是使用经过身份验证的操作模式,如GCM或EAX,或采用具有强MAC的方案,如HMAC-SHA256

最后一个问题是PBKDF2用于从密码派生密钥和IV


我找到了似乎没有上述任何问题的地方。

仔细分析。代码共享网站上的另一段可怕的代码,由于极度不安全而获得近5分。我应该列个清单什么的。自食其力;尖沙咀。