理解HTTPS(1) -- 初识

前言

在探究HTTPS前首先要了解这个协议的存在到底是为了解决什么问题,都知道HTTPS比HTTP安全,安全又体现在哪里呢?其实,HTTPS主要解决了加密密钥传输的安全问题。也就是说,对于数据的加密,还是采用对称加密,即加密和解密都是使用的一个密钥。但是这个密钥如何安全地让客户端和服务端都知道呢?这就需要引入HTTPS来保证密钥传输的安全性。
举个例子,把A把重要的资料放在一个只能用钥匙打开的迷你保险柜里,通过快递寄给B(相当于数据加密传输),这个过程中,即使快递寄丢了,别人也打不开保险柜,拿不到资料,但问题是B如何拿到保险柜的钥匙?也直接用快递吗?显然不行,万一钥匙寄丢了,岂不是酿成大错。所以必须解决钥匙安全传输的问题。

1.HTTP协议简介

HTTP(HyperText Transfer Protocol)是一种位于网络模型最上层(应用层)的超文本传输协议,所有的www文件都必须遵守这个协议。

2.HTTP协议的优点

HTTP协议的主要优点是:
1.简单灵活,可以传输任意数据类型的数据。
2.协议简单,传输速度快。
3.无连接、无状态,消耗的资源很少。

3.HTTP协议的缺点

1.正是由于HTTP的简单灵活的特点,导致了它的一个最大的缺点——明文传输。即数据的传输是明文的,无法保证传输过程的安全性,其内容很有可能被窃听。
2.不验证连接方的身份,有可能在传输途中被劫持,从而实现伪装,威胁安全。特别是涉及到资金交易的平台,要是单纯使用HTTP协议来传输数据,是无法保证资金安全的。

3.SSL

3.1 简介

SSL协议是 NetScape 公司于 1994 年提出的一个信息加密传输协议,其主要特点有3个:
1.在传输数据开始前,通讯双方会进行身份认证,确保数据的目的地和始发地正确。
2.对传输的数据进行加密,防止传输途中被别人窥看数据真实内容。
3.对传输数据进行一定的封装,用于保证数据的完整性。

它是建立在应用层和传输层之间的一种协议。

3.2加密技术

加密技术一般分为对称加密非对称加密
所谓对称加密,就是加密与解密的密钥是相同的,一旦密钥被泄露,加密的内容就可以被轻松解密。
而非对称加密中,服务器会生成一对密钥:公钥私钥。这时,加密与解密的密钥是不相同的,如果加密用公钥,则解密必须用私钥。反之,加密用私钥,解密就必须用公钥
结合客户端与服务器的场景,如果客户端想要向服务器传输数据,应该分为以下3步:

1.服务端———(公钥)—————>客户端
2.客户端—(用公钥加密的数据)—>服务端
3.服务端收到加密的数据,用私钥解密。

(首先应该是服务器把它的公钥发送给客户端,客户端再用公钥加密数据传递给服务端,最后服务端再用私钥解密数据)

4.HTTPS的简介

HTTPS就是HTTP与SSL的联合使用,用来解决HTTP协议存在的安全问题。即:
HTTPS = HTTP + SSL(TSL)(身份认证,数据加密,数据完整性保护)

5.HTTPS的工作流程

5.1 通俗的说法

结合前言里提到的快递资料的问题,HTTPS的整体流程如下:
HTTPS的整体流程
具体步骤也很好理解:
1.首先B会向权威机构申请到证书(下面会说到为何要引入证书),证书中包含了B的公钥,并用权威机构的私钥加密证书,之后快递给A。
2.然后A再用权威机构的公钥(公钥是公开的,A会提前内置)去解密证书,拿到B的公钥。
3.之后A再用B的公钥加密A生成的密钥,并快递给B。
4.再然后B就用自己的私钥去解密得到A生成的密钥。
整个过程走下来A和B双方都有私钥了。这样一来A再把保险柜快递给B,B就能打开了。

纵观整个过程,即使快递中途寄丢,最重要的资料和密钥也不会被破解出来,这正是HTTPS的作用。

5.2 专业的说法

首先看一下传递密钥的流程:
HTTPS工作流程
HTTPS采用对称加密和非对称加密两者并用的混合加密机制,在交换密钥环节(图中1-5步)使用非对称加密方式,之后的建立通信交换报文阶段则使用对称加密方式。
这里需要注意的是证书的作用,证书是为了保证传输的公钥不被劫持修改,简单来说就是如果不使用证书,服务器传递给客户端的公钥有可能被黑客劫持,然后换成黑客自己的公钥,之后客户端用就会使用黑客的公钥加密密钥,这样一来黑客就切取到了密钥。就如同下图的过程:
黑客劫持公钥
那么证书是如何保证公钥不被劫持的呢?
其实数字证书中除了包含加密之后的服务器公钥外,还包含了权威机构的信息(属于明文信息)和证书内容的签名(先通过Hash函数计算明文信息,得到证书数字摘要,然后用权威机构私钥加密数字摘要得到数字签名)。
证书内容
这样一来,客户端收到证书之后:只需先通过CA的公钥解密数字签名,得到摘要AA,再用HASH函数计算证书的明文信息,得到另一个摘要AA’,若AA与AA’是完全吻合的(如果公钥被黑客替换,AA和AA’将会不一样),则证明证书没有被劫持调包,从而保证了传输的安全。
还有一点就是,CA的公钥应该是最开始内置到客户端中的,不需要传递,所以,CA的公钥一定是安全的。

至此,对于HTTPS的工作流程就有了一个清晰的认识,下一篇文章将分析HTTPS在Android中的应用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值