应用层协议-HTTPS协议
一.概述
HTTP协议:初衷未考虑到安全性
HTTPS是在HTTP的基础上对应用层数据进行加密操作,HTTPS=HTTP+SSL/TLS
HTTPS (全称:Hypertext Transfer Protocol Secure [5]),是以安全为目标的 HTTP 通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性 。HTTPS 在HTTP 的基础下加入SSL,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL。
默认端口是443
二.HTTPS的由来
HTTP没有考虑安全性,很容易被黑客植入木马程序,导致用户浏览网站时能看到一些广告
急需一种能对应用层加密的技术,目前几乎所有的大厂全部换成了HTTPS协议
三.加解密技术
- 对称加密
对称加密:DES,3DES,AES,国密SM1(国家密码局制定的国家密码算法)
特点:加密密钥与解密的密钥是同一个
优点:加解密速度快
缺点:密码传输不安全
- 非对称加密
非对称加密:RSA,DSA,ECC,国密SM2
特点:加密密钥和解密密钥不是一个密钥,而是一对密钥,称为公钥和私钥,公钥是公开,私钥不能公开
用法:1.公钥加密,只能由私钥解密(加密数据) 2.私钥加密,公钥解密(验证数据)
优点:密钥传输相对安全,只要私钥保存好即可
缺点:加解密速度慢
- 摘要算法(数字签名)
摘要算法:hash,sha,MD5
特点:原文经过加密后,无法逆推
摘要算法不是对数据进行加密,而是验证数据不被篡改
四.数字证书
- 网页如何查看数字证书
- 数字证书的内容及作用
网站服务器用来验证网站是不是真的网站而不是冒牌网站,向浏览器传递公钥
五.HTTP为什么不安全
网络中会有大量的不明路由器,无法保证这些路由器是安全的,很容易遭受黑客攻击,然后劫持,用户与服务器之间的数据传递经过该路由器,容易被黑客利用
要保证通信安全需要解决三个问题:窃取风险,篡改风险,冒充风险
1.窃听风险
客户端与服务器相互发送消息容易被黑客抓取到,看到内容就是窃听
要解决窃听风险,可以对原文进行加密
要加密可以使用对称加密和非对称加密,摘要算法不适用加密数据,先看非对称加密
如果使用非对称加密,在第四段很可能会被黑客拦截并使用公钥解密原文出来,所以这种方式不适合
如果使用对称加密算法,传输对称密码的过程就不安全,导致黑客拿到对称密钥,后续所有的加密形同虚设
因此,把对称加密+非对称加密组合一起使用,对称密钥作为非对称加密的原文进行加密,发送给对方,后续全部使用对称密钥对消息进行加密
2.篡改风险
摘要算法解决是否被篡改风险
3.冒充风险
使用数字证书证明访问的网站是正牌网站,不是黑客冒充的网站
- 验证数字证书的内容
总结:
对称加密+非对称加密解决窃听风险
摘要算法解决篡改风险
数字证书解决冒充风险
就能保证传输的相对安全性
六.TLS和SSL
SSL和TLS是一个东西,只是在历史的发展中,改了名字
1 SSL和TLS发展史
2 TLS加密所属的层次
3 TLS握手机制
在证书交换过程中为了保证证书不被篡改,会对证书使用摘要算法,客户端发送迪菲赫尔曼参数A是,使用了证书中携带的公钥进行加密,也就是说前面是明文传输,迪菲赫尔曼参数A使用了非对称加密,后续消息使用了对称加密,对称密钥没有直接传输而是间接通过算法算出来了,DH 算法在数学上保证的,保证了安全性
七.迪菲赫尔曼密钥交换算法
迪菲-赫尔曼密钥交换(英语:Diffie–Hellman key exchange,缩写为D-H) 是一种安全协议。它可以让双方在完全没有对方任何预先信息的条件下通过不安全信道创建起一个密钥。这个密钥可以在后续的通讯中作为对称密钥来加密通讯内容。公钥交换的概念最早由瑞夫·墨克(Ralph C. Merkle)提出,而这个密钥交换方法,由惠特菲尔德·迪菲(Bailey Whitfield Diffie)和马丁·赫尔曼(Martin Edward Hellman)在1976年首次发表。马丁·赫尔曼曾主张这个密钥交换方法,应被称为迪菲-赫尔曼-墨克密钥交换(英语:Diffie–Hellman–Merkle key exchange)。
以Diffie-Hellman(DH)密钥交换算法来说明,流程如下:
- 双方协商并公开一个质数 p 和一个原根 g。
- 双方各自选择一个私钥 a 和 b,计算出公钥 A = g^a mod p 和 B = g^b mod p,并将公钥发送给对方。
- 双方根据对方发送的公钥计算出共享密钥:
- A方:S = B^a mod p
- B方:S = A^b mod p
- 双方都能够得到相同的共享密钥 S,用于后续通信中的加密和解密。
DH算法的优点:
- 通信双方不需要共享密钥,密钥不会通过网络传输
- 攻击者可以通过监视网络传输,得到算法参数(p,g)以及双方的公钥,但是【无法】推算出双方的私钥,也【无法】推算出会话密钥(这是由 DH 算法在数学上保证的)