APP下载

浅析HTTPS协议的原理及应用

2016-02-05张宝玉

网络安全技术与应用 2016年7期
关键词:客户机私钥解密

◆张宝玉

(菏泽家政职业学院 山东 274300)

浅析HTTPS协议的原理及应用

◆张宝玉

(菏泽家政职业学院 山东 274300)

本文详细阐述了Https协议的工作原理,并结合实际应用情况,对Https协议的应用前景进行了展望。

HTTPS;网络协议;SSL协议

0 引言

2015年3月,百度公司推出全站Https安全加密服务,对传统Http通道添加SSL安全套接层,将用户的搜索请求全部变成加密状态,旨在为广大网民提供更加安全、私密的信息服务。同年10月,阿里巴巴宣布旗下所有电商平台实现全站 Https,京东、亚马逊也在登录或交易页面启用了Https。细心的网友可能会发现,国内几大银行网站域名前缀为“http://”,而进行网上银行交易时域名前缀自动变为“https://”。

从Http到Https,百度投入了数千台服务器,上亿元的成本。不仅仅是资金投入,技术难度和工作量也相当大,从搜索基础架构调试,到全部域名(主域名和子域名)的修改,再到速度的优化,并解决了中间者劫持问题,百度公司半年来投入的程序员、工程师加起来有上百人,相当于把整个搜索的元素进行了Https的改写。花销这么大的人力、物力、财力,还冒着相当大的风险,百度公司为何这般重视Https?Https到底有什么作用,发展趋势如何?

1 概念

我们先了解几个相关关键词的概念和含义:

1.1 HTTP协议

超文本传输协议(Hypertext transfer protocol),它约定了浏览器和万维网服务器之间通信的规则,是应用最广泛的网上传输数据的基础协议,目前绝大多数的网站都采用Http协议。但是Http采用的是明文传送,消息完整性检测也不充分。这种安全缺陷很容易被利用以获取网民的信息,如访问记录、账号、密码等。尤其是当前网上交易、网上支付已非常普遍,其安全弊端越来越突出。

1.2 SSL协议

SSL(Secure Sockets Layer 安全套接层,其继任者为TLS)是为网络通信提供安全及数据完整性的一种安全协议。用以保障在Internet上数据传输的安全,利用数据加密技术,可确保数据在网络上传输的过程中不会被截取及窃听。

1.3 HTTPS协议

安全超文本传输协议(Hypertext Transfer Protocol Secure),是由HTTP + SSL 协议构建的可进行加密传输、身份认证的网络协议,在Http的基础上通过传输加密和身份认证保证了传输过程中的安全性,比Http 协议更加安全。最直观的特征是以https://开头并且地址栏两端有小锁样式的图标。图1所示为Google chrome、Firefox、IE10在使用Https时的效果:

图1 使用Https时的效果

HTTPS协议特点:

(1)Https 需要到CA 申请证书,一般是收费的;

(2)Http 是超文本传输协议,信息是明文传输,Https 则是具有安全性的SSL 加密传输协议;

(3)Http 一般使用的端口是80 端口,Https 一般使用443端口。

1.4 SSL证书

也称为服务器SSL证书,是遵守SSL协议的一种数字证书,由全球信任的证书颁发机构(CA)验证服务器身份后颁发。证书就是一种网络上证明持有者身份的文件,同时证书中还含有公钥。通常Windows 部署系统的时候会在客户机上安装“根受信任机构列表”,当客户端收到一个证书时会核对证书是否为列表中的机构颁发的,如果是则信任这个证书。

2 SSL协议原理

2.1 SSL的位置

SSL协议位于应用层和TCP层之间。应用层数据不再直接传递给传输层,而是传递给SSL层,SSL层把从应用层收到的数据进行加密,并增加自己的SSL头。

2.2 SSL的工作原理

SSL协议由三部分组成:握手协议,记录协议,警报协议。(1)握手协议(Handshake protocol)

握手协议是客户端和服务器端用SSL连接通信时首先使用的协议,包括客户机与服务器之间的一系列消息。该协议允许客户机和服务器相互验证,协商加密和MAC算法以及保密密钥。握手协议是在应用程序的数据传输之前使用的。握手协议过程可分为四个阶段,如图2所示:

图2 握手协议过程

①建立安全能力

这个阶段主要是启动逻辑连接,建立连接的安全功能。客户端先向服务器端送出一个client hello消息,服务器向客户机返回server hello消息,并对client hello消息中的信息进行确认。

②服务器认证与密钥交换

当服务器送出server hello消息后,或客户端需要验证服务器的身份时,服务器将其证书资料传送给客户端。

③客户机认证与密钥交换

当收到服务器送出的server done消息后,客户机核对服务器提供的证书是否正确,接着再确认server done消息中所携带的参数是否能够接受。如果这些都能满足的话,客户机会响应一个或多个消息给服务器。

④完成

客户机送出change cipher spec消息,将密码套件状态更新为将要使用的密码套件状态。紧接着,客户机利用之前与服务器协议得到的算法、密钥,来传送最后的finished消息,用来证明密钥交换以及认证的过程已经完成。为了响应这两个消息,服务器会传送自己的change cipher spec消息,并将密码套件状态更新为将要使用密码套件状态,最后再送出finished消息。当这些步骤完成后,客户端与服务器就能开始传送应用层的数据了。

(2)记录协议(Record protocol)

当客户机和服务器鉴别对方并确定安全信息交换使用的算法后,进入SSL记录协议,记录协议提供两个服务:

①数据保密性:使用握手协议定义的秘密密钥对SSL所传送的数据加密。

②消息完整性:使用握手协议定义的带有MAC的密钥计算出消息认证码。

SSL记录协议操作流程如图3所示:

图3 SSL记录协议操作流程

记录协议接收到应用程序传送的消息,将数据分片(切成容易管理的小区块),然后选择是否对这些区块作压缩,再加上此区块的消息认证码。接着将数据区块与MAC一起做加密处理,加上SSL记录头后通过TCP传送出去。接收数据的那一方对数据进行解释、核查、解压缩、重组,将消息的内容还原,传送给上层使用者。

(3)警报协议(Alert protocol)

当客户机和服务器发现错误时,会向对方发送一个警报消息。如果是致命错误,算法立即终止会话并关闭SSL连接,同时还会删除相关的会话记录、秘密和密钥。

总之,在SSL工作过程中,使用握手协议协商加密和MAC算法以及保密密钥,使用记录协议对交换的数据进行加密和签名,使用警报协议解决出现的问题。

3 SSL 证书的作用和验证过程

3.1 SSL证书的作用

(1)认证服务器。网站部署全球信任的SSL证书后,浏览器内置安全机制,实时查验证书状态,通过浏览器向用户展示网站认证信息,让用户轻松识别网站真实身份,防止钓鱼网站仿冒。

(2)实现加密传输。安装SSL证书后,使用Https加密协议访问网站,可激活客户端浏览器到网站服务器之间的"SSL加密通道"(SSL协议),实现高强度双向加密传输,防止传输数据被泄露或篡改。

3.2 SSL证书的颁发和验证过程

Ssl证书颁发和验证过程如图4所示:

图4 证书颁发和验证过程

浏览器会从如下三个方面验证证书的有效性,不满足情况下会报警提示:

(1)证书颁发者是否在“根受信任的证书颁发机构列表”中;(2)证书是否过期;

(3)证书的持有者是否和访问的网站一致。

除此之外浏览器还会定期更新证书颁发者的“证书吊销列表”,如果某个证书虽然符合上述条件,但是被它的颁发者在“证书吊销列表”中列出,那么也将给出警告。

4 HTTPS协议工作原理

4.1 HTTPS 协议的工作流程

HTTPS在真正的数据交互之前通过 SSL握手协议协商一个对称密钥,通过这个对称密钥对以后的通信数据进行加密。其通信过程如图5 所示:

图5 HTTPS 协议的工作流程

(1)客户端发起HTTPS请求

用户在浏览器里输入Https网址,然后连接到server的443端口。

(2)服务端的配置

采用HTTPS协议的服务器必须要有一套数字证书,可以自己制作,也可以向组织申请。两者的区别就是自己颁发的证书需要通过客户端验证后才可以继续访问,而使用受信任的公司申请的证书则不会弹出提示页面。数字证书其实就是一对公钥和私钥,就好比一个锁和一把钥匙,并且只有你自己有这把钥匙,把锁交给别人,别人把重要的东西锁起后发给你,因为只有你有这把钥匙,所以也只有你才能看到被这把锁锁起来的东西。

(3)传送证书

这个证书就是公钥。

(4)客户端解析证书

SSL首先验证收到的公钥是否有效,比如颁发机构、过期时间等,如果发现异常,弹出警告框,提示证书存在问题,不然,就生成一个随即值,接着用证书对该随机值进行加密。正如前面讲的,把随机值用锁头锁起来,这样除非有钥匙,锁住的内容是不会被看到的。

(5)传送加密信息

这部分传送的是用证书加密后的随机值,目的就是让服务端得到这个随机值,以后客户端和服务端的通信就可以通过这个随机值来进行加密解密了。

(6)服务段解密信息

服务端用私钥解密后,得到了客户端传过来的随机值(第二个私钥),然后把数据内容通过该值进行对称加密。所谓对称加密就是,将信息和私钥通过某种算法混合在一起,这样除非知道私钥,不然无法获取内容,而正好客户端和服务端都知道这个私钥,所以只要加密算法够彪悍,私钥够复杂,数据就够安全。

(7)传输加密后的信息

这部分信息是服务器端用私钥(第二个私钥)加密后的信息,可以在客户端被还原

(8)客户端解密信息

客户端用前面生成的私钥(第二个私钥)解密从服务器端传送过来的信息,于是获取了解密后的内容。整个过程第三方即使监听到了数据,也束手无策。

4.2 HTTPS 协议的加密方法

加密算法分为两种:对称加密和非对称加密。所谓对称加密(也叫密钥加密)就是指加密和解密使用的是相同的密钥。而非对称加密(也叫公钥加密)就是指加密和解密使用了不同的密钥。

对称内容加密强度非常高,一般不会被破解。但是要安全地生成和保管密钥却是个很大的问题,如果客户端和服务器的会话都使用固定的密钥来加密和解密,而对称密钥又被其它人获取,整个数据交换就不安全了。

非对称加密主要用于密钥交换(也叫密钥协商),能够很好地解决这个问题。浏览器和服务器每次新建会话时都使用非对称密钥交换算法协商出对称密钥,使用这些对称密钥完成应用数据的加解密和验证,密钥只在内存中生成和保存,并且每次会话的对称密钥都不相同(除非会话重复使用),中间者是无法窃取的。

5 HTTPS没有全面普及的原因

既然HTTPS 协议这么安全,为什么没有更早地在互联网上全面普及呢?原因如下几点:

5.1 Https 与Http通信过程的差异

(1)302 重定向,如果用户没有在地址栏中直接输入前缀Https://进行访问,就会出现重定向过程;

(2)SSL 握手过程增加了网络传输RTT和数字签名校验,很多移动终端本身计算性能就不是很强,耗时会更加明显;

(3)证书验证和状态检验。浏览器一般会通过OCSP来检查证书的撤销状态,在拿到服务器发送过来的证书之后会请求OCSP站点获取证书的状态,如果OCSP站点位于国外或者出现故障的话会影响这个正常用户的访问速度。

5.2 HTTPS对访问速度有影响

HTTPS协议交互增加了网络RTT(round trip time)。协议握手阶段比较费时间,对网站的反应速度会产生负面的影响。同时,HTTPS加密/解密也会产生计算耗时。要解决速度问题,通常会使用SSL加速器(专用服务器)来改善,需要增加硬件设备以分担负载提高速度。

5.3 SSL 证书需要交费

在HTTPS协议中,证书是必须的,使用证书必须向认证机构(CA)购买,功能越强大的证书费用会越高,因此,很多安全性要求不高的网站不愿多此费用支出。节约购买和维护证书的开销也是原因之一。

5.4 HTTPS服务器端的负载增加

与明文通信相比,加密通信要消耗更多的CPU和内存资源,如果每次通信都加密,会消耗相当多的资源,访问量较多的网站需要增加投入更大的成本。因此,有些网站只是在传输包含敏感信息或保密数据时,才利用HTTPS加密通信,并非对所有内容都进行加密处理。

6 结语

国外的大型互联网公司很多已经启用了全站 HTTPS,这也是未来互联网发展的趋势。国内的大型互联网企业大多是在一些涉及账户或者交易的子页面 / 子请求上启用了 HTTPS。百度和阿里巴巴率先全站部署 HTTPS,对国内互联网行业的全站HTTPS 进程必将有着巨大示范引领推动作用,随着HTTPS的不断的推广和普及,带给我们的将是一个更加安全的网络环境。

[1]黄河.编著.计算机网络安全——协议、技术与应用[M].清华大学出版社,2008.

[2]熊平.主编.信息安全原理及应用[M].清华大学出版社,2009.

猜你喜欢

客户机私钥解密
清扫机器人避障系统区块链私钥分片存储方法
比特币的安全性到底有多高
基于改进ECC 算法的网络信息私钥变换优化方法
炫词解密
解密“一包三改”
炫词解密
一种基于虚拟私钥的OpenSSL与CSP交互方案
解密“大调解”
瘦客户机:安全与便捷的选择
升腾瘦客户机借神码翱翔“云端”