HTTPS
HTTP协议的缺点
- 通信使用明文(不加密)内容会被监听
- 不验证通信方的信息,因此可能遭遇伪装
- 无法证明报文的完整新,所以有可能遭到篡改
因为HTTP的这些缺点,所以引入了HTTPS来进行加密.HTTPS 是 HTTP + SSL(secure socket layer) OR TLS
HTTPS解决了下面两个问题
- 认证访问的网站.比如说你在访问支付宝,怎么确定你访问的就是阿里巴巴 的支付宝而不是假冒的网站呢
- 保证传输数据的私密性和完整性.众所周知,Http是明文传输的,所以处在同一网络中的其它用户可以通过网络抓包来窃取和篡改数据包的内容,甚至运营商或者wifi提供者,有可能会篡改http报文,添加广告等信息以达到盈利的目的。

什么是SSL/TSL
SSL和TSL是一种安全协议。其中SSL是早起采用的安全协议,后来TSL是在SSL的基础上进一步标准化了SSL协议。在上面的图中可以看到,SSL和TSL位于传输层之上,在数据到达传输层之前都会经过SSL/TSL协议层处理,由SSL/TSL保证数据的机密性和完整性。
SSL/TSL中的加密技术
SSL/TSL安全协议保证数据安全的技术基础就是密码学。接下来,我们先了解一些跟HTTPS有关的密码学知识。
密码和密钥
密码是一种编码方案的算法,也就是使用一种编码方式编码数据,然后使用相应的解码方式解码数据的算法。
密钥是编码的参数。
通过密码+密钥就可以实现加密数据。
对称密钥加密
对称加密就是编码和解码使用同一个密钥的加密技术。
在对称加密中,发送端和接收端使用相同的密钥进行通信。发送端使用共享的密钥发送报文,然后将密文发送到接收端。接收端使用相同密钥解密密文,恢复原始数据。
非对称密钥加密
非对称加密也成为公开密钥加密技术,就是使用不同密钥进行通信的加密技术。
非对称加密技术使用了不同的密钥进行通信,在发送端使用公钥对报文进行加密(公钥就是所用人都可以获取到的密钥),然后在接收端使用私钥对加密的密文进行解密。常见的非对称加密技术是RSA技术。
数字签名
数字签名是附加在报文上的特殊加密校验码。数字签名可以防止报文被篡改,如果有恶意攻击在传输过程在篡改了报文,那么校验的时候校验和就不再匹配,因此可以确认报文被篡改了。
数字签名的加解密过程:
- 发送端将报文通过算法(比如通过HASH函数)提取为定长的摘要;
- 发送端将摘要应用签名算法,以私有密钥作为参数生成一个签名;
- 计算得出签名后,将签名附加在报文末端发送给接收方;
- 接收端收到报文后,对签名进行检查。接收端通过公开密钥解码签名。然后比对报文生成的摘要是否与签名一致便可判断报文是否被篡改。
数字证书
数字证书是由权威机构给某网站颁发的一种认可凭证。它主要包含一些认证信息,比如:对象的名称(服务器、组织、个人等)、过期时间、证书颁发者、来自证书发布者的数字签名。
1. 解决明文不加密被监听的问题
方法1 :对称加密
这种方式加密和解密使用同一个密钥.只要持有密钥就可以解密.问题在于怎么将密钥发送到对方,如果密钥被第三方拦截,第三方可以获取到传输的信息.
方法2:非对称加密
公开密钥加密方式使用一种非对称的加密方式.一把为私有密钥,一把为公开密钥.私有密钥只有自己知道,公开的密钥可以随意发布任何人都可以获得. 非对称加密的特点是传输一对多,服务器只需要维护一个私钥就能够和多个客户端进行加密通信
这种方式的缺点:
- 因为公钥是公开的,攻击者可以针对私钥加密的信息使用公钥进行解密获取到内容
- 公钥中不包含服务器的验证信息,使用f非对称加密算法无法保证服务器身份的合法性,存在中间人攻击的风险.可能在中间有黑客获取到公钥的信息,并且将公钥的信息篡改为自己的公钥的信息作为中间人进行通信,从而获取到双方的信息
- 使用非对称加密需要消耗一定的性能
方法3 对称加密 +非对称加密
这种方式也是HTTPS采用的方式.重分利用了对称加密速度快和非对称加密安全的特点. 在交换密钥的时候使用了非对称加密的方式,通信的过程使用了对称加密的方式.
假如A 向 B 发送信息, B先将自己的公钥发送给A ,然后A 将对称的密钥通过接收到的非对称的公钥加密后发送给B,就算中途被拦截也没有问题,因为只有B端的私钥可以解密.B接收到A的对称公钥之后,A和B可以通过这个公钥进行通信.
2.解决报文信息可能遭到篡改的问题(数字签名)
使用的上面的混合加密算法解决了被解密的问题,但是还存在的问题就是报文获取到之后进行了篡改.一般通过校验数字签名的方法来解决这个问题
数字签名的两种功效
- 能确定消息确实是由发送方签名并发出的,因为别人假冒不了签名
- 数字签名能确定消息的完整性,证明数据是否未被篡改`
数字签名的生成:
- 将发送的文本经过哈希函数生成消息摘要
- 将消息摘要使用私钥加密形成数字签名
- 加数字签名附在消息后面
数字签名的解析(接受方):
接受到消息之后,将文本进行哈希产生信息摘要与上一步的信息摘要进行对比.如果一致就说明接受到的信息是服务器端发送过来的,并且信息是完整的.
当然上面的前提是接受方的公钥确实是从发送方发送的!这个很重要,这个时候就需要CA(certificate authority)
3. 解决伪装的问题
这里指的是验证服务器的身份比如我请求的是支付宝,我怎么确定给我回复的就是支付宝而不是其他的钓鱼网站呢
一般来讲CA是第三方可信任的机构
我们来介绍一下数字证书认证机构的业务流程:
- 服务器的运营人员向第三方机构CA提交公钥、组织信息、个人信息(域名)等信息并申请认证;
- CA通过线上、线下等多种手段验证申请者提供信息的真实性,如组织是否存在、企业是否合法,是否拥有域名的所有权等;
- 如信息审核通过,CA会向申请者签发认证文件-证书。证书包含以下信息:申请者公钥、申请者的组织信息和个人信息、签发机构 CA的信息、有效时间、证书序列号等信息的明文,同时包含一个签名。 其中签名的产生算法:首先,使用散列函数计算公开的明文信息的信息摘要,然后,采用 CA的私钥对信息摘要进行加密,密文即签名;
- 客户端 Client 向服务器 Server 发出请求时,Server 返回证书文件;
- 客户端 Client 读取证书中的相关的明文信息,采用相同的散列函数计算得到信息摘要,然后,利用对应 CA的公钥解密签名数据,对比证书的信息摘要,如果一致,则可以确认证书的合法性,即服务器的公开密钥是值得信赖的。
- 客户端还会验证证书相关的域名信息、有效时间等信息; 客户端会内置信任CA的证书信息(包含公钥),如果CA不被信任,则找不到对应 CA的证书,证书也会被判定非法。
2.HTTPS的工作流程

总结一下HTTPS工作流程
-
客户端请求建立SSL连接,并将自己支持的一套加密规则发送给网站。
-
网站从中选出一组加密算法与HASH算法,并将自己的身份信息以证书的形式发回给浏览器。证书里面包含了网站地址,加密公钥,以及证书的颁发机构等信息
-
获得网站证书之后浏览器要做以下工作:
Ø 验证证书的合法性
Ø 如果证书受信任,浏览器会生成一串随机数的密码,并用证书中提供的公钥加密。
Ø 使用约定好的HASH计算握手消息,
Ø 使用生成的随机数对消息进行加密,最后将之前生成的所有信息发送给网站。
- 网站接收浏览器发来的数据之后要做以下的操作:
Ø 使用自己的私钥将信息解密取出密码
Ø 使用密码解密浏览器发来的握手消息,并验证HASH是否与浏览器发来的一致。
Ø 使用密码加密一段握手消息,发送给浏览器
- 浏览器解密并计算握手消息的HASH,如果与服务端发来的HASH一致,此时握手结束。
数据之后要做以下的操作:
Ø 使用自己的私钥将信息解密取出密码
Ø 使用密码解密浏览器发来的握手消息,并验证HASH是否与浏览器发来的一致。
Ø 使用密码加密一段握手消息,发送给浏览器
-
浏览器解密并计算握手消息的HASH,如果与服务端发来的HASH一致,此时握手结束。
-
使用随机密码和对称加密算法对传输的数据加密,传输。
HTTPS通过结合SSL/TLS协议,解决了HTTP的明文传输、信息篡改和伪装问题。它采用对称加密和非对称加密相结合的方式,确保数据的私密性和完整性,并通过数字证书验证服务器身份,防止中间人攻击。HTTPS的工作流程包括证书交换、加密密钥协商和握手验证,保障了网络安全通信。
1万+

被折叠的 条评论
为什么被折叠?



