关于这问题:
首先,当使用填充(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\>
发布于 2020-12-28 08:59:03
在OAEP中,我们使用k_1零比特和k_2随机比特来填充消息。这是零位给你验证。“全部或无保证”意味着,如果您更改任何内容,您将以0.5的概率翻转所有位,而偶然获得k_1零位的机会是1比2^{k_1}
发布于 2021-01-05 08:54:34
虽然我在你之前的问题中给出了答案。在这里,它更简单。
可解码为:
https://crypto.stackexchange.com/questions/87177
复制相似问题