25 | 固若金汤的根本(下):数字签名与证书

黑客虽然拿不到会话密钥,无法破解密文,但可以通过窃听收集到足够多的密文,再尝试着修改、重组后发给网站。因为没有完整性保证,服务器只能“照单全收”,然后他就可以通过服务器的响应获取进一步的线索,最终就会破解出明文。

—这里说的是对称加密的安全性和算法,秘钥长度,分组模式相关。比如以AES128-ECB方式加密,明文特征无法被隐藏,容易被破解;AES-CBC缺少hmac,无法保证消息的完整性;所以安全套件通常选AES-GCM,明文特征被隐藏并带有hmac,所以数据完整性是通过hmac保证的,而hmac和特定分组方式相关,另外GCM是对密文用对称秘钥做哈希摘要,不同于一般的无参数的哈希算法[参考陶辉72讲]

摘要算法解决数据完整性问题
算法SHA2
特点,对数据进行处理后生成一个定长的字符串,此字符串具有唯一性,原文微小的变动都会引起字符串剧烈的变动。【雪崩效应】
流程
原文+SHA2哈希码加密后传送到接收端,解密后,取得原文和哈希码,对原文进行SHA2哈希计算,结果和原哈希码比较,如果一致则说明原文在传输中没有被篡改。

数字签名和验签的原理图:

首先要澄清一个概念,数字签名对应与现实世界的签名,是对某文件条款内容的认同。数字签名及验签过程中传递两样东西,原文和摘要,原文是明文,不加密,摘要要用私钥加密。
过程是
0. 上图是原理图,具体到TLS握手,证书通过Certificate消息发送,包括了公钥,有效期等信息【原文】和指纹【数字签名】
1. 发送方根据原文【消息的signedCertificate部分】算出摘要,并用私钥加密,得到数字签名,和原文一同发给对端。
2. 接收方用公钥解密数字签名【消息的encrpted小节】,得到发送方传递过来的摘要
3. 接收方对原文做摘要,并比对2份摘要,如果一致,则证明发送方的身份是公钥的所有者。
注:encrpted是加密的签名而网站上直接查看的指纹是解密后的签名,所以对不上。

数字签名和数字证书
数字证书是由CA背书并签发的证明文件,包括了被签发者的公钥和版本,签发者,有效期,序列号,用途等信息【原文】,打包后再用CA的私钥签名,以证明被签发者的身份。
数字签名对应现实世界的签名,签名者自己证明其有效性,但他人无法确保其真实性。因为签名可以伪造,或当事人有恶意。
数字证书对应现实世界的证书,比如身份证,毕业证,由权威机构背书,证明其真实性,按级别分为DV,EV,OV.

证书类别
DV[Domain validated]
OV[organization validated]
EV[extended validation]
三种证书的安全强度是一致的,只是对申请者的审核严格程度逐步加强。

课后作业:

为什么公钥能够建立信任链,用对称加密算法里的对称密钥行不行呢?
不行,对称加密无法解决秘钥传递问题
而公钥的信任链中有个各方都信任的Root Ca,下面有一级,二级CA,证书由CA的私钥保证证书的真实性,上级CA保证下级CA的真实性,如此就建立了一个信任链条。

假设有一个三级的证书体系(Root CA=> 一级 CA=> 二级 CA),你能详细解释一下证书信任链的验证过程吗?—注服务器的证书由二级CA签发。
TLS协商阶段,在交换完Client Hello/Server Hello消息后,发送方【通常是服务器】,发送Certificate消息,把证书链,包括自己的证书,二级CA证书,一级CA证书,一次性发送给接收方【通常是浏览器】。

注:每个传递过来的证书包括4部分
signedCertificate签名的证书,即浏览器点击小锁头直观可以看到的证书
algorithmIdentifier算法标记,包括了签名证书用到的摘要和签名算法,如sha256WithRSAEncryption
Padding填充字符
encrpted加密摘要,注:加密摘要不包含在signedCertificate中,所以浏览器中点击小锁头看不到加密摘要【浏览器显示的是解密后的明文的摘要】。

当前接收方只有内置的Root Ca根证书,无法直接信任接收方的证书。接收方将通过证书链中包含的签发者信息,逐层向上查找直到Root Ca根证书,并从根证书开始,逐级向下做验签。首先,用根证书对一级证书做验签。具体过程是,对一级CA证书【signedCertificate】用传递过来的摘要算法【algorithmIdentifier】做摘要得到摘要1;用Root Ca根证书的公钥解密一级CA证书的数字签名【encrpted】,得到发送过来的摘要2,二者比较,如一致,则认为一级CA证书是真实有效的。类似的,继续用一级CA证书对二级CA证书做验签,二级CA证书对发送方证书做验签,如果发送方证书验证通过,则随之TLS协商进入Server key exchange阶段。

附:数字证书验签流程图

整个证书的验证流程是
通过Issuer’s–Owner’s获得证书链的所有证书,根证书是内置的,CA,Owner的证书是随Certificate发送的
根证书验证CA
CA验证Owner
验证的依据是用上级证书的公钥验证下级证书的签名

罗剑锋透视HTTP协议学习笔记---25 | 固若金汤的根本(下):数字签名与证书相关推荐

  1. 罗剑锋透视HTTP协议学习笔记---24 | 固若金汤的根本(上):对称加密与非对称加密

    24 | 固若金汤的根本(上):对称加密与非对称加密 对称加密 对称加密速度快,但无法解决秘钥传递问题,目前常见的有AES256,CHACHA20. 注:和一般意义上认知的密码不同,TLS中的&quo ...

  2. 【剑指Offer】个人学习笔记_32_从上到下打印二叉树 IIIIII

    目录 I 题目: [剑指 Offer 32 - I. 从上到下打印二叉树](https://leetcode-cn.com/problems/cong-shang-dao-xia-da-yin-er- ...

  3. Servlet和HTTP请求协议-学习笔记02【Servlet_体系结构与urlpartten配置、HTTP请求协议】

    Java后端 学习路线 笔记汇总表[黑马程序员] Servlet和HTTP请求协议-学习笔记01[Servlet_快速入门-生命周期方法.Servlet_3.0注解配置.IDEA与tomcat相关配置 ...

  4. Servlet和HTTP请求协议-学习笔记01【Servlet_快速入门-生命周期方法、Servlet_3.0注解配置、IDEA与tomcat相关配置】

    Java后端 学习路线 笔记汇总表[黑马程序员] Servlet和HTTP请求协议-学习笔记01[Servlet_快速入门-生命周期方法.Servlet_3.0注解配置.IDEA与tomcat相关配置 ...

  5. POP3协议学习笔记

    今日得闲,于是将POP3的学习笔记也整理出来! 互联网上的TCP/IP,POP3/SMTP等资料多如牛毛,这里只是自己一点点心得,另外对于各位网络方面的大牛请安静的路过,我可不喜欢在关公面前耍大刀.. ...

  6. CoAP协议学习笔记 1.3 用UDP工具来调试CoAP

    1 前言 CoAP的调试,目前没找到好用的工具,网上说的火狐插件现在也不能用了,多希望手头的TCP/UDP网络调试工具就可以支持. 既然CoAP是基于UDP来组包的,那肯定是可以实现. 所以这篇文章给 ...

  7. 网络协议学习笔记 · 22

    IPv6 · 流媒体 · 即时通讯 · 缓存 · 网络爬虫 VPN 作用 VPN与代理的区别 实现原理(隧道协议) 网络爬虫 简易实例 robots.txt 无线网络 缓存(Cache) 响应头 请求 ...

  8. CoAP协议学习笔记 1.2 一张表了解 CoAP 协议

    1 前言 对于CoAP协议的学习,这份100多页的文档肯定没法背下来.我们只需把协议当作工具书,大体知道主体的内容,在遇到细节问题时再去具体章节找问题. 本篇笔记中先对 CoAP 协议内容做个基础了解 ...

  9. CoAP协议学习笔记 3.1 CoAP协议翻译 加密基础介绍

    CoAP协议学习笔记可点此查看. 1 前言 在之前的学习中,没有过多关注加密.但实际部分厂家的IoT平台(阿里云.OneNET)已经启用了相关安全处理,有必要深入学习下. 在 CoAP 协议 RFC7 ...

最新文章

  1. 郭的好象在推销,实在内容很少.
  2. yy神曲url解析php_使用PHP来简单的创建一个RPC服务
  3. iptables基础篇
  4. NOI入门级:数据结构之线性表
  5. codevs1521 华丽的吊灯
  6. 浅谈linux性能调优之六:IO调度算法的选择
  7. linux如何快速入门
  8. html jquery图片轮播代码,jQuery实现图片轮播效果代码,jquery实现代码
  9. python下载加密m3u8_基于Python3实现的m3u8批量下载器 解密合并多线程 (开车新姿势~)...
  10. linux中wps默认安装目录,在Linux系统中安装使用WPS的方法
  11. 计算机专业毕业设计工作日志,计算机科学技术系毕业设计工作日志.doc
  12. 南通万豪酒店开业;诺瓦瓦克斯任命新任总裁兼CEO | 美通企业日报
  13. 微信小程序校园论坛+后台管理系统|前后分离VUE
  14. Drcom校园网自动登录
  15. Google Guava 的 5 个鲜为人知的特性
  16. 哔哩哔哩2021校招末班车来了!
  17. pythonocc 切完显示要要.Shape()
  18. 文件服务器资源管理器的作用,文件服务器资源管理器 (FSRM) 概述
  19. 微信公众号文章中如何添加附件?
  20. 合肥工业大学——java(最新版)——第二次作业

热门文章

  1. unity3d 滚动字幕
  2. App Store修改开发者名字
  3. _pickle.PicklingError: Can‘t pickle <class ‘__main__.XXXX‘>: attribute lookup XXXX on __main的解决方法
  4. iOS面试·一个iOS程序员的BAT面试全记录(内含百度+网易+阿里面试真题)
  5. 电脑知识大全之如何只修改word一页的页眉
  6. 前端开发流程中一定要注意的5个点
  7. 鼠标右键不能单元测试
  8. 20180409-C · NFL Positional Salaries · ggplot2, 折线图 散点图 分面图 · R 语言数据可视化 案例 源码
  9. 湖南省内看日出云海星空的小众景点——云台山风景区
  10. Python爬取岗位数据并分析