当前位置: 首页 > 知识库问答 >
问题:

数字证书:加密和签名的区别是什么

楚羽
2023-03-14

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

据我所知,在公钥密码学中,用公钥加密,用私钥解密。只有一个私钥可以对应于任何公钥,但事实并非如此。对吗?还是一对一的映射?

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

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

共有3个答案

长孙承嗣
2023-03-14

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

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

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

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

瞿宏儒
2023-03-14


提示:把公钥想象成挂锁,把私钥想象成打开挂锁的钥匙。

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

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

>

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

    公钥加密:用收件人的公钥对邮件进行加密的一种加密方式。任何不拥有匹配私钥的人都无法解密该消息,因此,他们被推定为该私钥的所有者以及与该公钥相关联的人。这是为了确保机密性。与公钥加密类似的是一个带邮箱的锁定邮箱。邮箱是公开的,公众可以访问——它的位置(街道地址)本质上是公钥。任何知道街道地址的人都可以走到门口,通过投币口投递一条书面信息。但是,只有拥有密钥的人才能打开邮箱并阅读邮件。

    • 公钥基础设施(PKI)是创建、管理、分发、使用、存储和撤销数字证书以及管理公钥加密所需的一组角色、策略和过程

    当局:

    • 注册机构(RA)、证书机构(CA)和验证机构(VA)

    算法:

    >

    DSA(数字签名算法)和RSA(Ron Rivest、Adi Shamir和Leonard Adleman)是公钥密码系统,广泛用于安全数据传输。DSA只提供数字签名,RSA同时提供数字签名和加密。

  • 墨雨华
    2023-03-14

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

    1. 保密性:对未经授权的方保密

    消息加密提供了机密性。

    消息签名将消息源的标识绑定到此消息。它确保数据完整性、消息验证和不可否认性。

    我发现第四个目标是不可抵赖性,我发现它有区别,所以请允许我详细说明。Alice可能会在某个时间点否认在邮件上签名,或者Bob可能会错误地声称邮件签名是Alice制作的。数字签名允许无偏见的可信第三方(事先约定)解决争议,而无需访问签名者的秘密信息(私钥)。

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

    1. 签名者很容易计算

    至于加密系统,Kerckhoffs定义了一系列要求,这些要求在很大程度上仍然有用。请在维基上仔细阅读。

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

    1. 一对一函数:A函数f:X-

    双射用作加密消息的工具,逆双射用于解密。

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

    活板门的具体例子

    在RSA中,公钥是(e,n),其中n=pqpq是两个大的、不同的素数e1范围内随机选择

    如果您不知道(p-1)(q-1)并且仍然希望发现d,那么您需要因数n。如果pq很大并且经过仔细选择,因数n应该是难以处理的。这就是RSA问题(RSAP)。

    但是活板门在哪里?正如你可能已经注意到的,活板门是n的因子。如果你知道这些因子,你可以很容易地反转单向函数并揭示d

     类似资料:
    • Java安全加密专题文章索引 Java安全加密:对称加密 Java安全加密:非对称加密 Java安全加密:消息摘要Message Digest Java安全加密:数字签名和数字证书 Java安全加密:Https编程 1. 数字签名 1.1 概述 数字签名是非对称加密与数字摘要的组合应用 1.2 应用场景 校验用户身份(使用私钥签名,公钥校验,只要用公钥能校验通过,则该信息一定是私钥持有者发布的)

    • 我的手被https、ssl、PKI之类的东西弄得脏兮兮的。对于自签名证书,有一点我不太理解。假设我想创建一个自签名证书,并在我们想要建立安全连接时将其发送给我的朋友。 所以步骤是: 创建一个私钥。 创建一个公钥。 用我的公钥在证书上签名。 因此,当我的朋友得到我的证书时,他必须验证他得到的证书是我的,他需要解密数字签名。但为了解密和验证他必须拥有我的私钥。所以,我有点困惑。

    • 我正在通过PKI开发身份验证。我是通过PKI认证用户的新手,所以在网上阅读后,我想出了这个解决方案。用户将创建公钥和私钥。为了验证公钥,用户将申请数字证书。数字证书将具有公钥、用户的元数据和证书颁发机构的数字签名。为了证明没有数据被篡改,用户将使用数字签名,这将是证书与用户私钥的哈希。用户将向服务器发送数字证书、数字签名和数据。 作为响应,服务器将验证数字证书并获取公钥以验证数字签名,验证后,服务

    • 由认证机构签署的X509数字证书包含这两个字段。1.签名算法2.签名值我知道“签名算法”字段包含认证机构用来签署证书的哈希算法。“签名值”是哈希计算的签名。我的问题是哈希处理的数据是什么?是作为企业社会责任(证书签名请求)一部分的公钥还是整个企业社会责任的公钥?

    • 我想使用USB令牌(加密狗)中的用户密钥和证书对文件进行签名。 我已经在stackoverflow和其他网站上搜索了一段时间,但除了中的一些好功能之外,没有得到任何有用的东西。NET framework(我没有使用)。 似乎由于密钥没有暴露,加密是由硬件本身完成的。这是否意味着每个硬件制造商都提供自己的API,并且没有通用方法来解决这个问题? 此外,我还了解到,一旦令牌插入计算机,其证书就会加载到

    • 另外,这里还有一个函数演示,它从mod和指数生成PEM(摘自http://stackoverflow.com/questions/18835132/xml-to-pem-in-node-js) 前面提到的jsonwebtoken库可以使用任何一种方法来验证JWT--但是为什么呢?如果这两种验证方法都可以验证一个JWT签名,为什么它们都存在呢?他们之间有什么权衡?一个比另一个更安全吗?我应该使用哪一