1、SSL协议:网络安全协议(安全套接层)
? 1)SSL协议是在传输通信协议上实现的一种安全协议,采用公开秘钥技术,广泛支持各种类型的网络,同时提供三种基本的安全服务:
? 3)TLS协议是SSL协议3.0版本。
?
2、HTTP协议与HTTPS协议的区别
? HTTPS协议的全称为Hypertext Transfer Protocol over Secure Socket Layer,它是以安全为目标的HTTP通道,其实就是HTTP的“升级”版本,只是它比单纯的 HTTP协议更加安全。 ? HTTPS 的安全基础是SSL,即在HTTP下加入SSL层。也就是HTTPS通过安全传输机制进行传送数据,这种机制可保护网络传送的所有数据的隐秘性与完整性,可以降低非侵入性拦截攻击的可能性。 ? 既然是在HTTP的基础上进行构建的HTTPS协议,所以,无论怎么样HTTP请求与响应都是以相同的方式进行工作的。
HTTP协议与HTTPS协议的主要区别如下。
-
HTTP是超文本传输协议,信息是明文传输,HTTPS 则是具有安全性的SSL加密传输协议。 -
HTTP与HTTP协议使用的是完全不同的连接方式,HTTP 采用80端口连接,而HTTP则是443端口。 -
HTTPS协议需要到ca 申请证书,一般免费证书很少,需要交费,也有些Web容器提供,如TOMCAT。而HTTP协议却不需要。 -
HTTP连接相对简单,是无状态的,而 HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,相对来说,它要比HTTP协议更安全。
3、对称密钥加密
? 加密和解密用的是同一个密钥,也叫共享密钥加密,加密的时候必须将共享密钥明文传送给对方,如果此时攻击者拦截了共享密钥,那么使用共享密钥加密过的消息也就不安全了。
4、非对称加密(公开密钥加密)
? 也叫公开密钥加密,是成对的出现的,分为公钥(随意发布的,任何人都可以获取)和私钥(只能由自己知道),公钥加密之后的内容必须通过私钥进行解密。服务端把公钥发送到客户端,客户端用服务端的公钥生成密文,然后把密文发送出去,接收方使用自己的密钥进行解密,这种加密方式,不需要把密钥暴露在互联网中,相对来说是安全的。 ? 但是这种方式,也会出现一种情况,导致传输的数据是不安全的,即:公钥在传输的过程中被攻击者拦截了,给客户端发送了一个攻击者自己的假的公钥,然后客户端不知道这是来自攻击者的公钥,就用这个假公钥对数据进行了加密,然后把加密后的数据发送给攻击者,攻击者用自己的私钥解密了数据,这样对数据也是不安全的,所以还是需要解决的。
5、CA证书
? 到这里,就会引入一个第三方的机构,既然无法确定双方的身份,就和支付宝一样,用户和商家无法对货款和货物做出判断,那么就交由第三方进行监督,这里也是一样的,CA机构就是做这件事情的,在进行交换消息之前,服务器会向CA机构申请一个证书,CA证书,CA证书使用数字签名的方式加密,CA机构会审核服务器的身份后,才会颁发给服务端,CA证书具有权威性,中间的攻击者是很难伪造的,在颁发的同时还会有公钥和私钥,这时公钥就具有了权威性,中间人无法伪造,客户端在接收到公钥和证书后会首先对CA证书进行验证,如果验证通过才会继续后面的通信。 ? 引入了CA证书的话,非对称性加密就做到了绝对安全,但是非对称加密效率比较低,比对称加密慢很多,所以,https就使用“对称加密+非对称加密”组合的方式做加密流程的。具体如下: ? 1,浏览器使用Https的URL访问服务器,建立SSL链接。 ? 2,服务器接收到SSL链接后,发送非对称加密的公钥A给浏览器。 ? 3,浏览器生成随机数,作为对称加密的密钥B(要传输的明文数据)。 ? 4,浏览器使用服务器返回的公钥A,对自己生成的对称加密密钥B进行加密,得到密钥C。 ? 5,浏览器将密钥C发送给服务器 ? 6,服务器使用自己的私钥D对接受的密钥C进行解密,得到对称加密密钥B。 ? 7,浏览器和服务器之间使用密钥B作为对称加密密钥进行通信。
小总结:通过上面的流程浏览器和服务器之间共享一个对称加密密钥B,而且不会被人监听和拦截到,之后的消息传递,使用密钥B进行对称加密。即:通过非对称加密对对称加密(对称加密是明文的)的密钥进行加密,在约定好了密钥后,然后后续的消息传递使用对称加密,这样算下来效率会提高很多。
6、数字签名(验证非对称公钥是否来自服务器)
重要:在第四步之前,浏览器会先判断发送来的非对称性公钥是否来自服务端,如果是,就使用此公钥对 对称性密钥B(明文数据)进行加密,生成密钥c,然后才会把密钥c发送给服务器,如果判断发来的公钥不是来自服务端,而是攻击者已经攻击了,就不会再对明文数据进行加密了。这个步骤到底怎么实现的呢?看下面的分析
? a,第二步时,服务器向浏览器发送非对称性公钥A的时候,会通过hash算法把公钥和服务器的个人信息生成信息摘要。
? b,为了防止信息摘要被调换,服务器会采用CA提供的私钥进行加密来生成数字签名。也就是说,数字签名是由服务器的公钥和服务器的个人信息组成的。
? c,最后,会把之前没有经过hash算法之前的服务器公钥和服务器个人信息,和最后生成的数字签名 合并在一起,生成数字证书。然后才把数字证书发送给客户端。
? d,客户端拿到数字证书之后,采用CA 的公钥对数字证书里的数字签名进行解密(加密的时候是使用CA的私钥对信息摘要加密的),来获取信息摘要。然后再对数字证书里面的服务器个人信息、公钥进行hash算法,得到另一份信息摘要。 ? e,最后客户端对两份摘要信息比对,如果一样的话,证明发送公钥者是服务器,否则的话,就是攻击者。
7、为什么数据传输是用对称加密?
首先,非对称加密的加解密效率是非常低的,而 http 的应用场景中通常端与端之间存在大量的交互,非对称加密的效率是无法接受的;
另外,在 HTTPS 的场景中只有服务端保存了私钥,一对公私钥只能实现单向的加解密,所以 HTTPS 中内容传输加密采取的是对称加密,而不是非对称加密。
8、为什么需要 CA 认证机构颁发证书?
HTTP 协议被认为不安全是因为传输过程容易被监听者勾线监听、伪造服务器,而 HTTPS 协议主要解决的便是网络传输的安全性问题。
首先我们假设不存在认证机构,任何人都可以制作证书,这带来的安全风险便是经典的 “中间人攻击” 问题。 “中间人攻击”的具体过程如下:
过程原理:
- 本地请求被劫持(如DNS劫持等),所有请求均发送到中间人的服务器
- 中间人服务器返回中间人自己的证书
- 客户端创建随机数,通过中间人证书的公钥对随机数加密后传送给中间人,然后凭随机数构造对称加密对传输内容进行加密传输
- 中间人因为拥有客户端的随机数,可以通过对称加密算法进行内容解密
- 中间人以客户端的请求内容再向正规网站发起请求
- 因为中间人与服务器的通信过程是合法的,正规网站通过建立的安全通道返回加密后的数据
- 中间人凭借与正规网站建立的对称加密算法对内容进行解密
- 中间人通过与客户端建立的对称加密算法对正规内容返回的数据进行加密传输
- 客户端通过与中间人建立的对称加密算法对返回结果数据进行解密
由于缺少对证书的验证,所以客户端虽然发起的是 HTTPS 请求,但客户端完全不知道自己的网络已被拦截,传输内容被中间人全部窃取。
9、证书的合法性依据是什么?
首先,权威机构是要有认证的,不是随便一个机构都有资格颁发证书,不然也不叫做权威机构。另外,证书的可信性基于信任制,权威机构需要对其颁发的证书进行信用背书,只要是权威机构生成的证书,我们就认为是合法的。所以权威机构会对申请者的信息进行审核,不同等级的权威机构对审核的要求也不一样,于是证书也分为免费的、便宜的和贵的。
-
HTTPS 为什么安全?
-
因为 HTTPS 保证了传输安全,防止传输过程被监听、防止数据被窃取,可以确认网站的真实性。
-
HTTPS 的传输过程是怎样的?
-
客户端发起 HTTPS请求,服务端返回证书,客户端对证书进行验证,验证通过后本地生成用于改造对称加密算法的随机数,通过证书中的公钥对随机数进行加密传输到服务端,服务端接收后通过私钥解密得到随机数,之后的数据交互通过对称加密算法进行加解密。
-
为什么需要证书?
-
防止”中间人“攻击,同时可以为网站提供身份证明。
-
使用 HTTPS 会被抓包吗?
-
会被抓包,HTTPS 只防止用户在不知情的情况下通信被监听,如果用户主动授信,是可以构建“中间人”网络,代理软件可以对传输内容进行解密。
|