计算机网络】之 HTTPS 保证数据安全防止被篡改"/>
【计算机网络】之 HTTPS 保证数据安全防止被篡改
目录
- 一、HTTP 与 HTTPS
- 二、HTTPS 是如何保证数据安全的
一、HTTP
与 HTTPS
1、HTTP
简介
HTTP(Hyper Text Transfer Protocol,超文本传输协议),是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从 WWW 服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。
但 HTTP 协议以明文方式传输数据,不提供任何方式的数据加密,如果攻击者截取了 Web 浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此,HTTP 协议不适合传输一些敏感信息,比如:信用卡号、密码等支付信息。
2、HTTPS
简介
HTTPS(Hypertext Transfer Protocol Secure,安全套接字层超文本传输协议),是 HTTP 协议的安全版本。
由于 HTTP 协议传输的数据都是明文,未加密的,因此使用 HTTP 协议传输隐私信息非常不安全,为了保证这些隐私数据能加密传输,于是网景公司设计了 SSL(Secure Socket Layer,安全套接层)协议用于对 HTTP 协议传输的数据进行加密,从而就诞生了 HTTPS。
简单来说,HTTPS 协议是由 SSL + HTTP 协议构建的可进行加密传输、身份认证的网络协议,比 HTTP 协议安全。而 SSL 依靠证书来验证服务器的身份,从而为浏览器和服务器之间的通信加密。
HTTPS 的主要作用有两点:
- 1、建立一个信息安全通道,来保证数据传输的安全;
- 2、确认网站的真实性。
二、HTTPS
是如何保证数据安全的
1、对称加密
服务端与客户端使用明文传输数据的过程可能会被黑客截取数据,这时我们可以通过对数据进行加密的方式来保证数据安全,具体操作流程为:
- 1、每次数据传输之前,服务端会先传一把密钥给客户端;
- 2、接着,服务端发送数据前会用这把密钥对数据进行加密,客户端收到消息后使用之前服务端给的密钥进行解密,这样就得到真正的数据了;
- 3、同样,客户端给服务端发送数据前也使用这把密钥进行加密,服务端收到消息后也用这把密钥进行解密得到数据。
这样,就保证了数据传输的安全性,这种加密和解密都用同一把密钥的方法称之为对称加密。
但这个策略存在的问题是,服务端是以明文的方式把这把密钥传输给客户端的,如果黑客截取了这把密钥,服务端与客户端就算是加密了内容,在截取了密钥的黑客眼里,这和明文没啥区别。
2、非对称加密
对称加密存在密钥会被截取的问题,那么,我们可以使用另一种加密方式:非对称加密,具体操作流程为:
- 1、客户端和服务端各自生成一对公钥和私钥,公钥是可以公开的,密钥只要自己才知道的;并且,用公钥加密的数据,只有对应的私钥才能解密;用私钥加密的数据,只有对应的公钥才能解密。
- 2、客户端把自己生成的公钥发送给服务端用于解密,同样服务端也把自己生成的公钥发给客户端用于解密。
- 3、服务端在给客户端传输数据的过程中,会用客户端给他的公钥进行加密,然后客户端收到后,再用自己的私钥进行解密。同样,客户端给服务端发送消息的时候,也会用服务端给他的公钥进行加密,然后服务端再用自己的私钥进行解密。
这种加密和解密使用不用密钥的方法就是非对称加密。虽然,非对称加密解决了对称加密中密钥被截取的问题,但还是存在一个问题:
假如服务端在给客户端发送公钥过程中,被黑客截取了,并用自己的公钥冒充服务端的公钥发给客户端;这时,客户端收到公钥后,用公钥进行数据加密传输(此时用的公钥实际是黑客的公钥),黑客截取加密消息之后,就可以用他的私钥进行解密获取真实数据。在篡改了数据之后再用截取到服务端的公钥进行加密,之后再发给服务端。这样,数据就存在被篡改暴露的问题了。
也就是说,非对称加密之所以不安全,是因为收到了公钥之后,无法确定这把公钥的真实来源。
3、数字证书
为了解决非对称加密的公钥来源问题,我们需要一种策略来证明公钥的来源不是被别人冒充的,而这种策略就是:数字证书。我们需要一个拥有公信力、大家都认可的认证中心(CA, Certificate Authority)。
1)生成数字证书
服务端在给客户端发送公钥过程中,会把公钥以及服务端自己的个人信息通过 Hash 算法生成消息摘要。
为了防止摘要被人拦截调换,服务端还会用 CA 提供的私钥(需要付费购买)对消息摘要进行加密形成数字签名。
最后再把原先未经过 Hash 算法的信息(服务端的公钥和个人信息)和数字签名合并在一起形成数字证书。整个流程如下图:
2)解析数字证书
客户端拿到这份数字证书之后,就会使用 CA 提供的公钥来对数字证书里面的数字签名进行解密得到消息摘要。然后对数字证书里面服务端的公钥和个人信息进行同样的 Hash 算法得到另一份消息摘要。最后把两份消息摘要进行对比,如果一样,则证明这些信息数据确实是来源服务端的,否则就不是。如图:
这时有人就会有疑问了,客户端是怎么拿到 CA 的公钥的?其实,原因很简单,常用的客户端,比如浏览器,一般都会内置一些常用的认证中心的公钥,但服务端的 CA 私钥是要申请购买的。
实际应用
在传输数据的过程中,由于在速度上用对称加密的方法会比非对称加密的方法快很多,所以在传输数据的时候,一般不会只用非对称加密这种方法,而是会采用非对称加密 + 对称加密这两种结合的方法。实际的操作为:用非对称加密方法来安全传输密钥,之后再用对称加密的方法来传输消息内容。
更多推荐
【计算机网络】之 HTTPS 保证数据安全防止被篡改
发布评论