一文读懂 HTTPS协议
目录
- 什么是HTTPS协议?
- TLS/SSL的工作原理
- 2.1 散列函数hash
- 2.2 对称加密
- 2.3 非对称加密
- 数字证书
- HTTPS通信过程
- HTTPS的优缺点
- HTTP和HTTPS协议的区别
1. 什么是HTTPS协议?
超文本传输安全协议(Hypertext Transfer Protocol Secure,简称:HTTPS)是一种通过计算机网络进行安全通信的传输协议。HTTPS经由HTTP进行通信,但利用SSL/TLS来加密数据包。HTTPS开发的主要目的,是提供对网站服务器的身份认证,保护交换数据的隐私与完整性。
HTTP协议采用明文传输信息,存在信息窃听、信息篡改和信息劫持的风险,而协议TLS/SSL具有身份验证、信息加密和完整性校验的功能,可以避免此类问题发生。
安全层的主要职责就是对发起的HTTP请求的数据进行加密操作 和 对接收到的HTTP的内容进行解密操作。
2. TLS/SSL的工作原理
TLS/SSL全称安全传输层协议(Transport Layer Security), 是介于TCP和HTTP之间的一层安全协议,不影响原有的TCP协议和HTTP协议,所以使用HTTPS基本上不需要对HTTP页面进行太多的改造。
TLS/SSL的功能实现主要依赖三类基本算法:散列函数hash、对称加密、非对称加密。这三类算法的作用如下:
- 基于散列函数验证信息的完整性
- 对称加密算法采用协商的秘钥对数据加密
- 非对称加密实现身份认证和秘钥协商
2.1 散列函数hash
常见的散列函数有MD5、SHA1、SHA256。该函数的特点是单向不可逆,对输入数据非常敏感,输出的长度固定,任何数据的修改都会改变散列函数的结果,可以用于防止信息篡改并验证数据的完整性。
特点: 在信息传输过程中,散列函数不能三都实现信息防篡改,由于传输是明文传输,中间人可以修改信息后重新计算信息的摘要,所以需要对传输的信息和信息摘要进行加密。
2.2 对称加密
常见的对称加密算法有AES-CBC、DES、3DES、AES-GCM等。相同的秘钥可以用于信息的加密和解密。掌握秘钥才能获取信息,防止信息窃听,其通讯方式是一对一。
特点: 对称加密的优势就是信息传输使用一对一,需要共享相同的密码,密码的安全是保证信息安全的基础,服务器和N个客户端通信,需要维持N个密码记录且不能修改密码。
2.3 非对称加密
常见的非对称加密算法有RSA、ECC、DH等。秘钥成对出现,一般称为公钥(公开)和私钥(保密)。公钥加密的信息只有私钥可以解开,私钥加密的信息只能公钥解开,因此掌握公钥的不同客户端之间不能相互解密信息,只能和服务器进行加密通信,服务器可以实现一对多的的通信,客户端也可以用来验证掌握私钥的服务器的身份。
特点: 非对称加密的特点就是信息一对多,服务器只需要维持一个私钥就可以和多个客户端进行通信,但服务器发出的信息能够被所有的客户端解密,且该算法的计算复杂,加密的速度慢。
综合上述算法特点,TLS/SSL的工作方式就是客户端使用非对称加密与服务器进行通信,实现身份的验证并协商对称加密使用的秘钥。对称加密算法采用协商秘钥对信息以及信息摘要进行加密通信,不同节点之间采用的对称秘钥不同,从而保证信息只能通信双方获取。
3. 数字证书
我们可以看到,如果使用非对称加密,那么客户端一开始就需要持有公钥,不然没办法开展加密行为。所以需要服务器将公钥发送给每一个客户端。
但是非对称加密方式无法证明公钥本身是真实的公钥。所以,在于服务器进行非对称加密方式的通信时,我们需要证明收到的公钥就是服务器发过来的公钥。这时我们就可以使用数字证书机构(CA,Certificate Authority)颁发的公钥证书。
数字证书认证机构处于客户端和服务器都可以信赖的第三方机构的立场上,服务器会将这份由数字认证机构办法的公钥证书发送给客户端,以进行非对称加密方式的通信。公钥证书也可以称之为数字证书。
接到证书的客户端可以使用数字证书认证机构的公钥,对这张证书上的数字签名进行验证,只要验证通过,就可以知道认证服务器公钥的是真实有效的数字证书认证机构,服务器的公钥是值得信任的。
4. HTTPS通信过程
HTTPS的通信过程如下:
- 客户端发起HTTPS请求
- 服务端向客户端传送证书,这个证书其实就是公钥
- 客户端解析证书: 这部分工作是有客户端的TLS来完成的,首先会验证公钥是否有效,比如颁发机构,过期时间等,如果发现异常,则会弹出一个警告框,提示证书存在问题。如果证书没有问题,那么就生成一个随即值,然后用证书对该随机值进行加密。
- 客户端向服务端传送加密信息: 这部分传送的是用证书加密后的随机值,目的就是让服务端得到这个随机值,以后客户端和服务端的通信就可以通过这个随机值来进行加密解密了。
- 服务端解密信息: 服务端用私钥解密后,得到了客户端传过来的随机值(私钥),然后把内容通过该值进行对称加密。
- 传输加密后的信息: 这部分信息是服务段用私钥加密后的信息,可以在客户端被被解密。
- 客户端解密信息: 客户端用之前生成的私钥解密服务端传过来的信息,于是获取了解密后的内容。
5. HTTPS的优缺点
HTTPS的优点如下:
- 使用HTTPS协议可以认证用户和服务器,确保数据发送到正确的客户端和服务器
- 使用HTTPS协议可以进行加密传输、身份认证,通信更加安全,防止数据在传输过程中被窃取、修改,确保数据安全性。
- HTTPS是现行架构下最安全的解决方案,虽然不是绝对的安全,但是大幅增加了中间人攻击的成本
HTTPS的缺点如下:
- HTTPS需要做服务器和客户端双方的加密个解密处理,耗费更多服务器资源,过程复杂
- HTTPS协议握手阶段比较费时,增加页面的加载时间
- SSL证书是收费的,功能越强大的证书费用越高
- HTTPS连接服务器端资源占用高很多,支持访客稍多的网站需要投入更大的成本
- SSL证书需要绑定IP,不能再同一个IP上绑定多个域名
6. HTTP和HTTPS协议的区别
HTTP和HTTPS协议的主要区别如下:
- HTTPS协议需要CA证书,费用较高;HTTP协议不需要
- HTTP协议是超文本传输协议,信息是明文传输的,HTTPS则是具有安全性的SSL加密传输协议
- 使用不同的连接方式,端口也不同,HTTP协议端口是80,HTTPS的协议端口是443
- HTTP协议连接很简单,是无状态的;HTTPS协议是有SSL和HTTP协议构建的可进行加密传输、身份认证的网络协议,比HTTP更加安全
还没有评论,来说两句吧...