我对PKI,证书和所有相关的东西都比较新。
据我所知,在公钥加密中,用公钥加密并用私钥解密。只有一个私钥可以对应任何公钥,但反之则不然。这是对的吗?或者是一对一的映射?
因此,数字签名的工作方式是对证书的内容进行哈希处理,然后使用私钥“签名”。然后使用相应的公钥验证签名。
所以,这是我感到困惑的地方。使用公钥加密邮件和使用私钥签名邮件摘要有什么区别?
我认为信息安全目标对于实现消息加密和签名之间的区别至关重要。定义一些目标:
消息加密提供机密性。
邮件签名将邮件源的标识绑定到此邮件。它确保数据完整性,消息身份验证和不可否认性。
我发现第四个目标,不可否认性,我觉得它有所区别所以请允许我详细说明。 Alice可能会在某个时间点拒绝签署消息,或者Bob可能会错误地声称Alice已生成消息签名。数字签名允许无偏见的可信第三方(事先商定)解决争议,而无需访问签名者的秘密信息(私钥)。
您在问题中提到的数字签名系统称为可逆公钥加密的数字签名。总而言之,任何数字签名方案都应具有以下属性:
至于加密系统,Kerckhoffs定义了一系列要求,这些要求在大多数情况下仍然有用。请阅读wiki。
关于用于密钥生成和加密/解密的函数类型,让我们再给出一些定义:
f: X -> Y
中的每个元素都是Y
中最多一个元素的图像,则函数X
是一对一的。f: X -> Y
中的每个元素都是Y
中至少一个元素的图像,则函数X
。f: X -> Y
很容易计算f(x)
中的所有元素,则函数X
是单向函数但是对于y
中的所有元素Y
,在x
中找到任何f(x) = y
计算上是不可行的。f: X -> Y
,其中额外信息(陷门信息)的知识使得可以找到y
中的任何Y
,x
中的X
,使f(x) = y
。双射用作加密消息的工具,反向双射用于解密。
陷门单向函数用于公钥密码系统和数字签名方案中的密钥对生成。
Trapdoor具体实例
在RSA中,公钥是(e,n)
,其中n =pq
和p
和q
是两个大的,不同的素数。 e
是在1 < e < (p - 1)(q - 1)
范围内随机选择的。鉴于(p - 1)(q - 1)
的知识,唯一的私钥d
是通过应用扩展的欧几里德算法获得的。它是一个陷门单向函数,使我们能够从d
获得(e,n)
。
如果你不知道(p - 1)(q - 1)
并且仍然想发现d
,那么你需要考虑n
。如果p
和q
很大并且经过精心挑选,那么n
因子应该是难以处理的。这是RSA问题(RSAP)。
但陷阱在哪里?你可能已经注意到,陷门是n
的因素。如果您了解这些因素,您可以轻松地反转单向函数并显示d
。
消息加密使整个消息对除了相应私钥的所有者之外的任何人都不可读。
当您对消息进行签名时,它会创建类似于消息内容的校验和以及来自密钥的数据,可以根据公钥进行验证。这不会使消息对任何人都不可读,但可以验证消息确实来自发件人并且自那以后没有被更改。
当然,这要求您信任公钥,但这是另一个故事。
对于您的第一个问题:AFAIK理论上可以创建公钥冲突,但不太可能。
公钥加密,私钥解密加密和数字签名,这是相反的。 提示:想象一下公钥作为挂锁和私钥作为打开挂锁的钥匙。
public key cryptography or asymmetric cryptography的两个最着名的用途是数字签名和公钥加密。在非对称密钥加密方案中,任何人都可以使用公钥加密消息,但只有配对私钥的持有者才能解密。安全性取决于私钥的保密性。
要使用数字签名或公钥加密,我们必须拥有数字身份证或数字证书或公钥证书或身份证书。它是用于证明公钥所有权的电子文档。
img src
注册机构(RA),证书颁发机构(CA)和验证机构(VA)
任何私钥都有一个公钥,任何公钥都有一个私钥,它始终是一对一的映射。
签名消息只是为消息创建一个指纹,只是为了确保内容没有被更改,但它对消息本身没有影响,消息永远不会被加密。
加密邮件时会进行加密。您可以加密邮件并同时签名。
如在其他答案中已经提到的,公钥和私钥彼此耦合。实际上,在许多加密上下文中,您有一对具有某些属性的数字,并且可以选择要将其用作私有和哪些作为公钥。因此,这里存在一定程度的独特性。 (详情可能因所讨论的算法而异。)
但是,在谈论PKI时,您通常不会考虑公钥,而是基本上是使用公钥的信息包(发行者,主题,有效性间隔,使用限制......)的证书。创建证书时,您当然可以为同一个公钥构建不同的证书。
因此,虽然私钥和公钥基本上是一对一的,但私钥和证书可以是一对多的。
也许这是你一对一混淆的原因。