您当前的位置:首页 > 知乎文章

用柯南的方式解答SSL协议数据加密过程

时间:2022-02-28 10:48:41  知乎原文链接  作者:网盾科技

SSL

只要你听过HTTPS,不可能没听过SSL协议吧,SSL协议是一种安全协议。

class="ztext-empty-paragraph">

HTTP是一种明文传输协议,而HTTPS就是在他的基础上加了SSL这个外挂来对传输的数据进行加密。SSL具体是如何实现加密的呢?

真相永远只有一个。先看下面两个概念:

  • 对称加密
  • 非对称加密

哈?这是什么东东,我们用最通俗的方式来解释

你有对象吗?没有对象你也谈过恋爱吧?没谈过的请自行面壁五分钟反省一下自己为什么没。有对象的男同胞们会发现,你的人身自由彻底受到限制。酒吧蹦迪别想了,去网吧都会被管制,兄弟打电话叫你出去浪怎么办,当然是做暗语加密了!比如兄弟A想叫我出去玩,我们先制定好暗语:吃烤串=酒吧,吃火锅=蹦迪,吃麻辣烫=网吧,加板凳=有妹子,于是一个加密方法就诞生了,这个加密方法只有我和A知道,女朋友就算听到了也只当我们是正常聚餐这种我和A知道,别人不知道的加密方法就是一种对称加密算法,对称加密算法也是我们日常最常见的加密算法。这种算法的不足是钥匙只有一把,加密解密都用同一把钥匙,一旦泄露就全玩完了。

随时时代的进步,人们发现实际上加密和解密不用同一把钥匙也是可以的,只要加密和解密的两把钥匙存在某种关系就行了。

于是,层出不穷的非对称加密算法就被研究了出来,那么它基于什么样的道理呢?请严格记住下面这句话:

将a和b相乘得出乘积c很容易,但要是想要通过乘积c倒推出a和b极难。即对一个大数进行因式分解极难

所谓非对称加密算法就多了两个概念——公钥c和私钥b。

用法如下:公钥加密的密文只能用私钥解密,私钥加密的密文只能用公钥解密。

公钥我们可以随便公开,因为别人知道了公钥毫无用处,经过公钥加密后的密文只能通过私钥来解密。而想要通过公钥推导出a和b极难。但很明显的是,使用非对称加密效率不如对称加密,因为非对称加密需要有计算两个密钥的过程。

要明白非对称加密的过程首先我们需要一台网盾服务器,在服务器的基础上进行数据加密。

假设网盾服务器我们有了,客户端叫做小明,服务器叫做小红。(小明以为自己只能活在小学课本里,没想到能做次客户端)

小明: 好,我的公钥是:52wangdunkG123;
小红:收到公钥,我给你发送的消息经过公钥加密之后是这样的:#$#$@#@!$%*(@;
小明:好的,收到了,亲,我来用我的私钥解密看下你真正要给我发送的内容;

上述过程就是一个非对称加密的过程,这个过程安全么?好像是很安全,即使小华截取了密文和公钥没有私钥还是没法得到明文。

可如果第三者小华发送给小红他自己的公钥,然后小红用小华给的公钥加密密文发送了出去,小华再通过自己的私钥解密,这不就泄露信息了么?我们需要想个办法让小红判断这个公钥到底是不是小明发来的。

于是就有了数字证书的概念:

数字身份证,而是身份认证机构盖在数字身份证上的一个章或印(或者说加在数字身份证上的一个签名)。

其实它就是一段信息。

数字证书内容大体如下:

数字证书是由权威机构——CA机构统一来进行发行,我们绝对信任这个机构,至于CA机构的安全性…反正99.99%之下都是安全的。?

为了防止中间有人对证书内容进行更改,有了一个数字签名的概念,所谓的数字签名就是把以上所有的内容做一个Hash操作,得到一个固定长度然后再传给小明。然而如果别人截取了这个证书然后更改内容,同时生成了新的Hash值那怎么办?处于这个考虑,CA机构在颁发这个证书的时候会用自己的私钥将Hash值加密,从而防止了数字证书被篡改。

好,我们来梳理下整个过程:

  • 第一步:首先,当小红开启一个新的浏览器第一次去访问小明的时候,会先让小红安装一个数字证书,这个数字证书里包含的主要信息就是CA机构的公钥。
  • 第二步:小明发送来了CA机构颁发给自己的数字证书,小红通过第一步中已经得到的公钥解密CA用私钥加密的Hash-a(这个过程就是非对称加密),然后再用传递过来的HASH算法生成一个Hash-b,如果Hash-a === Hash-b就说明认证通过,确实是小明发过来的。

如上,是整个数字证书的使用过程就是这样的。

多说一句,非对称加密实际应用的例子除了SSL还有很多,比如SSH电子签名等;

如上提到的,非对称加密计算量很大,效率不如对称加密,我们打开网页最注重的是啥?是速度!是速度!是速度!???

这点SSL就玩的很巧妙了,通信双方通过对称加密来加密密文,然后使用非对称加密的方式来传递对称加密所使用的密钥。这样效率和安全就都能保证了。

SSL协议的握手过程

先用语言来阐述下:

  1. 第一步:小红给出支持SSL协议版本号,一个客户端随机数(Client random,请注意这是第一个随机数),客户端支持的加密方法等信息;
  2. 第二步:小明收到信息后,确认双方使用的加密方法,并返回数字证书,一个服务器生成的随机数(Server random,注意这是第二个随机数)等信息;
  3. 第三步:小红确认数字证书的有效性,然后生成一个新的随机数(Premaster secret),然后使用数字证书中的公钥,加密这个随机数,发给小明。
  4. 第四步:小明使用自己的私钥,获取小红发来的随机数(即Premaster secret);(第三、四步就是非对称加密的过程了)
  5. 第五步:小红和小明通过约定的加密方法(通常是AES算法),使用前面三个随机数,生成对话密钥,用来加密接下来的通信内容;

用一张图来说明这个过程:

OK,整个进行数据加密的过程结束。我们再来回忆下内容:

上一篇      下一篇    删除文章    编辑文章
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
推荐资讯
相关文章
    无相关信息
栏目更新
栏目热门