目录
7.2 HTTP+ 加密 + 认证 + 完整性保护 =HTTPS
7.2.1 HTTP 加上加密处理和认证以及完整性保护后即是 HTTPS
7.1 HTTP 的缺点
● 通信使用明文(不加密),内容可能会被窃听
● 不验证通信方的身份,因此有可能遭遇伪装
● 无法证明报文的完整性,所以有可能已遭篡改
某些特定的 Web 服务器和特定的Web 浏览器在实际应用中存在的不足(也可以说成是脆弱性或安全漏洞)用 Java 和 PHP 等编程语言开发的 Web 应用也可能存在安全漏洞。
7.1.1 通信使用明文可能会被窃听
窃听相同段上的通信并非难事。只需要收集在互联网上流动的数据包(帧)就行了。对于收集来的数据包的解析工作,可交给那些抓包 (Packet Capture)或嗅探器(Sniffer)工具。
加密手段有2个:
通信的加密
HTTP 协议中没有加密机制,但可以通过和 SSL(Secure Socket Layer,安全套接层)或 TLS(Transport Layer Security,安全层传输协议)的组合使用,加密 HTTP 的通信内容。
与SSL组合使用的HTTP被称为HTTPS( HTTP Secure,超文本传输安全协议)或 HTTP over SSL
安全的通信线路
内容的加密
客户端和服务器同时具备加密和解密机制
不过,仍有被篡改的风险。
7.1.2 不验证通信方的身份就可能遭遇伪装
客户端 无法确定请求发送 的哪台服务器
服务器 无法确定响应返回 的哪个客户端
无法确定正在通信的对方是否具备访问权限。
即使是无意义的请求也会照单全收。无法阻止海量请求下的 DoS 攻击(Denial of Service,拒绝服务攻击)。
■查明对手的证书(SSL)
SSL 不仅提供加密处理,而且还使用了一种被称为证书的手段,可用于确定方。
伪造证书异常困难
7.1.3 无法证明报文完整性,可能已遭篡改
完整性--准确性
请求或响应在传输途中,遭攻击者拦截并篡改内容的攻击 称为中间人攻击(Man-in-the-Middle attack,MITM)。
■防止篡改
常用的是 MD5 和 SHA-1 等散列值校验的方法,以及用来确认文件的数字签名方法。
提供文件下载服务的 Web 网站也会提供相应的以 PGP(Pretty Good Privacy,完美隐私)创建的数字签名及 MD5 算法生成的散列值。
PGP 证明创建文件的数字签名
MD5 由单向函数生成的散列值
7.2 HTTP+ 加密 + 认证 + 完整性保护 =HTTPS
7.2.1 HTTP 加上加密处理和认证以及完整性保护后即是 HTTPS
HTTPS(HTTP Secure)
7.2.2 HTTPS 是身披 SSL 外壳的 HTTP
HTTPS 并非是应用层的一种新协议。只是 HTTP 通信接口部分用 SSL(Secure Socket Layer)和 TLS(Transport Layer Security)协议代替而已。
HTTP 直接和 TCP 通信。
当使用 SSL 时,则演变成先和 SSL 通信,再由 SSL 和 TCP 通信。
SSL 是独立于HTTP 的协议,所以不光是 HTTP 协议,其他运行在 应用层的 SMTP 和 Telnet 等协议均可配合SSL 协议使用。可以说 SSL 是当今世界上应用最为广泛的网络安全技术。
7.2.3 相互交换密钥的公开密钥加密技术
SSL 采用一 种叫做公开密钥加密(Public-key cryptography)的加密处理方式。
中加密算法是公开的,密钥却是保密的
加密和解密同用一个密钥的方式称为共享密钥加密(Common key crypto system),也被叫做对称密钥加密。
通信被监听 密钥可能落入攻击者之手,失去加密意义,所以多一层 私有密钥
■使用两把密钥的公开密钥加密
公开密钥加密使用一对非对称的密钥。一把叫做私有密钥(private key),另一把叫做公开密钥(public key)。
公开密钥也可以用来解密,不过因为解密过程就是在对离散对数进行求值,并非轻而易举,现在技术不太现实。
■HTTPS采用混合加密机制
7.2.4 证明公开密钥正确性的证书
公开密钥加密方式仍存在一些问题。无法证明公开密钥本身就是货真价实的公开密钥,真正的公开密钥已经被攻击者替换掉了。
用由数字证书认证机构(CA,Certificate Authority)和其相关机关颁发的公开密钥证书。\
信赖的第三方机构
服务器会将这份由数字证书认证机构颁发的公钥证书发送给客户 端,以进行公开密钥加密方式通信。公钥证书也可叫做数字证书或直接 称证书为。
■可证明组织真实性的EV SSL证书
证书的一个作用是用来证明 作为通信一方的服务器是否规范,
另外一个作用是可确认 对方服务器背后运营的企业是否真实存在。
拥有该特性的证书就是 EV SSL证书(Extended Validation SSL Certificate)
EV SSL 证书是 基于国际标准的认证指导方针颁发的证书。通过认证的 Web 网站 能够获得更高的认可度。
上述机制的原意图是为了防止用户被钓鱼攻击(Phishing),
■用以确认客户端的客户端证书
HTTPS 中还可以使用客户端证书。以客户端证书进行客户端认证, 证明服务器正在通信的对方始终是预料之内的客户端,其作用跟服务器证书如出一辙。
SSL 机制中介入认证机构之所以可行,是因为建立在其信用绝对可 靠这一大前提下的。
然而,2011 年 7 月,荷兰的一家名叫 DigiNotar 的 认证机构曾遭黑客不法入侵,颁布了 google.com 和 twitter.com 等网站 的伪造证书事件。这一事件从根本上撼动了 SSL 的可信度。 因为伪造证书上有正规认证机构的数字签名,所以浏览器会判定该证书是正当的。当伪造的证书被用做服务器伪装之时,用户根本无法察觉到。
虽然存在可将证书无效化的证书吊销列表(Certificate Revocation List,CRL)机制,以及从客户端删除根证书颁发机构(Root Certificate Authority,RCA)的对策,但是距离生效还需要一段时间,而在这段时间内,到底会有多少用户的利益蒙受损失就不得而知了。
■由自认证机构颁发的证书称为自签名证书
使用 OpenSSL 这套开源程序,每个人都可以构建一套属于自己的认证机构,从而自己给自己颁发服务器证书。但该服务器证书在互 联网上不可作为证书使用,似乎没什么帮助。
独立构建的认证机构叫做自认证机构,由自认证机构颁发的“无用”证书也被戏称为自签名证书。
浏览器访问该服务器时,会显示“无法确认连接安全性”或“该网站的安全证书存在问题”等警告消息。
由自认证机构颁发的服务器证书之所以不起作用,是因为它无法消除伪装的可能性。也不能排除正在和已经过伪装的假服务器保持通信。
7.2.5 HTTPS 的安全通信机制
上图做了一些省略,这步之后再发送 TCP FIN 报文来关闭与 TCP 的通信。
在以上流程中,应用层发送数据时会附加一种叫做 MAC(Message Authentication Code)的报文摘要。MAC 能够查知报文是否遭到篡改, 从而保护报文的完整性。
![从仅使用服务器端的公开密钥证书(服务器证书)](https://i-blog.csdnimg.cn/blog_migrate/a2cef01aa13b923d6c4c249564299012.png)
CBC模式(Cipher Block Chaining)又名密码分组链接模式。在此模式下,将 前一个明文块加密处理后和下一个明文块做XOR运算,使之重叠,然后再对 运算结果做加密处理。对第一个明文块做加密时,要么使用前一段密文的最 后一块,要么利用外部生成的初始向量(initial vector,IV)。——译者注
■SSL和TLS
SSL 由 网景 率先倡导,开发过SSL3.0 之前的版本,
现已转到IETF以SSL3.0为基准,制定TSL1.0、TSL1.1、TSL1.2。
由于 SSL1.0 协议在设计之初被发现出了问题,就没有实际投入 使用。SSL2.0 也被发现存在问题,所以很多浏览器直接废除了该协议版本
SSL消耗网络资源,通信时间延长. HTTPS 比 HTTP 要慢 2~100 倍
通信慢,加密处理:耗时 消耗资源
为什么不一直使用 HTTPS
且HTTPS通信,证书必不可少.必须向认证机构(CA)购买
那些购买证书并不合算的服务以及一些个人网站,可能只会选择采用 HTTP 的通信方式。