作者 | 江文宾 上海控安可信软件创新研究院
鉴源实验室
01
背 景
在数字化和网络化日益发展的今天,信息安全成为了我们不得不重视的问题。伴随着信息技术的不断进步,网络攻击的方式也越来越多样化、复杂化。作为应对这一挑战的重要武器,HTTPS(超文本传输安全协议)的使用日益广泛,它为我们网上的身份认证和数据交换提供了一道隐形的保护屏障。本文旨在深入解析HTTPS的工作原理、安全性以及其在网络安全中的重要性。
02
HTTP的安全缺陷
HTTP协议[1]是一种无状态的、应用层的协议,它本身并不提供任何安全机制。HTTP协议的安全缺陷主要来自于以下几个方面:
1. 明文传输:HTTP协议以明文形式传输数据,这意味着数据在传输过程中可以被任何第三方拦截和读取,容易遭受中间人攻击,这包括用户名、密码、信用卡信息等敏感数据。若网络监听和数据篡改,用户隐私和数据完整性无法得到保障。
2. 无身份验证:HTTP协议本身不提供任何身份验证机制。这意味着任何用户都可以发送HTTP请求,包括恶意用户。这可能导致未经授权的数据访问或篡改。
3. 无完整性检查:HTTP协议不提供任何完整性检查机制。这意味着攻击者可以拦截HTTP请求和响应,并修改其中的内容,而服务器端无法检测到这些修改。
为了解决HTTP协议在数据通信过程中带来的安全风险,HTTPS就出现了。
03
HTTPS的发展
HTTPS(Hyper Text Transfer Protocol Secure)[2]不是一种新的协议,而是HTTP协议的安全版本,它通过在HTTP的基础上加入SSL/TLS协议[3],用来为数据传输做加密,增加数据传输的安全性。
HTTPS的发展可以追溯到20世纪90年代,当时互联网安全领域正面临着一系列的挑战。随着互联网的普及,越来越多的敏感信息(如用户名、密码、信用卡信息等)通过HTTP协议在互联网上传输,这给网络安全带来了巨大的风险。为了解决这个问题,SSL协议应运而生。
SSL(Secure Sockets Layer,安全套接字层)[4]协议是一种用于在互联网上提供安全通信的加密协议。它最初由网景公司开发,用于保护网页浏览器的安全连接。SSL协议通过加密数据、验证身份和确保数据完整性来保护用户和服务器之间的通信,为数据传输提供了安全保障,广泛应用于电子商务、银行、在线支付等领域。
随着SSL2.0和SSL3.0的发布,一些安全问题也暴露出来,如“心脏出血”漏洞,这使得SSL协议的安全性受到了质疑。
为了解决这些问题,IETF(Internet Engineering Task Force)组织在1999年发布了TLS(Transport Layer Security)协议[5],TLS协议是SSL协议的后续版本,提供了更加强大的安全性、更加完善的协议规范、改进了性能以及增加了兼容性。TLS协议在SSL协议的基础上进行了改进,修复了SSL协议的一些安全漏洞,并引入了一些新的安全特性。
随着TLS协议的普及,HTTP协议的安全版本HTTPS(HTTP Secure)也逐渐发展起来。HTTPS通过在HTTP协议下加入TLS协议,为数据传输提供了加密、身份验证和数据完整性保护,从而解决了HTTP协议的安全问题。
时至今日,由于网络环境和安全需求的变化,HTTPS还在不断的发展和迭代,新的TSL版本也在更新。
04
HTTPS工作流程
HTTPS请求的结构与HTTP请求的结构类似,但是在HTTP请求的基础上增加了SSL/TLS协议进行工作,协议的工作流程包括:握手、加密传输和连接结束三个阶段。
1. 握手阶段:当用户的浏览器尝试向服务器建立HTTPS连接时,浏览器和服务器之间会进行一次“握手”。在这个过程中,服务器会向浏览器提供其SSL/TLS证书,证书中包含了服务器的公钥、域名等信息。浏览器会检查证书的有效期、颁发机构、域名等,确保连接的服务器是可信任的后,使用收到的公钥加密生成一个“会话密钥”,并将其发送给服务器。
2. 加密传输阶段:服务器用自己的私钥解密接收到的“会话密钥”,然后双方使用这个密钥对交换的数据进行加密。这样,即使数据在传输过程中被第三方截获,没有密钥也无法解密数据内容。
3. 连接结束阶段:当数据传输结束后,客户端和服务器会交换关闭消息,以确认连接被安全地关闭。连接关闭后即便是会话密钥被泄露,也不会对已传输的数据构成威胁。
05
HTTPS的安全特性
HTTPS之所以安全,主要得益于以下几个关键特性:[6]
1. 加密通信:HTTPS使用SSL(安全套接字层)或TLS(传输层安全)协议对数据进行加密。这意味着在客户端和服务器之间传输的数据被加密,只有拥有正确密钥的人才能解密和读取这些数据。这有效防止了数据在传输过程中被窃听或篡改。
2. 身份验证:HTTPS通过数字证书来验证服务器的身份。这些证书由受信任的证书颁发机构(CA)签发,确保用户连接的是正确的服务器,而不是一个冒名顶替的服务器。此外,HTTPS还支持客户端身份验证,即服务器可以要求客户端提供证书,以验证客户端的身份。例如,当用户访问一个知名电商网站时,浏览器会检查该网站的SSL证书,如果证书由知名的CA机构颁发且未被篡改,用户就可以放心地进行购物操作,因为这表明网站是经过认证的合法实体。
3. 完整性保护:HTTPS通过使用哈希函数来确保数据的完整性。这意味着即使数据在传输过程中被篡改,接收方也可以通过比较哈希值来检测到数据是否被篡改。
4. 防止中间人攻击:由于HTTPS使用加密和身份验证机制,攻击者很难在客户端和服务器之间插手,从而进行中间人攻击。这种攻击通常涉及攻击者拦截和修改通信数据。
06
更多优势
1. 支持HTTP/2.0协议[7]:新的网络协议HTTP/2.0对HTTPS提供了更好的支持,使得网站在使用HTTPS的同时能够获得性能优化。HTTP/2.0通过多路复用、服务器推送等技术,减少了网络延迟,提高了页面加载速度和用户体验,进一步增强了HTTPS网站的竞争力。
一个HTTPS网站能够同时发送多个请求和响应,而不会像传统的HTTP/1.1那样需要依次等待。这使得网页中的图片、脚本等资源能够更快地加载,用户可以更快地看到完整的网页内容,提升了用户对网站的满意度和忠诚度。
2. 增强用户信任:大多数浏览器都会在HTTPS的网址上显示一个绿色锁标志,通常在浏览器地址栏的左侧,这表示该网址使用了SSL/TLS协议,并且连接是安全的,促使用户更愿意在网站上进行交易和分享个人信息。
3. 提升搜索引擎排名:搜索引擎如Google将HTTPS作为搜索排名的一个重要因素,因为搜索引擎倾向于推荐安全、可靠的网站给用户,从而鼓励更多网站采用HTTPS,提升整个互联网的安全水平。采用HTTPS的网站在搜索结果中更有可能获得较高的排名,从而提高网站的可见度和用户访问量,为企业带来更多的潜在客户和业务机会。
07
HTTPS的局限性
事实上并不是使用了HTTPS就可以高枕无忧了,目前仍然存在一些安全风险。
1. 端点安全问题:HTTPS仅保护数据在传输过程中的安全性,无法解决终端设备的安全问题。如果用户的电脑或移动设备感染恶意软件,即使通信过程中进行了数据传输加密,黑客仍可在终端解密数据后进行窃取或篡改。
2. 证书问题:SSL/TLS证书的安全性高度依赖于证书颁发机构(CA)的可信度和操作安全。如果CA机构遭受攻击或误发证书,攻击者可能会利用这些不当证书实施中间人攻击,使HTTPS的安全防护失效。
3. 中间设备的风险:企业和组织内部的网络设备,如防火墙和代理服务器,有时会对SSL/TLS进行检查和过滤。这一过程可能会削弱SSL/TLS加密,增加数据被攻击的风险,导致HTTPS的安全性降低。
08
结 语
综上所述,虽然HTTPS无法解决所有网络安全问题,但它确实是我们维护网络安全的重要工具。使用HTTPS,我们至少可以确保数据在传输过程中不被轻易窃取或篡改。
上海控安针对工控通信系统中存在的网络安全隐患和漏洞,推出面向工控系统协议、应用、数据库、内核等全类型软件对象的自动化智能黑盒模糊测试工具——SmartRocket TestSec自动化智能模糊渗透测试工具,可针对工业互联网软件进行自动化智能黑盒模糊渗透测试,对通信协议、基础软件进行各种模糊攻击、渗透攻击及安全功能验证。以HTTP模糊测试为例,TestSec提供多种模糊策略及报文字段变异器,对HTTP请求结构自上而下的全方位测试(包括URL、版本、请求方式、请求头和请求体),支持HTTP互操作性测试,可配置多种侵入式和非侵入式监控套件,结合被测对象的响应判断当前设备状态并获取模糊测试效果信息从而生成模糊报文。对此测试生成交互报文和模糊测试报告,并检测测试过程中生成的所有缺陷和漏洞。不仅如此,用户还可根据已有协议模板或规则进行新增和定制,满足模糊测试的可行性深度需求。从软件层面到协议层面,全方位保障高安全领域软件系统的稳健运行。网络安全是一场没有终点的赛跑,我们需要不断更新知识、加强防护,并采取全方位的安全措施来保护我们的数字生活。
此外,随着互联网技术的快速发展,我们也应该关注新的安全技术和趋势,更要关注新型攻击方式的出现。同时,作为用户,我们也应该提升个人的信息安全意识,譬如定期更换复杂密码、避免在不安全的网络环境下登录敏感账户、及时更新操作系统和应用程序等,只有这样,才能在数字化世界中更安心地生活和工作。
当然,对于企业和网站管理员而言,持续的安全评估、严格的安全策略实施、合理的安全架构设计同样不可或缺。只有通过不懈的努力和全面的安全策略,我们才能构建一个更加安全、可靠的网络环境。
参考文献:
1. Gourley D, Totty B. HTTP: the definitive guide[M]. " O'Reilly Media, Inc.", 2002.
2. Roy T. Fielding, Julian F. Reschke, Mike Nottingham. HTTP Semantics[R]. RFC 9110, 2022.
3. 张晗卓, 张中伟. 基于HTTP协议的信息安全研究[J]. 计算机与网络, 2019, 17.
4. Freier A, Karlton P, Kocher P. The SSL Protocol: Version 3.0[M]. Internet Draft, 1996.
5. Dierks T, Rescorla E. The Transport Layer Security (TLS) Protocol Version 1.2[R]. RFC 5246, 2008.
6. Rescorla E. HTTP Over TLS[R]. RFC 2818, 2000.
7. ansfer Protocol Version 2 (HTTP/2)[R]. RFC 7540, 2015.