当我们谈论HTTPS的时候,我们在谈什么(二)TLS组合拳

492 阅读5分钟

这是我参与8月更文挑战的第5天,活动详情查看:8月更文挑战

当我们的浏览器显示网址Https:// 的时候,我们总会有一种安全感和踏实,这是因为我们知道这个网站是真实的,和它的通信是安全的。这种安全感来自于TLS加密传输与SSL证书。

image.png 在本系列上一篇,我们介绍了HTTPS的意义,协议栈和整体信令流程,今天我们要谈谈HTTPS的核心——TLS/SSL

什么是TLS/SSL

SSL(Secure Sockets Layer)是传输层的套接字安全协议,简单说,是保证在两个网络实体间传输数据的安全性,防止信息被窃取,篡改,这个实体可以是客户端,也可以是服务器,它是由网景公司NETSCAPE发明的。SSL一直更新在2015年才退出历史舞台,由TLS协议代替,我们用到的SSL加密证书,也称为数字证书,实际上现在也是TLS协议的一部分。

TLS(Transport Layer Security)处于HTTP与TCP之间,通过TLS握手来为网络实体间的通信提供加密与完整性保护,目前的最新版本是2018年TLS1.3。

TLS组合拳

TLS使用了对称加密,非对称加密,密钥协商和HASH加密一套组合拳,我们拿一个实际的TLS报文中使用的密码组合来看一下:

image.png

服务器选取的是 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,翻译一下:

TLS:协议名

ECDHE:密钥交换方法,Elliptic Curve Diffie-Hellman Ephemeral基于椭圆曲线的DH短时加密算法。我看很多人都把ECDHE看作是非对称加密,因为它会生成的“public key"和"private key",但它更多的意义体现在是密钥协商。

RSA:身份认证方式,用来做服务器的签名,RSA使用非对称加密,一套公钥和私钥,服务器用私钥加密的数据,客户端只能用服务器公钥才能解开,确认签名真伪。

AES_128_GCM:数据加密方式,握手后采用这种方法来生成对称加密的密钥,AES 对称算法,密钥长度 128 位,分组模式是 GCM;

SHA256: 使用哈希算法256bit保证数据完整性

一套组合拳下来,TLS实现了3个目的:

  1. 数据加密
  2. 身份认证
  3. 完整性保护

完整性保护

TLS使用HASH进行完整性保护,那么什么是hash?

  • HASH称为散列函数,它是一种将任意长度的输入,通过hash函数进行压缩形成摘要,并打乱顺序,形成唯一对应的固定长度的散列值HASH value。

  • 相同的输入采用相同的hash function,一定得到相同的输出;不同的输入采用相同的hash function,大概率得到不同的输出;如果源数据哪怕只有1bit数据的改动,反映在HASH值上会被无限放大,这就防止了被篡改;

  • 结果不可逆,当源数据和HASH值长度足够时,几乎不可能从hash值反推出源数据。可以有效地防止逆向破解

  • HASH的保密程度与它的长度正相关,目前流行的是SHA256和SHA384,比特币加密使用的就是SHA256.

  • 抗碰撞,对于任意两个不同的源数据,其hash值相同的可能性极小,这就防止了暴力破解的可能。当然这还是和你的源数据有关,比如说,你的密码是123456,这个HASH值是固定的,非常容易就被破解了。

Hash工作原理非常直接:

  1. 发送者将源数据和HASH value一起发送给接收方
  2. 接收方对源数据进行hash运算,将运算结果与收到的hash value进行比对,如果一致则认为数据未被篡改。

image.png

HASH应用场景

结合HASH的特性,可以看到它非常适合加密大型数据,因为它的固定长度可以大幅减小存储空间需求,而且源数据的长度越长,保密性越好!

同时,它也适合用来保存密码等敏感信息,服务器数据库中的密码不能使用明文保存,我们可以让程序在发送密码时,自动通过hash加密,然后只发送hash value给服务器,服务器再与数据库中的hash value进行比对,从而验证客户端身份。

但Hash有它的局限性,就是无法防止"中间人"攻击

如果发送方的源码和hash同时被“中间人”截获,“中间人”篡改原文并生成新的hash发送给接收方,就完全失去了保护意义,所以Hash如果想要生效,必须配合身份认证机制。

通过hash达到完整性保护只是TLS组合拳中的第一招,下一篇,我们看看TLS如何做到身份验证。




感谢阅读,如有不准确或错误请留言指正,我会及时修正

总结不易,请勿私自转载,否则别怪老大爷不客气

欢迎喜欢技术的小伙伴和我交流,微信1296386616

参考资料:

Wikipedia www.wikipedia.org

TLS Cipher Suite Search ciphersuite.info/cs/

Cryptographic Hashes and Bitcoin by Kalle Rosenbaum freecontent.manning.com/cryptograph…