digital-signature - 数字证书:加密和签名有什么区别

标签 digital-signature digital-certificate pki

我对PKI,证书和所有相关内容比较陌生。

据我所知,在公共密钥加密中,一种是使用公共密钥加密,然后使用私钥解密。只有一个私钥可以对应于任何公钥,但相反的情况则不正确。这是正确的吗?还是一对一的映射?

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

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

最佳答案

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

机密性:对未经授权的各方保密。
数据完整性:确保未通过未经授权的方式更改信息。
消息认证(数据源认证):确证
信息来源。
不可否认性:防止拒绝先前的操作。

消息加密提供了机密性。
消息签名将消息源的身份绑定到此消息。它可以确保数据完整性,消息身份验证和不可否认性。
我找到了第四个目标,即不可否认性,我认为它与众不同,因此请允许我详细说明。爱丽丝可以在某个时间点拒绝对消息进行签名,或者鲍勃可以错误地声称消息签名是由爱丽丝产生的。数字签名允许无偏见的可信任第三方(事先同意)解决争端,而无需访问签名者的秘密信息(私钥)。
您在问题中提到的数字签名系统被称为来自可逆公钥加密的数字签名。总而言之,任何数字签名方案都应具有以下属性:

签名者很容易计算。
任何人都很容易验证。
它可以防止伪造,直到不再需要为止(签名寿命)。

对于加密系统,Kerchkhoffs定义了一组要求,这些要求在今天大部分仍然有用。请阅读wiki
密码学中使用的函数类型
关于用于密钥生成和加密/解密的函数类型,让我们再次给出一些定义:

一对一功能:如果f: X -> Y中的每个元素都是Y中最多一个元素的图像,则函数X是一对一的。
On函数:如果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

双射用作加密消息的工具,反双射用于解密。
活板门单向功能用于公共密钥密码系统和数字签名方案中的密钥对生成。
活板混凝土的例子
在RSA中,公钥为(e,n),其中n =pqpq是两个大的不同质数。 e1 < e < (p - 1)(q - 1)范围内随机选择。有了(p - 1)(q - 1)的知识,就可以通过应用扩展的欧几里得算法获得唯一的私钥d。它是一个活板式单向功能,使我们能够从d获取(e,n)
如果您不知道(p - 1)(q - 1)并仍想发现d,则需要将n分解。如果pq很大且经过精心选择,则分解n应该很困难。这是RSA问题(RSAP)。
但是活板门在哪里?您可能已经注意到,陷阱门是n的因素。如果您知道这些因素,则可以轻松地反转单向功能并显示d

关于digital-signature - 数字证书:加密和签名有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21823679/

相关文章:

xml - 封装的签名究竟改变了什么?

XML 签名 : How to calculate the digest value?

command-line - 从 .sys 文件中提取证书

c# - 您如何验证数字证书 SSL?

OpenSSL ECDSA 签名比预期长

linux - 让应用程序签署文档,但不要让它看到 key

c# - 在 C# 中创建的数字签名在 C++ 中不验证

java - 是否可以免费签署 Java 小程序?

tomcat - 如何更新tomcat的crl

linux - RHEL 中的 openssl - 在不使用 openssl.cnf 的情况下使用 root 签署客户端证书?