HTTPS
是最流行的HTTP安全形式,使用时所有的HTTP请求和响应数据都会在发送到网络前,进行加密;HTTPS在HTTP下面提高哦你了恶意该传输级的密码安全层。大部分编码和解码都是在SSL库中完成的。
数字加密:
1、密钥:改变密码行为的数字话参数
2、对称密钥加密系统:编、解密使用不同的密钥的算法。
3、非对称密钥加密系统: 编、解码使用不同的密钥的算法
4、数字签名:用来验证报文未被伪造或篡改的校验和
对称密钥加密技术:编码和解码都使用同一把密钥。
通过增加密钥长度来防止枚举攻击。但是计算能力强的计算机仍很快能攻破
建立共享密钥,会话前,双方都有一个共享的保密密钥。缺点:管理麻烦,每个连接双方都要维和,N个节点与N-1个节点通信就要维护N方个保密密钥。
公开加密技术:使用两个非对称密钥:一个用来对主机报文加密,一个用来对主机报文解码。 加密密钥公开,解密密钥私有,从而保证了报文传递安全性。
数字签名:
1、作者通过自己的私有加密密钥加密报文摘要的一部分,然后再用目的服务器的公开加密密钥加密明文,然后把这两者封装到报文中一起发出去;
2、这样服务器收到后,先用自己的解密密钥解密报文,然后用对应作者的公开密钥去解密数字签名,然后比对是否一致,一致则说明这是没有被篡改过的数据报。
数字证书(里面包含数字签名)
HTTPS方案:
1.如果url方案是http,客户端会通过tcp三次握手,打开一条到服务器端口80的连接,然后发送http命令
2.如url方案是https,客户端就会通过tcp三次握手,打开一条到服务器端口号为433的连接,然后与服务器再进行安全层握手,以二进制的格式与服务器交换一些ssl安全参数,然后才付上加密后的http命令。
建立安全传输:
对于https,客户端就会通过tcp三次握手,打开一条到服务器端口号为433的连接,建立tcp连接后,客户端和服务端就会初始化SSL层,对加密参数进行沟通,并交换密钥。握手完成后,SSL初始化就完成了。这样每次客户端发送请求报文就都会通过安全层加密。
SSL握手:
发送加密http报文之前,客户端和服务器进行一次ssl握手,握手过程需要完成:
1、交换协议版本号
2、选择一个双方都了解的密码。
3、对两端的身份进行认证(数字签名吧?)
4、生成临时的会话密钥,以便加密信道。
具体步骤:
1、客户端发送可供选择的密码并请求服务器证书
2、服务器发送选中的密码和证书
3、客户端发送保密信息;客户端和服务器生成会话临时密钥
4、客户端和服务器相互告知,开始加密过程