HTTPS理解小结

2022-01-11 10:13:42 浏览数 (1)

1单钥匙锁(对称加解锁 )

在HTTP传输数据过程中,我做了一把锁,并将钥匙也发给我的伙伴,传输途中使用该锁将数据加密,由于其他人并没有钥匙和锁,所以就无法窥探其中的数据,以此来保证数据传输的安全,但是在传途中由于我与对方并不是点对点传输,会经过中间人,中间人如果有心,就会将我传输给对方的钥匙复制下来,以达到窥探,修改数据的目的,所以单单靠这把锁并不安全。

2双钥匙锁(非对称加解锁 )

由于单钥匙锁并不安全,所以就发明了双钥匙锁,它的原理是:用钥匙 A 加锁,必须用钥匙 B 才能解锁。反过来用钥匙 B 加锁,必须用钥匙 A 才能解锁。

此时,这个钥匙 B 被人复制了一份也没关系,坏人只能用钥匙 B 打开盒子偷看我的内容,但是他如果想篡改内容,必须用钥匙 A 才能把盒子锁住,而钥匙 A 一直在我手里,从来没有传递过,没人知道。

此时防止篡改的问题解决了,但是还是可以窥探。

3双钥匙锁 - 防泄漏

因为上一把锁并不能完全做到安全,于是就又想到了 一个方法,在我给对方把数据传递过去的时候,我的伙伴也做一把双钥匙(钥匙为C,D),用B钥匙把锁锁住,将D钥匙传递给我,这样即使中间人有B钥匙,也无济于事,因为用B上的锁只能用我手里的A钥匙解锁,此时我手里就有了D钥匙,再次之后我们就用C D钥匙进行加解锁,这样泄露与篡改问题就完全解决了。

虽然说是问题解决了但是这使用两次双钥匙锁由于设计的太过复杂,导致加锁解锁的效率实在是太低了。此时就发明了我们现在所用的安全措施。

4单双钥匙锁相互配合

  1. 由我的伙伴设计一个双钥匙锁,配两把钥匙 C 和 D,然后把钥匙 D 给我。
  2. 我这边准备一个单钥匙锁,配一个钥匙 M,把它与数据一起传输并且用钥匙 D 加锁,传给我的伙伴
  3. 传送过程中,由于钥匙 D 加锁的盒子只能用钥匙 C 解锁,所以中间人无法查看和篡改内容,最终钥匙 M 被安全传送到我的伙伴手里。
  4. 此时,我们双方都有了钥匙 M 和与之对应的单钥匙锁,而且这个钥匙 M 谁都不知道。
  5. 在此之后,我们用钥匙 M 去加密我们的信息,我的伙伴用钥匙 M 解密我们的信息,达成了安全通信的条件。

但是中间人也想除了一个应对办法:

1.就是自己也做一个双钥匙锁(钥匙为X,Y)

2.在我的伙伴将D钥匙传输给我的时候,中间人将D钥匙偷偷的换成他自己的X钥匙并且用Y加锁

3.我收到的时候并不知道此时钥匙已经被替换,我此时将单钥匙锁的钥匙M发送过去,并用中间人的X加锁

4.中间人收到后用自己的Y解锁并且把里面的M钥匙复制,并用D钥匙加锁发给我的伙伴

5我的伙伴收到后用自己的C钥匙进行解锁

6.此时我与我的伙伴对中间人的这个过程并不知道,所以中间人就可以用M钥匙为所欲为

5做公证

我们找了个可以信任过的人让他也准备了一个双钥匙锁,然后配置了两把钥匙 J 和 K,然后把钥匙 K 公开让所所有人都知道。

在我的伙伴第一次准备给我钥匙 D 时,不再直接给我了,而是找公证人,把钥匙 D 放在一个盒子里,让公证人用自己的钥匙 J 给加锁。

然后我的伙伴把这个用钥匙 J 加好锁的盒子传给我,我用公证人公开的钥匙 K 解锁盒子,就可以得到小宇的钥匙 D 了。

此过程中中间人虽然可以看到内容但是无法修改,此时就防止了他偷偷替换掉钥匙的机会。

此时我就能成功用我的伙伴给我的真正的钥匙 D 加锁我们之后要通讯用的钥匙 M,于是这个钥匙 M 就被安全地传给了我的伙伴,我们之后就可以用这个谁也不知道的钥匙 M,和配套的单钥匙锁,进行安全的通信了。

6 名词理解

在上述过程中我就是客户端,伙伴就是服务端,公证人就是 CA 机构。

单钥匙就是对称加密,对称加密的速度很快,可以用于传输过程中的数据加密,防止中间人查看和篡改信息。但是如何将对称加密的秘钥安全传递过去,是个问题。

双钥匙就是非对称加密,非对称加密的速度慢,可以用于加密少量数据,同时也可以用于签名防止篡改,为什么呢?看后面。

非对称加密的秘钥中,公开让别人知道的就是公钥,比如我的伙伴的钥匙 D 或公证人的钥匙 K 等。

留在自己这里不让别人知道的就是私钥,比如伙伴的钥匙 C 或公证人的钥匙 J 等。

既可以用私钥加密数据,公钥解密数据。也可以用公钥加密数据,私钥解密数据。

公钥加密,私钥解密,这个叫加密,是为了保证内容安全,因为私钥只有自己知道,是为了保证这个信息不被中间人解开。

私钥加密,公钥解密,这个叫签名,是为了防止内容被篡改,因为公钥所有人都知道,所有人都能看到这个信息做验证。

但是,如果想篡改,就必须得篡改原文信息后,用私钥加密,才能得到原来的效果,可惜私钥是不公开的。

对称加密是一种算法,只有一个秘钥。

非对称加密也是一种算法,有两个秘钥,自己保密的叫私钥,对外公开的叫公钥。

公钥加密,私钥解密,这个叫加密,客户端用服务端公钥加密自己的秘钥传过去,就是这个目的。

私钥加密,公钥解密,这个叫签名,CA 机构用私钥加密服务端的公钥信息生成签名,就是这个过程,其目的是为了防止篡改。

0 人点赞