【问题标题】:Naming issue of public and private key公钥和私钥的命名问题
【发布时间】:2011-09-14 07:13:48
【问题描述】:

我听说您可以使用私钥来加密数据作为数字签名的一种方法。换句话说,您可以使用您的私钥加密消息。

在文本中,他们似乎总是说只有公钥可以加密,而私钥可以解密文本。

我假设这是一个错误的选择。一个密钥的单个实例是否只能做一个或另一个,但哪个密钥是公共或私有的不是它的功能问题,而是它的分布或缺乏它。

【问题讨论】:

    标签: cryptography public-key-encryption


    【解决方案1】:

    对于初学者来说,术语令人困惑。 RSA 可用于 2 种不同的加密功能:数据加密和数字签名。

    对于数据加密, 加密数据使用接收者的公钥; 他们 解密 使用他们的私钥。请注意,由于 RSA 的各种限制,被加密和解密的“数据”通常只是对称算法的密钥。

    对于数字签名, 签署使用您的私钥; 他们 验证使用您的公钥对数据的签名。同样,RSA 的各种限制意味着 RSA 算法实际操作的通常是数据的安全散列。

    有时签名操作被称为“用私钥加密”,而验证操作被称为“用公钥解密”。我认为这只会让人们感到困惑,所以我总是更喜欢在这种情况下使用签名和验证的术语。此外,“加密”和“解密”对于 DSA 和 ECDSA 等其他签名算法毫无意义。

    【讨论】:

    • 快速问题,当您说使用您的私钥加密时,它们是否与您最近解密时使用的完全相同?或者只是一种生成并保持私密而不是公开的加密?基本上,只要两个键切换角色,您就可以将看似键用于两个不同的目的吗?
    【解决方案2】:

    You CAN generate public key from private key.

    你不能从公钥生成私钥(嗯,你可能可以,但这在计算上非常昂贵)。

    这就是两者的区别。由于算法的工作方式,它们不可互换(因此,例如,您不应该公开您的私钥,并将公钥留给自己)。

    RSA 为例。算法基础是整数分解问题。你选择两个大整数 pq 并将它们相乘得到 n = p*q。然后创建公钥和私钥:

    • 公钥:(n, e)
    • 私钥:(p, q, d)

    然后:

    • 从私钥计算公钥很容易:

      n = p*q

      e = d^(-1) mod φ(n),其中 φ(n) = (p-1)(q-1)

    • 很难从公钥中计算出私钥 - 它需要对 n 进行因式分解才能得到 pq,这非常困难如果 p 和 q 足够大。

    【讨论】:

    • 其实第一句应该有“with most algorithms”之类的——这不是公钥密码学的必然真理。可能存在两个键可以互换的算法,但总的来说您的建议是正确的。
    【解决方案3】:

    您将您的加密密钥公开,并将您的解密密钥保密。这样,任何人都可以向您发送只有您可以解密的加密数据。

    如果您反过来这样做,那么您将是唯一能够加密您的数据的人,但任何人都可以解密它。这是没有意义的。如果每个人都可以解密您的消息,您不妨不加密地发送它。加密消息然后公开解密密钥是没有意义的。

    【讨论】:

    • 这是非对称签名方案工作原理的核心。
    【解决方案4】:

    加密有两种类型,一种是对称的,另一种是非对称的。在对称中,用于加密和解密的密钥是相同的。在非对称中,用于加密的密钥是公钥,解密是私钥..

    所有工作都基于密钥保密的原则。在通常用作 SSL / TLS 协议一部分的数字签名中,使用非对称加密来验证和共享主密钥,该主密钥进一步用于加密通信线路.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-07
      • 1970-01-01
      • 2013-07-09
      • 1970-01-01
      • 2011-07-19
      • 1970-01-01
      • 1970-01-01
      • 2016-03-27
      相关资源
      最近更新 更多