【问题标题】:Use of Hashing Algorithm in Asymmetric Cryptographic Padding在非对称加密填充中使用散列算法
【发布时间】:2019-08-05 03:16:52
【问题描述】:

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

我指的是this example

>>> message = b"encrypted data"
>>> ciphertext = public_key.encrypt(
...     message,
...     padding.OAEP(
...         mgf=padding.MGF1(algorithm=hashes.SHA256()),
...         algorithm=hashes.SHA256(),
...         label=None
...     )
... )

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

【问题讨论】:

    标签: python cryptography encryption-asymmetric


    【解决方案1】:

    如果您查看Optimal Asymmetric Encryption Padding (OAEP.pdf) 设计,您会发现它需要两个具有不同属性的哈希函数GH

    G 和 H 通常是协议固定的一些加密哈希函数。

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

    1. H 哈希函数将输入减少为固定大小的输出。
    2. G 是Mask generation function (MGF),它使用哈希函数将输入扩展为所需大小的输出。是在rfc8017 中定义的

    【讨论】:

      【解决方案2】:

      RSA 加密基于 RSA trapdoor 排列:一种在一个方向上很容易执行的转换,但在另一个方向上是不可行的,除非您知道一个“神奇”值(私钥)。将陷门功能转变为加密方案并不容易。首先,加密是非确定性的至关重要:否则,如果有人能猜出消息可能是什么,他们将能够通过执行加密来检查他们的猜测(使用公钥) 并与他们想要破解的密文进行比较。为了避免这种情况,加密方案总是包含一些随机部分,称为 nonce

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

      包含随机 nonce 是必要的,但不足以使 RSA 加密安全。 RSA 根的数学运算具有一些“不错”的数学特性。在许多现实世界的情况下,想要解密密文的攻击者可以submit modified ciphertexts for decryption,即使这些密文被拒绝为无效,它们被拒绝的确切方式(错误消息、时间......)也足以重建纯文本。这是 PKCS#1v1.5 填充的问题,它容易受到诸如 Bleichenbacher's attackManger's attack 等预言机攻击,其中攻击者生成修改后的密文并获取有关其有效性的信息,最终允许重构明文。

      OAEP 旨在使攻击者无法生成有用的密文。简而言之,它通过使用伪随机字符串(使用 xor)屏蔽有效负载来工作。生成此伪随机字符串的标准方法是使用称为 MGF1 的结构,它从种子开始并反复对其进行哈希处理。这种屏蔽破坏了由 RSA 求幂运算引起的数学关系:修改密文会导致在取消屏蔽后完全不相关的明文。这样,如果攻击者尝试提交修改后的密文,他们只会得到解密错误,这些错误不会提供任何有用的信息来重建明文。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-09-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-08-25
        相关资源
        最近更新 更多