【问题标题】:Digital certificates: What is the difference between encrypting and signing数字证书:加密和签名有什么区别
【发布时间】:2014-03-16 10:19:31
【问题描述】:

我对 PKI、证书和所有相关的东西都比较陌生。

据我所知,在公钥密码学中,使用公钥加密并使用私钥解密。只有一个私钥可以对应任何公钥,反之则不然。这是正确的吗?还是一对一的映射?

因此,数字签名的工作方式是对证书的内容进行哈希处理,然后使用私钥“签名”。然后使用相应的公钥验证签名。

所以,这就是我感到困惑的地方。使用公钥加密消息和使用私钥签署消息摘要有什么区别?

【问题讨论】:

    标签: digital-signature digital-certificate pki


    【解决方案1】:

    消息加密和签名的区别

    我认为信息安全目标对于实现消息加密和签名之间的区别至关重要。定义几个目标:

    1. 机密性:对未经授权的各方保密。
    2. 数据完整性:确保信息未被未经授权的方式更改。
    3. 消息鉴权(数据源鉴权):确证 信息来源。
    4. 不可否认性:防止否认之前的行为。

    消息加密提供机密性。

    消息签名绑定消息源的身份到这个消息。它确保数据完整性、消息身份验证和不可否认性总共

    我发现第四个目标,不可否认性,我觉得它与众不同,所以请允许我详细说明。 Alice 可能在某个时间点否认已经签署了一条消息,或者 Bob 可能错误地声称消息签名是由 Alice 产生的。数字签名允许无偏见受信任的第三方(事先同意)解决争议,而无需访问签名者的秘密信息(私钥)。

    您在问题中提到的数字签名系统称为来自可逆公钥加密的数字签名。总而言之,任何数字签名方案都应该具备以下属性:

    1. 签名者很容易计算。
    2. 任何人都可以轻松验证。
    3. 在不再需要之前(签名寿命),它是安全的,不会被伪造。

    对于加密系统,Kerckhoffs 定义了一组要求,这些要求在大多数情况下今天仍然有用。请阅读wiki

    密码学中使用的函数类型

    关于用于密钥生成和加密/解密的函数的类型,让我们再次给出几个定义:

    1. 一对一函数:如果Y 中的每个元素是X 中最多一个元素的图像,则函数f: X -> Y 是一对一的。
    2. Onto 函数:如果Y 中的每个元素都是X 中至少一个元素的图像,则函数f: X -> Y 是onto。
    3. 双射函数:双射既是一对一的又是上的。
    4. 单向函数:如果f(x)X 中的所有元素很容易计算,但对于Y 中的所有元素y,它是单向函数Y找不到任何x 这样f(x) = y
    5. Trapdoor 单向函数:它是一种单向函数f: X -> Y,其中额外信息(trapdoor 信息)的知识使得在Y 中找到任何y 成为可能,一个xX 这样f(x) = y

    使用双射作为加密消息的工具,使用逆双射进行解密。

    陷门单向函数用于公钥密码系统和数字签名方案中的密钥对生成。

    活板门具体示例

    在 RSA 中,公钥是 (e,n),其中 n =pqpq 是两个不同的大素数。 e1 < e < (p - 1)(q - 1) 范围内随机选择。给定(p - 1)(q - 1)的知识,通过应用扩展欧几里得算法得到唯一私钥d。它是一个陷门单向函数,使我们能够从(e,n) 中获取d

    如果您不知道(p - 1)(q - 1),但仍想发现d,那么您需要考虑n。如果pq 很大并且经过精心挑选,那么分解n 应该是难以处理的。这就是 RSA 问题 (RSAP)。

    但是活板门在哪里?您可能已经注意到,活板门是n 的因子。如果您知道这些因素,您可以轻松地反转单向函数并显示d

    【讨论】:

    • 给像我这样的傻瓜一个简单的问题:),加密和签名使用相同的公钥吗?
    【解决方案2】:

    公钥加密,私钥解密对于加密和数字签名,情况正好相反。
    提示:将公钥想象为挂锁,将私钥想象为打开挂锁的钥匙。

    public key cryptography or asymmetric cryptography 最著名的两个用途是数字签名公钥加密。在非对称密钥加密方案中,任何人都可以使用公钥加密消息,但只有配对私钥的持有者才能解密。安全性取决于私钥的保密性。

    要使用数字签名公钥加密,我们必须拥有数字身份证或数字证书或公钥证书或身份证书。它是用于证明公钥所有权的电子文档。

    • 数字签名,其中使用发件人的私钥对邮件进行签名,任何有权访问发件人公钥的人都可以对其进行验证。此验证证明发件人有权访问私钥,因此很可能是与公钥相关联的人。这也确保了消息没有被篡改,因为签名在数学上绑定到它最初使用的消息,并且几乎任何其他消息的验证都将失败,无论与原始消息多么相似。数字签名的类比是用个人蜡封密封信封。任何人都可以打开邮件,但唯一印章的存在可以验证发件人的身份。

    • 公钥加密,其中使用收件人的公钥对消息进行加密。任何不拥有匹配私钥的人都无法解密该消息,因此假定他是该密钥的所有者和与公钥相关联的人。这是为了确保机密性。与公钥加密的类比是一个带有邮箱的锁定邮箱。邮筒是公开的并且可供公众访问——它的位置(街道地址)本质上就是公钥。任何知道街道地址的人都可以走到门口并通过插槽发送书面信息。但是,只有拥有钥匙的人才能打开邮箱并阅读邮件。


    img src

    • Ppublic Key I基础架构 (PKI) 是一组角色、政策和创建、管理、分发、使用、存储和撤销数字证书以及管理公钥加密所需的程序。


    img src

    当局

    • R注册A权威(RA),C证书A权威(CA)和V验证A权威(VA

    算法

    • DES(Data Encryption Standard)和三重 DES(DES 的更强变体)、AES(A 高级Encryption Standard)是对称密钥密码系统。它使用相同的密钥进行加密和解密。

    • DSA(Digital Signature A算法)和 RSA(Ron Rivest, Adi Shamir 和 Leonard Adleman)是公钥密码系统,广泛用于安全数据传输。 DSA 仅提供数字签名,而 RSA 提供数字签名和加密。

    【讨论】:

      【解决方案3】:

      消息加密使除了相应私钥的所有者之外的任何人都无法读取整个消息。

      当您签署消息时,它会创建消息内容的校验和以及来自密钥的数据,可以根据公钥进行验证。 这不会使任何人无法阅读消息,但可以验证消息确实来自发件人并且此后没有被更改。

      当然,这需要您信任公钥,但那是另一回事了。

      对于您的第一个问题:AFAIK 从理论上讲可以创建公钥冲突,但可能性极小。

      【讨论】:

        【解决方案4】:

        任何私钥都有一个公钥,任何公钥都有一个私钥,它总是一对一的映射。

        签名邮件只是为邮件创建指纹,只是为了确保内容没有被更改,但它对邮件本身没有影响,并且邮件永远不会被加密。

        在加密消息时会进行加密。您可以同时对消息进行加密和签名。

        【讨论】:

        • "任何私钥都有一个公钥,任何公钥都有一个私钥,它总是一对一的映射。"我想这让我大开眼界。谢谢。
        【解决方案5】:

        正如其他答案中已经提到的,公钥和私钥是相互耦合的。实际上,在许多加密上下文中,您有一对具有某些属性的数字,并且可以选择要用作私有密钥和要用作公钥的数字。因此,这里有一定程度的独特性。 (细节可能会根据所讨论的算法而有所不同。)

        不过,在谈论 PKI 时,您通常不会考虑公钥,而是 证书,它们本质上是信息包(颁发者、主题、有效期间隔、使用限制等),具有公共钥匙。创建证书时,当然可以为同一个公钥创建不同的证书。

        因此,虽然私钥和公钥本质上是一对一的,但私钥和证书可能是一对多的。

        也许这就是你一对一混淆的原因。

        【讨论】:

          猜你喜欢
          • 2010-11-28
          • 2011-02-22
          • 2019-12-11
          • 2018-02-27
          • 2011-03-08
          • 2012-05-01
          • 2017-05-18
          • 1970-01-01
          • 2012-07-28
          相关资源
          最近更新 更多