1.数字签名简介
2.数字签名工作流程
1.数字签名简介
a.数字签名解决: "我收到的这个东西, 到底是谁发的? 中途有没有被人掉包?"
b.数字签名的核心三要素:
- 身份认证: 确认信息发送者的真实身份
- 完整性校验: 确保信息在传输过程中没有被修改
- 不可否认性: 发送者事后不能抵赖说"我没发过这条信息"
2.数字签名工作流程
数字签名的过程依赖于一对密钥: 私钥和公钥, 这被称为"非对称加密"
a.私钥: 绝对保密, 只有主人自己持有; 它就是你的"网络玉玺"
b.公钥: 完全公开,可以发给任何人; 它就像玉玺的"官方印鉴图谱", 用来核对印章真伪
1).发送方"签名"
假设Alice要发一份电子合同给Bob, 并要签名
a.计算"数字指纹": Alice的电脑用一个叫"哈希函数"的数学算法, 对合同文件进行计算, 生成一串固定长度、独一无二的
指纹; 哪怕文件只改了一个标点, 指纹也会完全不同
b.用私钥加密指纹: Alice用她自己严格保密的私钥, 去加密这个"数字指纹"
c.生成最终包裹: 将原始合同和这个加密后的指纹(即"数字签名")一起发送给Bob
小老师点睛: 签名过程并没有加密合同内容本身(除非额外做加密), 而是加密了它的"指纹", 这保证了效率和安全性的平衡
2).接收方"验签"
Bob收到了合同和签名
a.分离: Bob把收到的信息分开, 得到原始合同和数字签名
b.重现指纹: Bob用同样的哈希函数, 对自己收到的这份原始合同进行计算, 得到一个新的"数字指纹A"
c.解密签名: Bob用Alice公开的公钥, 去解密收到的"数字签名", 如果能成功解开, 就证明这个签名一定是用对应的私钥加
密的; 解密后, 得到了签名里包含的"数字指纹B"
c.对比指纹: Bob对比自己算出的指纹A和解密出的指纹B
d.如果完全一致: 万岁!这证明:
- 身份真实: 签名是用Alice的私钥加密的, 所以发送者一定是Alice
- 内容完整: 两份指纹一致, 说明合同在传输中未被篡改
e.如果不一致: 警报!要么发送者不是Alice(私钥不对), 要么合同被篡改过(指纹对不上)
Q1: 为什么不直接用私钥加密整个文件
因为非对称加密计算很慢, 对大文件效率极低; 而哈希指纹很短小, 加密它速度非常快, 且能达到同样的防篡改和认证效果
Q2: 公钥是公开的, 那坏人不能用公钥伪造签名吗
绝对不可能!这是非对称加密的核心魔法: 用公钥加密的东西, 只有私钥能解开; 用私钥加密(即签名)的东西, 公钥只能用
来验证它, 但不能用它来反向伪造签名; 只要私钥不泄露, 签名就无法伪造
Q3: 我怎么相信一个公钥就是Alice的?会不会有人冒充?
简单说, 有一个大家都信任的权威机构(CA,如DigiCert, GlobalSign), 它用自己的私钥给Alice的公钥(和她的身份信息)
签了个名, 生成了一个"数字证书"; 就像公安局给你的身份证盖章一样, 我们电脑里预存了这些权威机构的根公钥, 可以用
来验证Alice的证书是否真实; 这样, 信任链就建立起来了(需要一个可信的第三方来为公钥做担保)