1.https
http是明文协议:可以抓包,数据容易被窃取改变
https:
非对称加密:密钥是一对,公钥和私钥,(非常慢,因为每次都要计算)
数学基础是:两个超大素数求乘积非常容易,但是分解因子非常麻烦
公钥就是乘积,私钥就是其中一个非常大的素数,拿私钥去揭秘非常简单
rsa算法: a b 互相发送公钥,然后用对方的公钥加密,让对方用自己的私钥解密
a用b的公钥对a的私钥进行了加密,把自己的密钥发给吧,b有了a的私钥,就可以用
私钥来进行加密
HTTPS和HTTP的区别主要如下:
1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。
2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,
后者是443。
4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、
身份认证的网络协议,比http协议安全。
2.https
假设有一个攻击者处于“浏览器”和“网站服务器”的通讯线路之间(比如公共WIFI),它的攻击过程如下:
服务器向客户端发送公钥。
攻击者截获公钥,保留在自己手上。
然后攻击者自己生成一个【伪造的】公钥,发给客户端。
客户端收到伪造的公钥后,生成加密hash值发给服务器。
攻击者获得加密hash值,用自己的私钥解密获得真秘钥。
同时生成假的加密hash值,发给服务器。
服务器用私钥解密获得假秘钥。
FIddler就是通过这种方式截获HTTPS信息。
DNS劫持:
一般而言,用户上网的DNS服务器都是运营商分配的,所以,在这个节点上,运营商可以为所欲为。
运营商DNS劫持返回302让用户浏览器跳转到另外的地址,
HTTP劫持:
在运营商的路由器节点上,设置协议检测,一旦发现是HTTP请求,而且是html类型请求,则拦截处理。后续做法往往分为2种,1种是类似DNS劫持返回302让用户浏览器跳转到另外的地址,还有1种是在服务器返回的HTML数据中插入js或dom节点(广告)
一般用https,或者
HTTP/0.9 和早期的 HTTP/1.0 协议对 HTTP 请求处理是串行化的。假如一个页面包含
3 个样式文件,同属于一个协议、域名、端口。那么,浏览器一共需要发起四次请求
,并且每次只能打开一个 TCP
通道,在一个请求资源完成下载后,立刻断开该连接,再开启一个新的连接去处理队
列中的下一个请求。随着页面资源大小、数量的不断扩增,网络延迟时间会不断堆积
,用户会面对满屏空白,等待过长时间而失去耐心