代码之家  ›  专栏  ›  技术社区  ›  Kenji Baheux

有没有一种方法可以改变一个公钥,使它在一些改变之后仍然可以用私钥进行解密?

  •  3
  • Kenji Baheux  · 技术社区  · 14 年前

    在非对称加密方案中,我想知道是否可以实现以下目标:

    1. 鲍勃把他的钥匙寄给爱丽丝
    2. Alice更改了Bob的公钥并用它加密了一些文档
    3. Alice将加密文件发送给Bob
    4. 鲍勃取回文件,但无法用他的私钥解密
    5. 稍后,Alice向Bob发送了一些附加信息(可能与她更改Bob公钥的方法有关)。
    6. Bob使用这些附加信息修改他的私钥并成功解密文档

    有人吗?

    我假设RSA用于密钥生成、加密和解密,但是如果使用另一个方案更容易,请随时发表评论。

    4 回复  |  直到 11 年前
        1
  •  2
  •   onkar    11 年前

    (我假设你在谈论RSA。)

    是的,这是可能的, 但不是100% .

    公钥是私钥的一部分。它包含键的模数和指数。

    您完全可以忘记更改模数,因为您必须生成一个新的RSA密钥对,这与我们要解决的问题相同。

    但是可以改变指数。可以选择介于1和指数之间的任意(质数)作为新的指数和 希望 它是与女主人的互质。如果不知道全部,就不可能总是选择正确的指数。要找到目标,你必须知道关键的主要因素,这意味着你必须打破关键(玩得开心!).

    所以, 实际上是不可能的 要有一个100%的工作方法来做到这一点,至少在只知道公钥的情况下不会。

    如果你需要更多关于理论的信息,检查一下 here

        2
  •  2
  •   Mahm00d Rupal K    11 年前

    我希望我的想法行得通。

    让我们假设一下 (e,d,n) 是RSA公共指数的元组。rsa私有指数和rsa模 n :

    选择素数,比如 ,介于1和256位整数之间。

    加密 一条信息 ,计算新的公共指数为 e*p 密文为:

    c= m^{e*p} mod n .

    解密 ,接受者应该知道质数 ,所以你发送这个 后来,他用这个计算

    (1) P = p^{-1} mod phi(n)

    (2) m^e=c^{P} mod n

    最后 m=(m^e)^d mod n . 这是因为接收器知道phi(n)。

    顺便问一下,我们在哪里可以用这个?你有什么申请吗?

        3
  •  1
  •   caf    14 年前

    正如Silky在他的回答中所暗示的,RSA通常用于加密文档的方式是与对称算法(如AES)结合使用。为AES算法生成一个安全随机密钥,用该AES密钥对文档进行加密,并用收件人的公钥对AES密钥进行加密。两部分均提供给收件人。

    您只需在第一步中仅发送使用AES密钥加密的文档,并在第二步之前保留使用收件人的公钥加密的AES密钥,就可以使其适应您的情况。第一部分将按原始文件大小的顺序排列,第二部分将按较小的常量大小排列(按RSA密钥大小的顺序排列)。

        4
  •  0
  •   Noon Silk    14 年前

    嗯,很有趣。

    你指的是 RSA 我想是吧?

    仅供参考,RSA实际上并不用于加密文档。它用于交换密钥(对称算法的密钥,如AES)。

    所以你真正要说的是一种改变关键点的方法。

    技术上(数学上)如果你输入一个不同的数字,你会得到一个不同的数字。所以这不是一个问题;以某种方式更改公钥(假设您说服RSA实现使用它,或者准备一个适当不同的数字)将导致不同的对称密钥,因此Bob将生成一个不可加密的文档(因为他希望使用不同的密钥)。

    真的,不过,我不太确定你是否关心这个。这是一件相当无用的事情。 也许 但是,你实际上对 Key Splitting (或者维基百科称之为“秘密分享”)。

    Hth.我决不是专家。