【发布时间】:2016-03-09 22:46:20
【问题描述】:
我正在创建一个新的传输协议,我目前使用大量发送 AES 密钥的 RSA 传输来保护数据。
我当前的数据包设置是:
RSA_Block{
AES key
IV
Other things
}
AES_Block{
Data
}
问题在于 IV 本身在安全 RSA 块内占用空间。如果我将 IV 移出(从安全角度来看这很好),我的传输中会占用一些额外的空间(将数据包放大 IV 大小)。 所以我在想....如果 RSA 块包含纯随机数据(AES 密钥在每次传输时都是随机的)。我使用 RSA 编码块的第一部分作为 IV。
但它安全吗?还是 RSA 块的第一个字节有一些非随机性?
【问题讨论】:
-
我不太明白你在说什么,而且你关于 IV 的陈述对我来说没有意义。但是,听起来您几乎正在寻找类似RSA-KEM 的东西。读一读。
-
我相信不是,我想我记得可以从RSA中的密文中提取至少1位关于纯文本的信息,但是我找不到引用权现在。但至于与加密相关的一切:如果您不确定,请不要这样做。
-
但是,如果每次传输都使用新的随机 AES 密钥,则根本不需要 IV。 IV 有助于避免两次获得相同的密文,因为您没有重复使用密钥。
-
与其考虑 IV 的来源,不如对密文进行身份验证,以免像padding oracle attack 这样的攻击是不可能的。这可以通过 GCM 或 EAX 等认证模式或encrypt-then-MAC 方案来完成。
-
我投票决定将此问题作为题外话结束,因为这与编程没有直接关系,而是要求对部分 RSA 密文进行安全评估以获取 IV。它更适合Cryptography。
标签: encryption cryptography aes rsa