HTTPS之加密算法

由于Apple在2017年要求全面支持Https,所以贴吧在进行了https改造,虽然没有参与到这个项目中,但想了很久写一篇关于https的文章,今天终于开始下笔了…

为什么需要HTTPS

大家知道,Http协议本身是明文传输的,他并没有经过任何的安全处理,介于发送端、接收端中间的任意节点都可以知道你们传输的内容是什么。即使在发送端对密码或者访问信息进行加密,这本身也是没用的,别人拿到加密后的信息照样可以做手脚。

这里提到的中间者主要指一些网络节点,是用户数据在客户端和服务器中间传输必须要经过的节点。比如 WIFI热点,路由器,防火墙,反向代理,缓存服务器等。这些中间节点不光可以截获用户发送的信息,也可以任意修改服务端返回的内容,可以随意往请求页面添加广告等等。

HTTPS的出现有效解决了上述问题,它提供的请求内容加密、身份认证、保障数据完整性的强大功能有效保障了客户端和服务端交互的网络安全。

什么是HTTPS

超文本传输安全协议(英语:Hypertext Transfer Protocol Secure,缩写:HTTPS,也被称为HTTP over TLS,HTTP over SSL或HTTP Secure)是一种网络安全传输协议。在计算机网络上,HTTPS经由超文本传输协议进行通信,但利用SSL/TLS来对数据包进行加密。HTTPS开发的主要目的,是提供对网络服务器的身份认证,保护交换数据的隐私与完整性。

摘自Wikipedia

大家都知道,TCP是明文传输,只负责数据传输协议,应用层负责将数据打包,所以不管哪种HTTPS的解释,HTTPS本质是在应用层和传输层中添加了一层加密层TLS/SSL。所以TLS/SSL是介于应用层和传输层中间的安全协议,不影响原有的TCP协议和HTTP协议,所以使用HTTPS基本上不需要对HTTP页面进行太多的改造。

即:原先是应用层将数据直接给到TCP进行传输,现在改成应用层将数据给到TLS/SSL,将数据加密后,再给到TCP进行传输。

CSDN图标

HTTPS数据加密 —– TLS/SSL

TLS/SSL 的功能实现主要依赖于三类基本算法:

  • 非对称加密,用与实现身份认证和密钥协商
  • 对称加密,采用非对称加密协商的密钥对数据加密
  • 散列函数Hash,验证数据的完整性

下面详细讲解下这三类算法:

非对称加密

非对称加密的意思就是,加密数据用的密钥(公钥),跟解密数据用的密钥(私钥)是不一样的,区别于对称加密的相同密钥。

  • 公钥:公开的密钥,谁都可以查到。通过公钥加密的数据,只能通过私钥解开
  • 私钥:非公开的密钥,由server端独自持有。通过私钥加密的数据,只能通过公钥解开

掌握公钥的不同客户端之间不能互相解密信息,只能和掌握私钥的服务器进行加密通信,因此服务器可以实现1对多的通信,客户端也可以用来验证掌握私钥的服务器身份。

非对称加密的特点是信息传输1对多,服务器只需要维持一个私钥就能够和多个客户端进行加密通信,但服务器发出的信息能够被所有的客户端解密,且该算法的计算复杂,加密速度慢。而且非对称加密算法对加密内容的长度有限制,不能超过公钥长度。比如现在常用的公钥长度是2048位,意味着待加密内容不能超过256个字节。所以公钥加密目前只能用来作密钥交换或者内容签名,不适合用来做应用层传输内容的加解密。

通过客户端和服务器端的两个随机数做种子就能确定地求出一个48位长的随机数,这个随机数作为服务端和客户端数据交互对称加密的密钥。

常见的非对称加密算法有RSA,ECDHE,DH,DHE等,目前业内使用最多就是RSA算法,RSA算法实现简单,诞生于1977年,历史悠久,经过了长时间的破解测试,安全性高。缺点就是需要比较大的素数(目前常用的是2048位)来保证安全强度,很消耗CPU运算资源。RSA是目前唯一一个既能用于密钥交换又能用于证书签名的算法。RSA算法的具体实现大家可以参考欧拉函数。

对称加密

对称加密相对大家比较熟悉了,加密数据用的密钥,跟解密数据用的密钥是一样的。

  • 优点:加密、解密效率通常比较高。
  • 缺点:密钥的不安全性,数据发送方、数据接收方需要协商、共享同一把密钥,并确保密钥不泄露给其他人;维护成本高,对于多个有数据交换需求的个体,两两之间需要分配并维护一把密钥。

常见的对称加密算法有 AES-CBC、DES、3DES、AES-GCM等,由于相同的密钥可以用于信息的加密和解密,掌握密钥才能获取信息,能够防止信息窃听,所以对称加密的通信方式是1对1。

散列函数HASH

在信息传输过程中,散列函数不能单独实现信息防篡改,因为明文传输,中间人可以修改信息之后重新计算信息摘要,因此需要对传输的信息以及信息摘要进行加密

散列函数 Hash,常见的有 MD5、SHA1、SHA256,该类函数特点是函数单向不可逆、对输入非常敏感、输出长度固定,针对数据的任何修改都会改变散列函数的结果,用于防止信息篡改并验证数据的完整性;

总结

结合三类算法的特点,TLS 的基本工作方式是,客户端使用非对称加密与服务器进行通信,实现身份验证并协商对称加密使用的密钥,然后对称加密算法采用协商密钥对信息以及信息摘要进行加密通信,不同的节点之间采用的对称密钥不同,从而可以保证信息只能通信双方获取。

下一篇将讲解HTTPS之PKI体系

发表评论

电子邮件地址不会被公开。 必填项已用*标注