首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >哈希算法在非对称加密填充中的应用

哈希算法在非对称加密填充中的应用
EN

Stack Overflow用户
提问于 2019-03-14 09:26:28
回答 2查看 808关注 0票数 2

我正在使用Python密码库,并执行非对称加密。

我指的是这个例子

代码语言:javascript
复制
>>> message = b"encrypted data"
>>> ciphertext = public_key.encrypt(
...     message,
...     padding.OAEP(
...         mgf=padding.MGF1(algorithm=hashes.SHA256()),
...         algorithm=hashes.SHA256(),
...         label=None
...     )
... )

我明白填充物的作用。但是,我无法理解为什么使用SHA256()?

EN

回答 2

Stack Overflow用户

发布于 2019-03-19 02:39:49

RSA加密基于RSA 诱捕门置换:一种很容易在一个方向上执行的转换,但除非您知道一个“魔术”值(私钥),否则在另一个方向上是不可行的。将陷阱函数转换为加密方案并不容易。首先,加密必须是不确定的:否则,如果有人能够猜出消息可能是什么,他们就可以通过执行加密(使用公钥)并与他们想要破解的密文进行比较来检查他们的猜测。为了避免这种情况,加密方案总是包含一些随机部分,称为“现在”。

RSA陷阱门操作接受输入,输入的大小是固定的,由密钥决定。基本上,使用n位键,您需要一个(n-1)-bit输入字符串。因此,要加密某些内容,您需要从原始消息中构建一个所需长度的字符串。组装有效载荷以加密和格式化它们的操作称为填充。RSA加密有两种标准的填充机制: PKCS#1v1.5和OAEP。

包括一个随机的现在是必要的,但不足以使RSA加密安全。RSA根部的数学运算具有一些“很好”的数学性质。在许多实际情况下,想解密密文的攻击者可以提交修改后的密文进行解密,即使这些密文被拒绝为无效,也会被拒绝(错误消息、定时、…)。就足以重建明文了。这是PKCS#1v1.5填充中的一个问题,它容易受到甲骨文攻击(如布莱肯巴赫尔攻击马槽攻击 )的攻击,攻击者在这些攻击中生成修改后的密文并获取有关其有效性的信息,从而最终允许重构明文。

OAEP旨在使攻击者无法生成有用的密文。简而言之,它的工作方式是用伪随机字符串掩蔽(用xor)有效负载。生成这个伪随机字符串的标准方法是使用一个名为MGF1的构造,它从种子开始并反复散列。这种掩蔽破坏了RSA指数运算所引起的数学关系:修改密文会导致明文在打开掩蔽后完全不相关。这样,如果攻击者试图提交修改过的密文,他们只会得到解密错误,这些错误不会提供任何有用的信息来重构明文。

OAEP涉及第二个哈希函数,用于在加密中包含标签。标签包括在掩码计算中,其方式是试图用错误的标签解密导致解密错误(以不显示正确标签的方式)。掩码计算使用标签的散列。实际上,这个特性很少使用,标签默认为空字符串。此外,在实践中,每个人都对标签和掩码生成使用相同的哈希算法,但是有些库允许指定不同的哈希。

票数 3
EN

Stack Overflow用户

发布于 2019-03-14 11:48:37

如果您查看最优非对称加密填充 (OAEP.pdf)设计,您将看到它需要两个具有不同属性的哈希函数GH

G和H通常是协议中固定的一些密码散列函数。

这两个是两个不同的属性所必需的;

  1. H哈希函数将输入减少到固定大小的输出。
  2. G是掩码生成函数(MGF),它使用哈希函数将输入扩展到所需的大小输出。是在rfc8017中定义的
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55158942

复制
相关文章

相似问题

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