gpt4 book ai didi

encryption - 是否可以以与解密不同的顺序加密?

转载 作者:行者123 更新时间:2023-12-03 11:19:58 28 4
gpt4 key购买 nike

是否可以按一种顺序加密并按另一种顺序解密?例如,我有以下内容:

  • 纯文本.txt
  • 公钥/私钥对 1
  • 公钥/私钥对 2

  • 例子

    加密:
    public1(public2(plain_text.txt))

    解密:
    private1(private2(encrypted))

    是否有任何加密算法允许这样做?甚至有可能吗?

    最佳答案

    在大多数情况下,您无法更改解密顺序。
    允许重新排序解密的方案称为交换密码系统。
    一种可用于构建可交换密码系统的公钥密码系统是
    ElGamal encryption .

    这只是主要思想:假设 g 是
    一个合适的组 G,对于它来说计算离散对数是困难的。
    设 xA 和 xB 是两个私钥,
    hA = g xA ,和
    hB = g xB
    是对应的公钥。两个 key 对使用相同的组
    G(即,如果我们使用 G = Z/(p),则模数 p 相同)。这是其优势之一
    ElGamal 方案,如果两个用户共享相同的组(或模数),它仍然是安全的。
    另一方面,RSA 将是不安全的。

    用 hA 加密消息 m 得到密文

    (m hAr, gr).



    请注意,知道 key xA 允许解密,因为

    (gr)xA = hAr



    要第二次加密密文,首先要重新加密现有的
    密文与 A 的公钥。
    他选择一个随机 r' 并计算

    (m hAr hAr', grgr') = (m hAr+r', gr+r').



    结果只是使用 A 的公钥进行的另一个有效加密。
    这种重新加密对于避免有效的攻击是必要的,例如
    对抗具有相同模数的 RSA,如下所示。
    接下来,一个人会用 B 的公钥加密

    (m hAr+r' hBs, gr+r', gs).



    可以按任一顺序解密,例如知道 xA 允许计算

    (gr+r')xA = hAr+r'



    因此可以计算

    (m hBs, gs),



    这正是我们想要的:用 B 的公钥加密 m。

    为了获得安全的实现,需要观察许多微妙之处。
    做到这一点并不容易。
    有关更多信息,请参见例如 Phd of Stephen Weis ,其中包含关于可交换加密的一章。

    如果对“教科书 RSA”尝试相同的想法,则会出现许多问题。首先要使加密可交换,用户 A 和 B 必须共享相同的模数。
    例如。 A 使用 (n, eA, dA) 而 B 使用 (n, eB, dB),其中 n 是模数,eA, eB 是公钥,dA, dB 是 secret key 。然而,知道例如 (n, eA, dA) 允许对 n 进行因子分解,从而计算 B 的 key ,这当然是一个很大的缺陷。

    现在我们可以将 m 加密为

    meA mod n,



    再次加密为

    meAeB mod n,



    用 A 的 secret key 解密

    meB mod n,



    并用B的 key 再次解密得到m。这看起来不错,直到有人注意到
    可以截获两个密文 c = meA mod n 和 c' = meB mod n 的攻击者可以使用 Euclid 算法找到 r,s 使得

    r eA + s eB = 1



    然后计算

    m = cr (c')s mod n.



    这个想法也适用于使用另一个答案中提出的 RC4 的解决方案。 Weis 的论文包含对攻击的详细描述。

    关于encryption - 是否可以以与解密不同的顺序加密?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2002977/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com