前言

总括:

  • 原文博客地址:SSL协议之数据加密过程详解
  • 知乎专栏&&简书专题:前端进击者(知乎)&&前端进击者(简书)

  • 博主博客地址:Damonare的个人博客

生活

SSL

只要你听过HTTPS,不可能没听过SSL协议吧,SSL协议是一种安全协议。对于互联网协议没有了解的童鞋可以参考博主另一篇博客:internet协议入门

HTTP+SSL = HTTPS

HTTPS之所以安全就是因为加持了SSL这个外挂来对传输的数据进行加密,那么具体的加密方法又是什么呢?

请听我娓娓道来。先看下面两个概念:

  • 对称加密

  • 非对称加密

你知道上面两个概念是什么意思么??

?OK,不管你懂不懂,我先用我的方式来给你解释下:

亲,你作过弊么??不要告诉我在你漫长的学生生涯里你没作过弊(那你的学生生涯得多枯燥),作弊我们常用的方法是啥?(说把答案写在胳膊大腿纸条上的同学请你出去,谢谢?)当然是加密了!比如我出于人道主义,想要帮助小明同学作弊,首先考试前我们会约定好一个暗号来传递选择题的答案,摸头发——A,摸耳朵——B,咳嗽——C,跺脚——D,于是一个加密方法就诞生了,这个加密方法只有我和小明知道,老师虽然看我抓耳挠腮但他顶多把我当成神经病,并没有直接证据说我作弊。好,这种我和小明知道,别人不知道的加密方法就是一种对称加密算法,对称加密算法也是我们日常最常见的加密算法。这种算法?只有一把,加密解密都用同一把钥匙,一旦?泄露就全玩完了。

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

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

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

听不懂因式分解的童鞋先去面壁5分钟,这么多年数学白学了?甩给你维基百科链接,自行补课?:因式分解

好的,我们继续,非对称加密算法就多了两个概念——公钥c和私钥b。

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

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

我们通过密码学中的两个典型的爱丽丝和鲍勃人物来解释这个非对称加密算法的过程:

客户端叫做爱丽丝,服务器叫做鲍勃。

爱丽丝: 鲍勃我要给你发送一段消息,把你的公钥给我吧;

鲍勃: OK,这是我的公钥:234nkjdfdhjbg324**;

爱丽丝:收到公钥,我给你发送的消息经过公钥加密之后是这样的:#$#$@#@!$%*(@;

鲍勃:好的,收到了,亲,我来用我的私钥解密看下你真正要给我发送的内容;

上述过程就是一个非对称加密的过程,这个过程安全么?好像是很安全,即使查理(通信中的第三位参加者)截取了密文和公钥没有私钥还是没法得到明文。?

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

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

数字证书就是互联网通讯中标志通讯各方身份信息的一串数字,提供了一种在Internet上验证通信实体身份的方式,数字证书不是数字身份证,而是身份认证机构盖在数字身份证上的一个章或印(或者说加在数字身份证上的一个签名)。

?上面官方的解释看起来就头大。其实它就是一段信息。

数字证书内容大体如下:

  • 签发证书的机构
  • 鲍勃的加密算法
  • 鲍勃所使用的Hash算法
  • 鲍勃的公钥
  • 证书到期时间
  • 等等

数字证书是由权威机构——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,整个进行数据加密的过程结束。我们再来回忆下内容:

  • CA机构颁发数字证书给鲍勃;
  • 爱丽丝和鲍勃进行SSL握手,爱丽丝通过数字证书确定鲍勃的身份;
  • 爱丽丝和鲍勃传递三个随机数,第三个随机数通过非对称加密算法进行传递;
  • 爱丽丝和鲍勃通过一个对称加密算法生成一个对话密钥,加密接下来的通信内容。

后记

文中阐述不妥之处还望雅正,不吝感激。

转载请注明出处。

以上。

转载于:https://www.cnblogs.com/jztan/p/8159086.html

SSL协议之数据加密过程详解相关推荐

  1. 区块链100讲:SSL协议之数据加密过程详解

    2019独角兽企业重金招聘Python工程师标准>>> 本讲详细讲述了SSL协议中的数据加密的过程,数字证书.对称加密.非对称加密和SSL握手过程等概念. 1 SSL 只要你听过HT ...

  2. ZAB协议选主过程详解

    说明 ZAB 协议是为分布式协调服务ZooKeeper专门设计的一种支持崩溃恢复的一致性协议.基于该协议,ZooKeeper 实现了一种主从模式的系统架构来保持集群中各个副本之间的数据一致性. ZAB ...

  3. windows smb更改端口_SMB协议(使用说明+过程详解+抓包分析)

    一.SMB概述 SMB(ServerMessage Block)通信协议是微软(Microsoft)和英特尔(Intel)在1987年制定的协议,主要是作为Microsoft网络的通讯协议.SMB 是 ...

  4. (转)理论经典:TCP协议的3次握手与4次挥手过程详解

    摘要: 本文将分别讲解经典的TCP协议建立连接(所谓的"3次握手")和断开连接(所谓的"4次挥手")的过程. 1.前言 尽管TCP和UDP都使用相同的网络层(I ...

  5. 理论经典:TCP协议的3次握手与4次挥手过程详解

    理论经典:TCP协议的3次握手与4次挥手过程详解 https://blog.csdn.net/omnispace/article/details/52701752 转载于:https://www.cn ...

  6. 简述tcp协议三报文握手过程_TCP协议的3次握手与4次挥手过程详解

    前言 尽管TCP和UDP都使用相同的网络层(IP),TCP却向应用层提供与UDP完全不同的服务.TCP提供一种面向连接的.可靠的字节流服务. 面向连接意味着两个使用TCP的应用(通常是一个客户和一个服 ...

  7. 八大典型APT攻击过程详解

    八大典型APT攻击过程详解 2013-08-27 17:55 启明星辰 yepeng 51CTO.com 字号:T | T APT攻击是近几年来出现的一种高级攻击,具有难检测.持续时间长和攻击目标明确 ...

  8. HTTPS加密过程详解

    HTTPS加密过程详解 一.前言 二.HTTPS的混合加密 1.摘要算法 2.混合加密和数字证书 三.补充 四.参考资料 一.前言 http是为了解决http存在的问题而在http基础上加入了SSL/ ...

  9. HTTPS 加密过程详解

    HTTPS 加密过程详解 HTTPS 中的概念 对比 HTTP 与 HTTPS 网络分层结构 对称加密 非对称加密 HTTPS 中的概念 明文:可以直接看到原始数据的文本: 密文:看不见原始数据的文本 ...

  10. Linux下Nginx编译安装过程详解

    Linux下Nginx编译安装过程详解 一.Nginx介绍 二.Nginx源码下载 1.打开Nginx官网 2.下载官网的源码包 三.Nginx源码安装 1.解压源码包 2.安装开发包组及环境 3.编 ...

最新文章

  1. 作用域安全的构造函数
  2. deep$wide keras
  3. CVPR 2021 involution:超越convolution和self-attention的神经网络新算子
  4. SSH服务的渗透测试
  5. 位置环PID模糊C语言,PID和位置环
  6. mongoose换成mysql_Package - tms-koa
  7. MySQL5.6从库修改主机名同步停止的解决办法
  8. IntelliJ IDEA打jar时,MANIFEST.MF内容出错
  9. python字符串取消转义_python取消转义,除了r还有什么?可以调用函数取消转义吗?...
  10. WindowsX64下tftp的安装
  11. TLSR8232-Telink蓝牙SoC之03程序下载和运行调试
  12. SYN 包在什么场景下会被丢弃?
  13. 重磅!程序员工资不会上涨的几个现象
  14. archlinux触摸板设置
  15. 通过Wachete实时监控网站更新
  16. 深圳学区房还值得购买吗
  17. 计算机用户被禁用,administrator账户被停用怎么办【图文教程】
  18. CAN控制器SJA1000波特率计算方法
  19. 一看就懂的 安装完ubuntu 18.04后要做的事情和使用教程
  20. 服务器显卡芯片,Intel服务器独立显卡单卡四芯原来如此

热门文章

  1. c语言中指,C语言程序设计中指教学要点分析.doc
  2. C++循环控制经典例题*
  3. Xshell配合Screen之ssh会话永不断开
  4. Caffe各版本与源码全透析
  5. Caffe学习-手写数字识别
  6. 【目标检测大集合】R-FCN、SSD、YOLO2、faster-rcnn和labelImg实验笔记
  7. 如何利用Caffe训练ImageNet分类网络
  8. sklearn2pmml模型转化实践
  9. Markdown编辑器初步使用
  10. 用mysql求同类型用户重合度_匹配csdn用户数据库与官方用户的重合度并将重叠部分的用户筛选出来_PHP教程...