1.HTTP与HTTPS区别
HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全,为了保证这些隐私数据能加密传输,于是网景公司设计了SSL(Secure Sockets Layer)协议用于对HTTP协议传输的数据进行加密,从而就诞生了HTTPS。简单来说,HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全。
2.加密方式
(1)对称加密
对称加密就是客户端和服务器使用同一个密钥,这个密钥既可以实现加密,也可以实现解密,客户端传输的数据(HTTP协议中的header和body)被密钥加密之后,将密文和密钥兜传到服务器,服务器再这个密钥解密拿到明文。 缺陷:这种只进行对称加密的行为其实无异于掩耳盗铃,因为在传输过程中密钥也被传输了,那么黑客在传输过程中间的网络设备也可以轻松获取到密文和密钥之后进行解析篡改,但是我们在传输过程中无法避开中间的网络设备,因此我们就需要将这个对称密钥进行进一步加密
(2)非对称加密
非对称加密涉及两个密钥,公钥和私钥,公钥就是人人都能获取到,私钥就是只有自己才知道,可以使用公钥来进行加密,使用私钥来解密,或者反过来 例如服务器生成一对公钥和私钥,公钥进行加密,那么公钥加密后的内容就只能用私钥进行解密,服务器将公钥通过网络传输给客户端,客户端再生成一对对称密钥(对称密钥的计算开销要远远小于非对称加密,如果我们使用对称加密来加密数据,通过非对称加密加密对称密钥,那么计算量很小,而且只需要传一次,因此十分节省成本),客户端通过获得的公钥对自己生成的对称密钥进行加密,然后将密文和加密后的对称密钥传输给服务器,服务器通过自己的私钥解密对称密钥,再用对称密钥解密密文获取明文 缺陷:上述过程还是存在问题,就是服务器生成的公钥需要通过中间人传输到客户端,那么中间人如果劫持到这个服务器发来的公钥,并且自己生成一对新的公钥和私钥,将原本要传输的公钥替换成自己生成的公钥,客户端这时收到的公钥是黑客生成的,然后通过黑客生成的公钥对对称密钥进行加密,中间人收到后可以通过私钥对这个对称密钥解密,之后得到数据,再通过服务器传来的公钥进行加密,传给服务器,这样谁都不知道中间经历了第三者的攻击,神不知鬼不觉的盗取数据
(3)引入第三方公信机构
为了解决上述的“中间人攻击”,我们就需要引入一个第三方公信机构来证明这个公钥是一个合法公钥,服务器在开始上线的时候,需要提供一些相关的资质,来申请一个证书,服务器所申请的公钥就放在证书之中,当客户端尝试获取公钥时,就不仅仅是获取公钥了,而是获取整个证书,这时就可以判断公钥的可信性。客户端如何验证这个证书不是伪造的呢:1.证书上自身有一些校验机制 2.向公信机构求证 如果黑客伪造了证书,浏览器就会弹框警报 fiddler抓包HTTPS的过程: 其实我们在用fiddler进行抓包HTTPS时,就是利用到了中间人攻击,我们手动的选择信任fiddler的证书,让fiddler可以从中获取到HTTPS协议,但是fiddler不会篡改数据,而只是将数据呈现出来
|