【问题标题】:Is RSA encoded block considered good random distributed?RSA 编码块是否被认为是良好的随机分布?
【发布时间】: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


【解决方案1】:

RSA 将一个数据块加密成一个加密数据块。可以放入块中的数据大小由密钥大小决定。加密块的大小不取决于您加密的数据量,而是取决于密钥大小。因此,从 RSA 输入中删除 IV 不会使输出变小 - 假设输入可以放在一个块中。 RSA 块中存在 IV 不会影响总加密时间。

从安全的角度来看,您不需要保护IV。通常,您只需将其与数据一起以明文形式传递即可。像这样的:

RSA_Block{
   AES key
   Other things
}
AES_Block{
   IV
   Data
}

我知道这实际上会使数据更大一些。但它不会对处理时间产生太大影响。在谈论 RSA 加密时考虑 memcpy 的成本没有任何意义。 (might even be in the millions - depending on key size etc.) 相差超过 1000 倍。

【讨论】:

  • 谢谢!我应该重新提出我的问题。因为我也担心如果我把它放在 RSA 块之外,IV 占用的空间。所以我想出了“使用 RSA 编码块作为 IV”的想法。它对我有用,我想知道它是否安全......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-16
  • 2011-09-12
  • 2019-10-01
  • 1970-01-01
相关资源
最近更新 更多