2

我们的经典 ASP 应用程序有一个遗留部分,它使用一些代码,这些代码应该使用 Rijndael (AES) 加密/解密字符串。此代码是在Internet上找到的(Rijndael AES Block Cipher (VB Version))。我已经在 SO 上找到了一个问题,它引用了这个确切的库,并且问的问题与我几乎相同,但我怀疑至少有一件事情出错了(除了在字节数组的开头添加要加密的数据长度之外) )。vbScript 实现看起来根本不想向要加密的数据添加 IV。因此,我无法将相同的加密与 RijndaelManaged 匹配,因为它:

  1. 每次自动生成不同的 IV
  2. 绝对需要静脉注射

有人知道是否可以在不指定 IV(空)的情况下对 .Net 中的某些内容进行 AES 加密?

4

3 回答 3

6

您使用的代码和问题的解决方案都是完全不安全的。首先,*在任何情况下,您都不应该使用加密库,一些随机的人写道 *句号,故事结束。windows 和 .net 都有受信任、经过审查的加密库。他们没有诸如定时攻击问题、右门后门之类的事情,或者只是那些对加密货币一无所知的人会尝试的愚蠢的事情。

举个例子,你提到的图书馆似乎只支持ECB 模式。这是完全不安全的,任何知道他们在做什么的人都不会这样做。尽管有很多原因,但为什么不这样做的最好证明是:

在此处输入图像描述

这是 linux penguine 的 ecb 加密图片。不是很安全吗?

于 2012-04-25T17:50:11.173 回答
2

不,没有 IV,您无法在 CBC 模式下加密任何内容。但是,您可以将 IV 显式设置为 al zero's。由于 IV 与第一个普通块进行异或运算,因此将 IV 设置为全零相当于没有 IV。

这只是对您的问题的回答,您可能需要注意迄今为止提供给您的所有其他安全建议。您可能还想检查代码是否实际使用需要 IV 的 CBC 模式加密。

用于 CBC 模式加密的 IV 始终是一个块大小(AES 为 16 个字节,但getBlockSize()只要可用就使用一种方法。

于 2012-04-25T19:59:57.647 回答
1

Mode将密码的属性显式设置为ECB.

除非您加密的纯文本是短的、随机的、唯一的字符串,否则 ECB 是不安全的。例如,它对加密会话密钥或另一个加密密钥很有用。

于 2012-04-25T17:59:10.623 回答