首页 > 编程知识 正文

https原理,https通信原理

时间:2023-05-06 11:49:35 阅读:233068 作者:3409

https原理探究 1. 概述

这里会循序渐进的讲解:明文传输、对称加密、非对称加密、结合对称非对称加密、CA证书授权。

https为了保证安全性以及效率,采取的措施:非对称加密、对称加密,、CA。

这里参考的网址:HTTPS原理全解析。

2. 明文传输 传输过程如下图:

可以看到黑客很容易截取我们的请求,导致传输的数据泄露,因此不可取。 3. 对称加密 对称加密需要两个函数:加密函数 f1,解密函数f2,同时还需要一个秘钥K,对于给定数据data,有:

f 1 ( K , d a t a ) = X f 2 ( K , X ) = d yjddn_1(K, data) = X \ f_2(K, X) = data f1​(K,data)=Xf2​(K,X)=data

此时我们传输密文X即可,传输过程如下:

这样其实也是存在问题的。

首先,服务端不可能存储和所有客户端对应的K,一方面十分浪费空间,另一方面服务端实现也不知道哪些客户端会连接。因此服务端可以保存一个K。

那这样黑客也可以作为客户端获取这个K,这样别的客户端和服务端通信的数据也可以被黑客解密,因此不安全。

4. 非对称加密

非对称加密最常见的是RSA,关于该加密算法请参考:RSA公钥加密算法。

加密解密需要一个函数f,同时需要公钥PK,私钥SK,对于给定数据data,有:

f ( P K , d a t a ) = Y f ( S K , Y ) = d a t a f ( S K , d a t a ) = Y ′ f ( P K , Y ′ ) = d yjddn(PK, data) = Y \ f(SK, Y) = data \ f(SK, data) = Y' \ f(PK, Y') = data f(PK,data)=Yf(SK,Y)=dataf(SK,data)=Y′f(PK,Y′)=data

这种方式也存在问题。

客户端给服务端发送的数据Y是用公钥进行加密的,因此只有服务端可以解密。但是服务端给客户端发送的数据不能使用公钥加密,因为客户端没有私钥,无法还原数据,因此服务端只能使用私钥加密,这样的话Y'可以被黑客解密,因为公钥是公开的,不安全。

解决办法之一:客户端也存储自己的公钥、私钥,将自己的公钥发给服务端,服务端使用客户端的公钥进行加密,这样也能保证服务端向客户端发送数据的安全性了。这样其实也是不可取的,原因有两点:

(1)但是非对称加密计算量太大;

(2)存在中间人问题。

5. 结合对称、非对称加密

使用非对称加密、对称加密两种方式确保数据安全传输。分为两个阶段:

(1)使用非对称加密协商之后对称加密需要的K;

(2)使用对称加密进行传输数据。

流程图如下:

这种方式的话,第(1)步黑客无法获知K,并且每个客户端和服务端都可以协商属于该连接的K,看似十分安全了,但是还是存在问题:中间人问题,如下图:

可以看到中间通信过程都被黑客劫持了,黑客可以获得协商的K,因此黑客可以获取通信双方的任何信息。 6. CA证书授权

CA:全称Certificate Authority,是一个机构,这个机构负责给网站颁发证书。

CA会有一系列安全的CPK、CSK,一个网站服务端有自己的PK、SK,网站的PK通过CSK进行加密得到网站的license,即:

f ( C S K , P K ) = l i c e n s e f(CSK, PK) = license f(CSK,PK)=license

这个证书license会保存在服务端,CA的目的就是保证证书不会被被中间的黑客篡改,如果被中间人(黑客)篡改的话,这个中间人(黑客)还需要向CA机构认证。

CA的原理就是利用了非对称加密的应用:私钥签名。

这样整个传输过程如下(参考网址):

客户端本地存储的有机构的公钥,这样就可以防止公钥被黑客篡改,加上私钥签名,确保了license的可靠性,cmd中输入certmgr.msc可以查看本地公钥,如下图:

保留了证书的安全性之后,我们就可以得到正确的服务器端公钥,然后将会话秘钥使用该公钥加密传输给服务端,即使中间被劫持黑客也不能解密,因为秘钥只在服务端存在。

之后通过会话秘钥(对称加密)就可以传输数据了。

这种方式既保证了安全性,同时最后传输使用对称加密,降低了计算量。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。