密码技术要解决的三个问题对应了消息体,发送端和接收端的安全可靠,分别是:仅发送给指定的人,接收者收到的消息同发送者完整一致,以及确保确实由期望的发送者发出。第一个问题由加密解决,确保接收人以外的人无法解读,第二个问题由单向散列函数解决,这是一种特殊的安全的校验和,第三个问题则由数字签名解决。
数字签名应用了RSA这样的公钥密码算法,由私钥对消息进行加密运算获得签名,公钥解密再和消息对比验证。被加密的消息不需要被隐藏,因此这个过程被称作签名,而非加密
数字签名和手写签名及印章的相同之处为:
1. 关联代表某个实体,因此签名(印章)包含实体特有的信息
2. 实施的签名(印章)关联证明了消息是实体曾经的意愿,和消息有相当可靠的联系
3. 签名包含了消息发送者独有的信息,可以防止否认
不同之处则为:
1. 数字签名的私钥是仅消息发送者才知道的信息,对于持有正确公钥的人来说,数字签名无法伪造
2. 数字签名通过对消息进行加密运算而获得,这种联系是数学上的,因此消息和签名可以分开经由不同媒体发送,而传统签名(印章)必须保证和消息在同一张纸上,且无裁剪拼接
3. 数字签名可对消息本身或消息的单向散列值施加,可以检测消息是否被篡改。传统签名无法做到这一点,需要采取其它措施
数字签名的缺点是需要消息接收者获得消息发送者数字签名正确的公钥,为了确保这一点,引入了数字证书
数字证书同身份证/驾照类似,是由可靠的第三方权威机构(KPL)发放,原理是机构对消息发送者的公钥实施数字签名。KPL机构首先通过多种媒体/渠道对数字签名注册人A进行认证,再对注册者A的公钥生成机构的数字证书,这样拥有正确的机构公钥的人就能验证获得的A的公钥是否真实有效了。
数字证书的内容包括个人/实体特有信息(不会有两个注册者填写的信息完全相同),数字证书算法以及机构对公钥的数字签名。
既然数字签名1的公钥1的可靠性是由数字签名2保证的,那么数字签名2的公钥2的可靠性又如何保证呢,这样的链条不能无限循环,最终的节点被称为root CA。除此外,还可以采用互相签名和自签名的方法
网友评论