Web PKI和HTTPS
Web PKI和HTTPS[16,17]协议在现代移动和Web平台中发挥着核心作用,两者都基于客户端-服务器架构。在Web中,Web服务器或应用程序与浏览器交换信息。在移动平台上,应用与后端(Web)服务器交换信息。在这两种情况下,HTTPS应始终用于客户端和服务器之间的安全网络连接。为了建立安全的网络连接,使用了Web公钥基础结构。使用WebPKI和X.509证书,客户端和服务器可以相互进行身份验证并交换加密密钥材料以进行进一步加密的信息传输。本KA不会详细介绍身份验证过程和密钥交换程序的工作原理(参见网络安全CyBOK知识领域[5])。相反,它概述了特定于Web和移动平台的各个方面。
HTTPS是Web和移动设备上部署最广泛的安全网络协议。它将HTTP覆盖在TLS协议之上,以提供服务器的身份验证,以及传输中的数据的完整性和机密性。虽然HTTPS提供基于X.509证书的服务器和客户端的相互身份验证,但主要用途是对访问的服务器进行身份验证。与TLS类似,HTTPS通过防止中间人攻击来保护HTTP流量免受窃听和篡改。由于HTTPS封装了HTTP流量,因此它可以保护URL、HTTP标头信息(包括cookie和HTTP内容)免受攻击者的攻击。无论如何,它不会加密客户端和服务器的IP地址和端口号。虽然HTTPS可以隐藏客户端和服务器交换的信息,但它允许窃听者了解用户访问的网站浏览器的顶级域,并识别移动应用程序与之通信的后端服务器。
Web浏览器和移动应用程序都通过验证由证书颁发机构CA签名的X.509证书来验证HTTPS服务器。浏览器和移动应用程序附带预安装的证书颁发机构列表,或依赖于主机操作系统中预安装的CA列表。现代浏览器和现代移动平台上的预安装证书颁发机构列表通常包含数百个CA。要获得信任,HTTPS服务器证书需要由一个预安装的CA签名。5
现代浏览器在无法验证服务器证书时向用户显示警告消息(例如,参见图4)。警告消息旨在指示中间人攻击。但是,警告消息的常见原因是证书无效、为不同主机名颁发的证书、客户端和服务器之间的网络错误以及客户端,例如错误配置的时钟[45]。在大多数情况下,浏览器用户可以点击警告消息并访问网站,即使无法验证服务器证书[46]。浏览器在地址栏中使用彩色指示器来显示网站的安全信息。通过HTTP加载的网站,通过HTTPS加载的网站,通过HTTP连接加载其某些内容(例如CSS或JavaScriptfiles)6使用无效证书但用户单击警告的网站将显示为不安全。具有有效证书的HTTPS网站会显示相应的安全指示器(例如,参见图4)。相比之下,移动、非浏览器应用程序的用户无法轻松验证应用程序是否使用具有有效证书的安全HTTPS协议。没有类似于浏览器中使用的可视化安全指示器可用。相反,用户必须信任应用程序开发人员对HTTPS连接采取所有必要的安全措施。
截至2019年,大多数流行的网站都支持HTTPS,并且从客户端到Web和移动应用程序中的服务器的大多数连接都使用HTTPS来保护其用户抵御中间人攻击。为了进一步提高HTTPS的采用,鼓励服务器运营商对所有连接使用HTTPS并部署HTTP严格传输安全(HSTS)[47]。此外,如果可能的话,浏览器用户可以安装扩展和插件来重写不安全的HTTPURL,以保护HTTPSURL[48],移动应用程序框架使HTTPSHTTP连接的默认网络协议。
使用HTTPS可以保护内容免受攻击者的攻击,但不会保留元数据(例如,用户访问的网站)。请参阅隐私和在线权利CyBOK知识区[49]以获取更多信息,包括隐私浏览和Tor网络。
恶意证书颁发机构和证书透明度 Web PKI 允许每个受信任的根证书颁发机构为任何域颁发证书。虽然这允许网站运营商自由选择其网站的CA,但过去一些CA出于恶意目的颁发了欺诈性证书。其中一个最突出的例子是DigiNotar CA,它在2011年[50]为包括谷歌Gmail服务在内的多个网站颁发了欺诈性证书。没有人因这次袭击而受到指控。然而,DigiNotar于2011年破产。证书透明度[51]被引入到欺诈性证书签发中。证书透明度提供防篡改的数据结构,并监控参与 CA 的所有证书颁发过程。虽然它不能防止欺诈性证书的签发,但它提高了被发现的机会。客户端可以验证证书透明度提供程序的正确操作,并且应仅连接到使用包含签名证书时间戳的X.509 证书的网站。大多数主要的证书颁发机构和浏览器供应商都支持证书透明度。