消息加密和签名的区别
我认为信息安全目标对于实现消息加密和签名之间的区别至关重要。定义几个目标:
-
机密性:对未经授权的各方保密。
-
数据完整性:确保信息未被未经授权的方式更改。
-
消息鉴权(数据源鉴权):确证
信息来源。
-
不可否认性:防止否认之前的行为。
消息加密提供机密性。
消息签名绑定消息源的身份到这个消息。它确保数据完整性、消息身份验证和不可否认性总共。
我发现第四个目标,不可否认性,我觉得它与众不同,所以请允许我详细说明。 Alice 可能在某个时间点否认已经签署了一条消息,或者 Bob 可能错误地声称消息签名是由 Alice 产生的。数字签名允许无偏见受信任的第三方(事先同意)解决争议,而无需访问签名者的秘密信息(私钥)。
您在问题中提到的数字签名系统称为来自可逆公钥加密的数字签名。总而言之,任何数字签名方案都应该具备以下属性:
- 签名者很容易计算。
- 任何人都可以轻松验证。
- 在不再需要之前(签名寿命),它是安全的,不会被伪造。
对于加密系统,Kerckhoffs 定义了一组要求,这些要求在大多数情况下今天仍然有用。请阅读wiki。
密码学中使用的函数类型
关于用于密钥生成和加密/解密的函数的类型,让我们再次给出几个定义:
-
一对一函数:如果
Y 中的每个元素是X 中最多一个元素的图像,则函数f: X -> Y 是一对一的。
-
Onto 函数:如果
Y 中的每个元素都是X 中至少一个元素的图像,则函数f: X -> Y 是onto。
-
双射函数:双射既是一对一的又是上的。
-
单向函数:如果
f(x) 对X 中的所有元素很容易计算,但对于Y 中的所有元素y,它是单向函数Y找不到任何x 这样f(x) = y。
-
Trapdoor 单向函数:它是一种单向函数
f: X -> Y,其中额外信息(trapdoor 信息)的知识使得在Y 中找到任何y 成为可能,一个x 在X 这样f(x) = y。
使用双射作为加密消息的工具,使用逆双射进行解密。
陷门单向函数用于公钥密码系统和数字签名方案中的密钥对生成。
活板门具体示例
在 RSA 中,公钥是 (e,n),其中 n =pq 和 p 和 q 是两个不同的大素数。 e 在1 < e < (p - 1)(q - 1) 范围内随机选择。给定(p - 1)(q - 1)的知识,通过应用扩展欧几里得算法得到唯一私钥d。它是一个陷门单向函数,使我们能够从(e,n) 中获取d。
如果您不知道(p - 1)(q - 1),但仍想发现d,那么您需要考虑n。如果p 和q 很大并且经过精心挑选,那么分解n 应该是难以处理的。这就是 RSA 问题 (RSAP)。
但是活板门在哪里?您可能已经注意到,活板门是n 的因子。如果您知道这些因素,您可以轻松地反转单向函数并显示d。