这是我参与8月更文挑战的第 1 天,活动详情查看:8月更文挑战算法
HTTPS 相比 HTTP 主要解决原先存在的安全问题浏览器
如使用纯文本的形式传输 header,没有完整性校验没法验证是否篡改,没有有效手段确认通讯双方的身份等。安全
除此以外,它和 HTTP 表现一致,如传输内容不限于文本,分为请求方和应答方,有链接无状态等。markdown
安全性主要由 SSL / TLS 来保障。oop
HTTPS 由原来的直接和 TCP 通讯,变为先和 SSL / TLS 通讯。post
SSL,指安全套接层。TLS,指传输层安全。二者其实含义相近,TLS1.0 是 SSL3.1的正式标准化版本。加密
使用 TLS 创建链接时,会选用一组加密算法,它也称为密码套件。spa
命名格式比较固定,一般由密钥交换算法,签名算法,对称加密算法,摘要算法组成,来保障安全。操作系统
如,ECDHE-RSA-AES256-GCM-SHA384
3d
安全能够从四个方面来理解:
机密性,即只有可信的人才能访问
对应上述的密钥交换算法(非对称加密算法,常为 ECDHE)和对称加密算法
HTTPS 采用混合加密的形式,使用非对称加密算法传输用于对称加密的密钥。
非对称加密,分为公钥和私钥,一般基于复杂的数学问题,计算量大;
对称加密,加密解密使用同一密钥,计算快,但交换密钥时存在安全问题。
混合加密将二者结合,效益最大。
完整性,即数据在传输过程当中没有发生篡改
对应上述的摘要算法
请求方会生成摘要附在原文后,应答方收到数据后,再作一次计算进行比对来验证是否发生篡改。
完整性须要以机密性为前提,不然能够同时篡改摘要和内容,便失去了意义。
身份认证,便可以验证对方身份的真实性。
不能否认性,即不能抵赖已经作过的事。
身份和不能否认性,对应上述的签名算法(非对称加密算法,常为 RSA) 。
使用私钥加密,公钥解密的方式,私钥加密原文摘要,即数字签名,公钥解密后与摘要进行比对,来达到验证身份的效果。
数字证书是为了验证公钥的来源,即确认是你的公钥。借助 CA 证书认证机构,来为各个公钥签名(像现实中的大佬背书)。
证书能够分为 DV, OV, EV,可信度递增。
免费证书一般为 DV,只验证域名,并不知道持有者身份。OV 会验证持有者的身份信息,EV 则更严格,涉及支付等对安全性要求高的站点会使用。
证书中包含各项信息,如颁发者,使用者,有效期等,其中最重要的为证书签发机构的公钥,及由证书签发机构的私钥对摘要加密后生成的签名。
由此咱们能够知道,信任链的认证过程,形如:
其中须要注意的是,根证书的签名是由本身签发的,对此,只能选择信任。
CA(证书认证机构)的信任链也可能出现问题,如被黑客攻击,此时能够选择在浏览器或操做系统中撤销对 CA 的信任,或借助 CRL (证书吊销列表),OCSP(在线证书状态协议) 找到有问题的证书
握手主要是为安全地交换会话密钥,也就是作前文提到的:使用非对称加密算法传输用于对称加密的密钥
在这过程当中,共出现了三个随机数(C,S,Pre-master),主要用于提升随机性,达到不可预测,提升破解的难度
根据密钥交换算法(即非对称算法)的选择不一样,能够分为两种。
一种为目前主流的使用 ECDHE,客户端和服务端会相互交换 ECDHE 的公钥,由两个公钥再使用 ECDHE 计算得 pre-master,和握手过程当中交换获得的客户端随机数,服务端随机数一块儿生成主密钥。这种形式具备前向安全性,每次握手时交换的公钥私钥对都是临时的,黑客破解一个后只破解了一次会话。
另外一种为传统的 RSA,由客户端直接生成随机数 pre-master,使用服务端提供的 RSA 公钥传递。以后的流程类似,借助三个随机数生成主密钥。相比 ECDHE,这种方式的公钥固定,容易被破解。
透视 HTTP 协议 yyds!
【第2248期】安全背后: 浏览器是如何校验证书的 荐!
【SSL】OV、DV和EV证书的区别
本文为阅读 安全篇 后的总结,带有我的理解部分。 如存在理解误差,欢迎一块儿讨论~