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