HTTPS文件传输

目录

  • 0.https概述
  • 1.单钥匙锁
  • 2.双钥匙锁 - 防篡改
  • 3.双钥匙锁 - 防泄漏
  • 4.单双钥匙锁相互配合

0.https概述

HTTPS其实就是HTTP协议加上TLS/SSL,SSL是个加密套件,负责对HTTP的数据进行加密,TLS是SSL的升级版,现在提到HTTPS,加密套件基本指的是TLS。

HTTP是应用层将数据直接给到TCP进行传输,现在改成应用层将数据给到TLS/SSL,将数据加密后,再给到TCP进行传输。

1.单钥匙锁

两台计算机C1、C2进行通信,互相传递信息,需要中间其他计算机如C进行传递,而这就给了中间人C3获取和修改传递信息的可能.

所以需要对文件进行加密,最简单的加密方式是锁上文件,解密和加密都需要同一把钥匙,这就叫对称加密。

但因为C1向C2发送加密过的文件时,C2也需要那把钥匙才能查看文件,所以实际上C1需要向C2发送钥匙,而钥匙的发送也要经过C3,一旦被其截获,则文件加密形同虚设,故延伸出其他加密方式。

2.双钥匙锁 - 防篡改

另一种加密方式,同样是加密文件,但是有两把钥匙,用钥匙 A 加锁,必须用钥匙 B 才能解锁。反过来用钥匙 B 加锁,必须用钥匙 A 才能解锁。
此为非对称加密
C1向C2发送用钥匙A加密过的文件前,C1向C2发送钥匙B,钥匙B可能被C3截获,他能够用钥匙B解密查看,但因为他没有钥匙A,所以他要是修改文件后只能用钥匙B加密,而钥匙B加密的文件只能用钥匙A打开,故C2收到被C3修改过的文件过后发现打不开,就知道文件已被篡改故直接丢弃。
但就像我所说的那样,这种方法无法阻止信息泄露。

3.双钥匙锁 - 防泄漏

第三种加密方式,C1做个锁,有两把钥匙生成,用钥匙 A 加锁,必须用钥匙 B 才能解锁。反过来用钥匙 B 加锁,必须用钥匙 A 才能解锁。C2同样做个锁,有两把钥匙生成,用钥匙 C加锁,必须用钥匙 D才能解锁。反过来用钥匙 D加锁,必须用钥匙 AC才能解锁。
C1向C2发送钥匙B,C2用B钥匙加密自己生成的钥匙D发送给C1,因为B钥匙加密的文件只有钥匙A才能打开,所以D钥匙只有C1能获取,之后C1、C2通信就用C、D钥匙加密传输文件,完美解决放修改防泄漏的问题,这就是完全对称加密。
但缺点就是效率有点低,低到这种方式现实中基本没人用。

4.单双钥匙锁相互配合

C1做个锁,有两把钥匙生成,用钥匙 A 加锁,必须用钥匙 B 才能解锁。反过来用钥匙 B 加锁,必须用钥匙 A 才能解锁。C2同样做个锁,但是是单钥匙锁,钥匙为K,加密解密速度更快。
C1向C2发送钥匙B,C2用B钥匙加密自己生成的钥匙K发送给C1,因为B钥匙加密的文件只有钥匙A才能打开,所以D钥匙只有C1能获取,之后C1、C2通信就用K钥匙加密传输文件,在达成防泄漏和防篡改的同时达到了快速的传输效率。这也是实际生产生活中的主流加密方式。

但还有问题就是,中间的C3也能用非对称加密造两把锁,他在收到B钥匙后并不转发,而是转发自己的钥匙,这样他也还是能得到双方的信息。

这时候就需要一个相对公正的机构来帮助了,通常是ca机构,它会生成这样的非对称锁,把用以加密文件的钥匙作为私钥留存,解密的钥匙作为公钥内置在浏览器中,在C1向C2发送B钥匙时,不直接发送,而是给浏览器,让其用私钥加密后再发给C2,C3也有公钥,能看到钥匙B,但它无法修改,这就杜绝了C3传自己钥匙的情况,至于要是ca机构不可靠…那就没办法了。

故私钥加密公钥解密叫签名,公钥加密私钥解密叫加密

你可能感兴趣的:(https,数据传输流程)