网络协议-HTTPS协议

HTTPS 协议算法

HTTPS协议用于更严肃的场景,例如金钱交易。若是你在网上购物还用的是HTTP协议就有风险了,黑客极可能截获你的HTTP报文,而后伪形成商家骗取你的财富。解决这个问题的思路是加密。加密分为两种,一种是对称加密,一种是非对称加密。网络

对称加密中,加密和解密的密钥是相同的。非对称加密中,加密和解密使用的密钥是不一样的,一把做为公开的公钥,另外一把是谁也不能给的私钥。网站

对称加密加密

在网络上通讯中,假如客户端和服务端都有对称密钥,客户端的密钥将信息加密发送出去,服务端接到消息用一样的密钥解密信息。服务端发送消息也是同样,信息经密钥加密后发送出去,客户端用一样的密钥解密。在网络中任何人截获数据包没有密钥也没法打开。spa

关键的问题在于,如何让客户端和服务端一样的对称密钥。这个问题用下面的非对称加密来解决。3d

非对称加密blog

私钥留给本身,公钥留给别人,我发的消息,有公钥的人都能看见,有公钥的人发的消息只有我能看见。但我只想给你看怎么办?hash

一、我用私钥加密信息,将消息和公钥发出去,你接到后,用个人公钥加密你要发的消息,消息中包含你的公钥。it

二、我接到消息,且这个消息只能我接到,我将你的公钥拿出来,加密我想要给你发的消息。ast

三、我将这个消息发送出去,这个消息只有你的私钥才能解密。这样咱俩就能私密通讯了。

但这里有个问题,就是若是有人冒充你,我是不知道的。这个问题由权威机构颁布的数字证书解决。

数字证书

谁均可以生成私钥和公钥,将公钥发出去,来冒充商家骗取钱财。这时候若是有个像政府部门的机构来发个身份证就行了。数字证书就是互联网上的权威机构发行的身份证。

数字证书里有:公钥、证书全部者、发布机构、有效期。

这个数字证书的颁发机构咱们称为 CA(Certificate Authority)。具体操做是用命令发起一个证书请求,而后权威机构会给这个证书卡一个章,咱们称为签名算法。

签名的算法大体是这样的:将信息用hash算法计算出hash 值,这个过程不可逆。将这个Hash值用CA的私钥加密后和信息一块儿发出去。

权威机构又是怎么证实本身的呢?怎样防止别人冒充它的?

这还要靠非对称加密,权威机构用本身的私钥给网站的公钥加密,就至关于给网站作了证书。当客户与网站交易时,会获取网站的证书,只要获得权威机构CA 的公钥,就能够解密网站的证书签名,若是解密成功,里面的hash等信息能对得上,就说明这个网站的公钥没问题。

 

HTTPS 的工做模式

因为对称加密的效率要比非对称加密的高不少,当咱们用非对称加密的密钥创建好信任以后,就能够用对称加密的密钥来通讯了。HTTPS 协议就是这个思路。

双方创建的过程按客户端和服务端模拟,具体过程以下:

一、首先客户端给服务端发送 Client Hello 消息,并将本身支持的加密算法,以及一个随机数给服务端。

二、服务端收到消息后,选择一个加密算法,并附上本身的证书和随机数,给客户端。

三、客户端收到消息后,验证服务端的证书,拿出证书的公钥验证签名和hash,若是可信就像服务端发送一个 pre-master-key 的随机数,该随机数使用证书的公钥加密,发送给服务端。客户端将本身的随机数 + 对方的随机数 + pre-master-key生成对称密钥。

四、服务端接到消息后,用私钥解密,将本身的随机数 + 对方的随机数 + pre-master-key生成对称密钥。

两边都有对称密钥以后,就能够相互通讯了。

相关文章
相关标签/搜索