首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RSA OAEP错误检测概率

RSA OAEP错误检测概率
EN

Cryptography用户
提问于 2020-12-27 14:02:04
回答 2查看 276关注 0票数 3

关于问题:

首先,当使用填充(PKCS或OAEP)时,如果密文在传输中有错误,那么在解密过程中总是会出现错误?

答案是:

是的,概率极高。这基本上是一个选择密文攻击和RSA-OAEP是完全免疫的,所以你不会发现这种攻击的可能性(即。a。“错误”)非常低(低于2^{−128})。

我可以知道2^{−128}是如何计算的吗?RSA 1024和2048位是真的吗?

--寻找

关于https://www.rfc-editor.org/rfc/rfc3447,第3章,EME解码,点g(如下):

g.将DB分离为长度为lHash‘的八进制字符串hLen’,一个(可能为空的)填充字符串PS,由十六进制值0x00的八进制组成,如果没有十六进制值0x01的八进制,则输出“解密错误”并停止输出消息M。(见下文说明。)

对于openssl的实现,使用SHA1,SHA1为20字节,这意味着lHash(和lHash')的长度为20字节。因此,我建议错误率的概率低于2^{−160}。有人能在这方面有所贡献吗?谢谢。

附注:

从openssl(https://docs.huihoo.com/doxygen/openssl/1.0.1c/rsa__oaep_8c_source.html)的源代码,RSA_padding_check_PKCS1_OAEP(),第152行,它编码如下。我相信它是在检查lHash是否等于拉链哈希‘,或者Y是否为非零。有人能对此有看法吗?谢谢。

如果(memcmp(db,phash,SHA_DIGEST_LENGTH) != 0\>

EN

回答 2

Cryptography用户

发布于 2020-12-28 08:59:03

在OAEP中,我们使用k_1零比特和k_2随机比特来填充消息。这是零位给你验证。“全部或无保证”意味着,如果您更改任何内容,您将以0.5的概率翻转所有位,而偶然获得k_1零位的机会是1比2^{k_1}

票数 2
EN

Cryptography用户

发布于 2021-01-05 08:54:34

虽然我在你之前的问题中给出了答案。在这里,它更简单。

  • R是一个随机的k0位串,RSA模数的长度是n位.
  • 现在零填充位的长度k1 = n- k0
  • 展开函数E(r)将r扩展为n-k0位。然后用0填充味精的xor。
  • {X=m00..0 \oplus E(r)}
  • 现在,压缩函数{C(X)}{X}压缩为k0位。
{Y=r \oplus C(X)}
{Output = X || Y }

可解码为:

{r = Y \oplus C(X)}
  • 消息为:{m00..0 = X \oplus E(r)}
票数 0
EN
页面原文内容由Cryptography提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://crypto.stackexchange.com/questions/87177

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档