Security ❀ HTTPS的认证流程

HTTPS的认证流程

HTTPS协议根据其认证次数可以分为单向认证和双向认证;

(1)单向认证

  • 客户端向服务器发起请求,其中包含各种SSL参数,并从服务器端拿到证书;
  • 客户端将从服务器端获得的证书提交至CA, CA验证该证书的合法性并告知客户端,客户端根据 CA验证结果来确认目标站点的真实性;
  • 从服务器端的证书中取出公钥, 利用公钥对客户端产生的密钥加密(对称密钥),利用公钥将加密后的密钥发送到服务器端;
  • 服务器端用其私钥解密出数据,即得到客户端发送来的对称密钥, 之后均利用这个对称密钥对传输文件进行加密、解密;

单向认证的特点在于只有客户端对服务器端进行了身份验证 ,而服务器只是对提交过来的加密密钥进行识别并处理 ,而不对客户端的合法性进行验证,这就造成了遭受SSL剥离攻击的隐患;
SSL剥离攻击是针对HTTPS单向认证环境的攻击手段。例如,SSL Strip工具的原理就是劫持用户的请求,并模拟用户来与目标站点建立HTTPS连接。成功连接后利用已立连接的对称密钥解密服务器发送过来的HTTPS,将其中的HTTP再发送给客户端SSL剥离攻击的流程如下图所示 这也是由于单向认证巾服务器并不对客户端的有效性进行检查而造成的。

SSL剥离攻击常用于WiFi劫持、ISP层面的流量劫持等环境,如果在日常站点访问中,经常访问的站点突然由HTTPS 协议变成了HTTP协议,那么就需格外小心类劫持行为对用户的数据会产生较大的危害,同时也会危害到网站的利益。因为用户权益一旦受到损失,用户会降低对网站的信任度,导致网站最终受到损失。因此,在大型站点的高价值业务或者两个站点互联互通时均会利用HTTPS双向验证技术来解决上述安全隐患;

(2)双向认证
相对于单向认证整体流程,HTTPS双向认证主要是在客户端与服务器端的认证部分发生了改变,HTTPS双向认证流程如下所示:

  • 客户端向服务器发起请求,其中包含各种SSL参数,并从服务器端拿到证书;
  • 客户端将从服务器获得的证书交由CA,CA验证该证书的合法性并告知客户端,客户端根据CA验证结果来确认目标站点的真实性;
  • 服务器要求客户端发送证书并验证,并接受用户的公钥;
  • 双方利用对方公钥加密来协商可以支持的传输类型及密码方案;
  • 客户端从服务器的证书取出公钥,利用公钥对客户端产生的秘钥加密(对称秘钥),并利用公钥加密后的秘钥发送到服务器;
  • 服务器用私钥解密出数据,即得到客户端发送来的对称秘钥,之后所有的内容均利用这个对称秘钥对传输的文件进行加密、解密;

由于客户端没有针对特定网站的秘钥生成机制,因此在双向认证时会要求客户端安装特定的插件,用来实现秘钥的生成,这个过程会给用户带来额外的操作和影响,因此不能适用于全部环境;

猜你喜欢

转载自blog.csdn.net/qq_42197548/article/details/106108950