1。从加密算法说起非对称加密:简单来说一句话:用公钥加密的密文只能用私钥解密,用私钥加密的密文只能用公钥解密。私钥可以生成公钥,但是公钥很难推导出来。比如:想一个3位数,把这个数乘以91,然后告诉我乘积的后三位数,我就能猜出对方想的是什么数!比如123,计算123*91等于11193,把结果的后三位告诉我,193,这时候我只要把对应的结果乘以11,结果的后三位就可以了产品是我刚刚想到的数字。可以验证,193*11=2123=>123的原理很简单,91乘以11等于1001,任意三位数乘以1001后,后三位不变。(当然你可以用2001、3001,只要你能分解即可。)根据这个原理,我们可以构造一个加密值更大的加解密系统。例如,任意数乘以10000000001后,后10位数字不变。然后用计算机对10000000001进行因式分解,就可以构造出一个十位非对称加密体系。对称加密使用相同的密钥进行加密和解密,常见的对称加密有DES、AES等。但缺点是密钥难以管理和分发,不太安全,密钥容易丢失或被盗。相对来说,非对称加密只公开公钥,私钥自己保管更安全。2.HTTPS原理HTTP协议的缺点明文通信——在不验证通信方身份的情况下,内容将被监听——可能在不验证内容完整性的情况下遇到伪装——内容已被篡改HTTPS简介HTTPS协议(HyperTextTransferProtocol)overSeureSocketLayer)可以理解为HTTPS=HTTP+SSL/TLS,通过SSL/TLS增加了HTTP的安全性。SSL(TLS)SSL(SecureSocketLayer,安全套接字层):由Netscape于1994年开发,SSL协议位于TCP/IP协议和各种应用层协议之间,为数据通信提供安全支持。TLS(TransportLayerSecurity):它的前身是SSL,它的前几个版本(SSL1.0、SSL2.0、SSL3.0)是由Netscape公司开发的。1999年从3.1开始被IETF标准化并更名,至今已有TLS1.0、TLS1.1、TLS1.2三个版本。SSL3.0和TLS1.0由于安全漏洞很少使用。TLS1.3的改动会比较大,目前还在草案阶段。使用最广泛的是TLS1.1和TLS1.2。为什么需要第三方出具证书?服务器发送给客户端的公钥依然会被劫持,传输内容依然会被解密。劫持者可以使用自己的私钥生成新的公钥,修改内容并用自己的私钥加密,然后将修改后的内容和自己生成的公钥发送给客户端。因此,需要引入第三方机构来颁发证书。3、一句话完整的HTTPS通信概括了通过数字证书和非对称加密建立SSL连接,生成并传输用于对称加密的密钥。随后的HTTP通信使用对称加密来保护内容。在保证安全的同时,也提高了效率。客户端第一次向服务器请求建立SSL连接。服务器返回CA颁发的数字证书,其中也包含非对称加密的密钥。与服务器建立连接后,客户端会发送一个随机的密码串,称为Pre-mastersecret(用公钥加密)——此时只有服务器才能解密密码串。服务器通过私钥解密Pre-mastersecret。并通过一定的算法计算出对称加密(通常是AES算法)的keymaster(客户端也会用同样的算法计算出master)SSL连接成功建立,进行HTTP通信,使用加密解密内容AES对称算法。4、HTTPS安全吗?HTTPS数据已加密。通常情况下,抓包工具在代理请求后抓取的数据包内容是加密的,无法直接查看。但是只要授权客户端,就可以形成中间人网络,抓包工具就是中间人的代理。通常,HTTPS抓包工具(Charles)会生成一个证书,用户需要手动将证书安装到客户端,然后终端发起的所有请求都会通过证书完成与抓包工具的交互,以及然后抓包工具将请求转发给服务器,最后将服务器返回的结果在控制台输出后返回给终端,这样就完成了整个请求的闭环。HTTPS可以防止用户在不知情的情况下在通信链路上被监听。不对主动信用包抓包操作提供保护,因为用户已经意识到这种场景下的风险。为防止数据包被抓包,需要采用应用层的安全防护,比如使用私有对称加密,同时做好移动端的反反编译加固,防止本地算法被泄露破解。
