概念简述
HTTPS 证书主要使用了以下相关技术:
- 对称加解密算法:加解密使用“相同的密钥”;
- 非对称加密算法:加解密使用“不同的密钥”;
- 消息摘要算法:如 MD5、SHA 是 摘要/哈希 算法,不可逆,不是加密算法;
- 数字签名技术:是 “非对称加密” 与 “消息摘要” 的组合;
- 数字证书技术:“HTTPS 证书” 是数字证书的一种,是以上技术的组合应用;
区块链,看起来像 “数字证书” 验证链的简化版。
非对称的应用
非对称加密一般会产生 “公钥” 和 “私钥”,加解密使用不同的 “密钥”。
见名知意,“公钥” 是公开的,“私钥” 需要创建者自行保管,不可对外公开。
- “公钥” 加密的内容,必须用“ 私钥” 解密;
- “私钥” 加密的内容,必须用 “公钥” 解密。
既然 “公钥” 是公开的,“私钥” 加密的内容任何人都可以解密,那 “私钥加密” 的意义何在?
有意义!因为 “私钥” 加密的内容只有对应的 “公钥” 可以解密,且 “私钥” 有 “我” 保管。
那么,如果你能用 “我” 的 “公钥” 解开这段密文,说明这段密文是由 “我” 发出的。
也就是说,“我的身份” 与 “密文” 产生了绑定关系,其他人都可以用 “公钥” 进行验证,解密成功代表验证通过(不考虑中间人攻击)。
所以上面那段话可以再简化改写成:
- “公钥” 加密 “私钥” 解密;
- “私钥” 签名 “公钥” 验签。
数字签名
“数字签名” 对应的场景是验证数据是不是由某个主体产生的(上面使用 “我” 来代替这个主体)。使用的技术是 “非对称加密” 与 “消息摘要” 的组合。
既然 “私钥” 可以直接对数据进行 “签名”,为什么又需要用到 “消息摘要” 呢?
- “非对称加密” 有个缺点,就是加解密的性能不高,数据量大时比较慢;
- “消息摘要” 的性能要高几个数量级,同时可应用于验证数据的完整性;
数字签名的 “签名” 与 “验证” 过程如下图:
核心在于框里的部分,摘要 可对 原始数据的 完整性进行保证。
- 如果把“摘要”看成“原始数据”,就会简化成 “私钥签名,公钥验签”
- 多出来的流程,是因“解密/验签”的结果是“摘要”,所以要分别对“两份摘要”进行对比
数字证书 “链”
上文中的 “数据” + “摘要” + “签名” + “公钥” 就组成了一个基本的 “证书”。
这个“证书”还有个问题,就是如果遇到 “中间人攻击” 时,“你” 与 “我” 咱们之间的“信任问题”无法解决。就像这样:
“我”以为在跟“小明”对话,“小明” 也以为在跟 “我” 对话。
解决这个问题,需要 “三方机构” 给我证书进行 “认证签名”,就像这样。
我花钱让 “小C” 给我颁发证书,“我” 和 “小明” 的电脑里都有 “小C” 的证书,都无条件信任 “小C”。
如果这时候有 “小三” 偷听,给 “小明” 传递消息时,“小明” 拿到证书,发现名字不是 “我”,签发机构 也不在信任列表中,就能察觉当前对话的问题。
- “小三” 也可以向 CA 机构申请,但是 “小三” 的证书内容不能跟 “我” 一样,如:域名
- 如果想跟我的 名字 一样,可以 “自签发”,但是自签发的证书不在“共识”的信任列表中
区块链
把上面 HTTPS 证书的样式内容调整一下(证书类比区块、证书内容类比区块交易),如下图:
再对比一下《比特币白皮书》中的区块链结构:
是不是很像?其实还是“数字证书”的这一套技术体系,以此来解决“数据信任”问题。
除此之外,随着技术的演进,也创造出了非常多的新概念,同时也引入了新的问题,又通过新的概念与技术解决这些新问题,循环往复。比如:
- 数字证书的认证,实际上是一个树形结构,因为一个 CA 机构可以给多个主体颁发证书
- 树形结构在区块链中的概念为 “分叉”,意味着交易存在 “双花问题”,是不被允许的;于是又通过 PoW(谁有劲听谁的)、 PoS(谁有钱听谁的)、EOS(谁有权听谁的)等共识机制,来保证不出现 “分叉”,维持 “链” 式结构
- 上面提到的 “公钥” 和 “私钥”,跟 区块链 中的 “钱包” 概念也很相似
- “私钥” 在 区块链 的概念里面对应 “钱包”,由持币者保管,如果忘了你的币也就没有了
- “公钥” 则对应 “钱包地址”,转账通过公钥进行加密交易
- 通过 “私钥” 是可以推算出“公钥的,为了避免 “私钥” 忘记导致丢币
- 又创造出 “助记词” 的概念,通过相对来说有含义的“词组”和“标准”,最终生成一堆钱包
- 其实就是上面说到的 “摘要算法” 的混合应用,先把助记词进行 “摘要”,再通过摘要生成 “公钥私钥”,也就是 “钱包”
等等...
Reference
- 20 张图彻底弄懂 HTTPS 的原理!:https://mp.weixin.qq.com/s/Zr_tIlhAjH7v8I-L5FC31g
- 《比特币白皮书》 这个是公开的,如果不想自己搜,可以关注公众号,回复 比特币白皮书 获取
扫码关注公众号