HTTPS (全称:Hyper Text Transfer Protocol over SecureSocket Layer),是以安全为目标的 HTTP 通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性 [1] 。HTTPS 在HTTP 的基础下加入SSL,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL。 HTTPS 存在不同于 HTTP 的默认端口及一个加密/身份验证层(在 HTTP与 TCP 之间)。这个系统提供了身份验证与加密通讯方法。它被广泛用于万维网上安全敏感的通讯,例如交易支付等方面 [2] 。中文名超文本传输安全协议
HTTPS 协议是由 HTTP 加上 TLS/SSL 协议构建的可进行加密传输、身份认证的网络协议,主要通过数字证书、加密算法、非对称密钥等技术完成互联网数据传输加密,实现互联网传输安全保护。设计目标主要有三个。
(1)数据保密性:保证数据内容在传输的过程中不会被第三方查看。就像快递员传递包裹一样,都进行了封装,别人无法获知里面装了什么 [4] 。
(2)数据完整性:及时发现被第三方篡改的传输内容。就像快递员虽然不知道包裹里装了什么东西,但他有可能中途掉包,数据完整性就是指如果被掉包,我们能轻松发现并拒收 [4] 。
(3)身份校验安全性:保证数据到达用户期望的目的地。就像我们邮寄包裹时,虽然是一个封装好的未掉包的包裹,但必须确定这个包裹不会送错地方,通过身份校验来确保送对了地方 [4] 。
客户端和服务端在传输数据之前,会通过基于X.509证书对双方进行身份认证 。具体过程如下 [3] :
客户端发起 SSL 握手消息给服务端要求连接。
服务端将证书发送给客户端。
客户端检查服务端证书,确认是否由自己信任的证书签发机构签发。 如果不是,将是否继续通讯的决定权交给用户选择 ( 注意,这里将是一个安全缺陷 )。如果检查无误或者用户选择继续,则客户端认可服务端的身份。
服务端要求客户端发送证书,并检查是否通过验证。失败则关闭连接,认证成功则从客户端证书中获得客户端的公钥,一般为1024位或者 2048位。到此,服务器客户端双方的身份认证结束,双方确保身份都是真实可靠的。
客户端和服务端在开始传输数据之前,会协商传输过程需要使用的加密算法。 客户端发送协商请求给服务端, 其中包含自己支持的非对称加密的密钥交换算法 ( 一般是RSA), 数据签名摘要算法 ( 一般是SHA或者MD5) , 加密传输数据的对称加密算法 ( 一般是DES),以及加密密钥的长度。 服务端接收到消息之后,选中安全性最高的算法,并将选中的算法发送给客户端,完成协商。客户端生成随机的字符串,通过协商好的非对称加密算法,使用服务端的公钥对该字符串进行加密,发送给服务端。 服务端接收到之后,使用自己的私钥解密得到该字符串。在随后的数据传输当中,使用这个字符串作为密钥进行对称加密 [3] 。
SSL使用序列号来保护通讯方免受报文重放攻击。这个序列号被加密后作为数据包的负载。在整个SSL握手中,都有一个唯一的随机数来标记SSL握手。 这样防止了攻击者嗅探整个登录过程,获取到加密的登录数据之后,不对数据进行解密, 而直接重传登录数据包的攻击手法。
可以看到,鉴于电子商务等安全上的需求,HTTPS对比HTTP,在安全方面已经取得了极大的增强。总结来说,HTTPS的改进点在于创造性的使用了非对称加密算法,在不安全的网路上,安全的传输了用来进行对称加密的密钥,综合利用了非对称加密的安全性和对称加密的快速性 [3] 。
HTTPS 主要由两部分组成:HTTP + SSL / TLS,也就是在 HTTP 上又加了一层处理加密信息的模块。服务端和客户端的信息传输都会通过 TLS 进行加密,所以传输的数据都是加密后的数据。
① 客户端的浏览器首先要通过网络与服务器建立连接,该连接是通过TCP 来完成的,一般 TCP 连接的端口号是80。 建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是 MIME 信息包括请求修饰符、客户机信息和许可内容 [2] 。
② 服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是 MIME 信息包括服务器信息、实体信息和可能的内容 [2] 。
① 客户端将它所支持的算法列表和一个用作产生密钥的随机数发送给服务器 [2] ;
② 服务器从算法列表中选择一种加密算法,并将它和一份包含服务器公用密钥的证书发送给客户端;该证书还包含了用于认证目的的服务器标识,服务器同时还提供了一个用作产生密钥的随机数 [2] ;
③ 客户端对服务器的证书进行验证(有关验证证书,可以参考数字签名),并抽取服务器的公用密钥;然后,再产生一个称作 pre_master_secret 的随机密码串,并使用服务器的公用密钥对其进行加密(参考非对称加 / 解密),并将加密后的信息发送给服务器 [2] ;
④ 客户端与服务器端根据 pre_master_secret 以及客户端与服务器的随机数值独立计算出加密和 MAC密钥(参考 DH密钥交换算法) [2] ;
⑤ 客户端将所有握手消息的 MAC 值发送给服务器 [2] ;
⑥ 服务器将所有握手消息的 MAC 值发送给客户端 [2] 。
优点
使用 HTTPS 协议可认证用户和服务器,确保数据发送到正确的客户机和服务器 [2] ;
HTTPS 协议是由 SSL+HTTP构建的可进行加密传输、身份认证的网络协议,要比 HTTP安全,可防止数据在传输过程中被窃取、改变,确保数据的完整性 [2] 。
HTTPS 是现行架构下最安全的解决方案,虽然不是绝对安全,但它大幅增加了中间人攻击的成本 [2] 。
现有银行对外提供的互联网金融服务中,互联网门户类网站和图片网站主要通过 HTTP对外服务。其 中门户网站为用户提供金融咨询和优惠信息等服务,还提供银行App客户端、U盾驱动等程序下载服务。为提升用户服务体验,此类 HTTP 网站还部署了内容分发网络(Content Delivery Network,CDN),通过 CDN 将用户需要访问的信息放到离用户所在物理地区最近内容服务站点,可以大幅提升互联网对外服务的获取速度,提供最佳访问体验。上述 CDN 通常为基于 HTTP的互联网应用提供服务,而随着互联网环境中的劫持、篡改等访问安全问题的日趋严峻,CDN 提供的网络分发方案也需要支持 HTTP改造为 HTTPS 协议。下面是对 HTTP 到 HTTPS 改造应用和网络的方案介绍 [4] 。
(1) 从 HTTP 转向 HTTPS 的应用改造要点:HTTP 页面分析评估信息数据安全等级;WEB 页面访问改造;站点证书申请和部署;启用 HTTPS 协议支持,增加 TCP-443 端口,对外服务 [4] 。
(2)从 HTTP 转向 HTTPS 的 CDN 服务改造要点: CDN 侧调整网络服务;CDN 站点增加对 HTTPS 协议支持;CDN 站点对 HTTPS 加速技术进行优化提升稳定性; CDN 站点支持端到端的全链路 HTTPS 支持能力;CDN 站点增加 CA 证书部署的实施方案 [4] 。
现有互联网环境中仍大约有 65% 的网站使用 HTTP,此部分的互联网站的用户访问会存在很高的安全 隐患,导致信息泄露、木马植入等情况出现。针对这一情况,为互联网提供安全服务而采用 HTTPS 已是大势所趋。HTTP 到 HTTPS 的转向可以帮助企业网提升用 户访问安全水平,特别是对于有敏感信息保存和提供金融交易等服务的企业更有帮助。Google、Facebook 和国内诸多大型互联网公司应用已经全面支持 HTTPS,并且苹果和谷歌两大公司也在积极推动 HTTPS 扩大应用 范围,对 HTTPS 协议在全球网站的部署进度起到加速作用 [4] 。
欢迎您选用www.huweissl.com