2019独角兽企业重金招聘Python工程师标准>>>

本讲详细讲述了SSL协议中的数据加密的过程,数字证书、对称加密、非对称加密和SSL握手过程等概念。

1

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**;

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

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

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

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

2

数字证书

数字证书就是互联网通讯中标志通讯各方身份信息的一串数字,提供了一种在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就玩的很巧妙了,通信双方通过对称加密来加密密文,然后使用非对称加密的方式来传递对称加密所使用的密钥。这样效率和安全就都能保证了。

3

SSL协议的握手过程

先用语言来阐述下:

第一步:爱丽丝给出支持SSL协议版本号,一个客户端随机数(Client random,请注意这是第一个随机数),客户端支持的加密方法等信息;

第二步:鲍勃收到信息后,确认双方使用的加密方法,并返回数字证书,一个服务器生成的随机数(Server random,注意这是第二个随机数)等信息;

第三步:爱丽丝确认数字证书的有效性,然后生成一个新的随机数(Premaster secret),然后使用数字证书中的公钥,加密这个随机数,发给鲍勃。

第四步:鲍勃使用自己的私钥,获取爱丽丝发来的随机数(即Premaster secret);(第三、四步就是非对称加密的过程了)

第五步:爱丽丝和鲍勃通过约定的加密方法(通常是AES算法),使用前面三个随机数,生成对话密钥,用来加密接下来的通信内容;

俗话说一图胜千言,我画了一个图来说明这个过程:

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

  • CA机构颁发数字证书给鲍勃;

  • 爱丽丝和鲍勃进行SSL握手,爱丽丝通过数字证书确定鲍勃的身份;

  • 爱丽丝和鲍勃传递三个随机数,第三个随机数通过非对称加密算法进行传递;

  • 爱丽丝和鲍勃通过一个对称加密算法生成一个对话密钥,加密接下来的通信内容。

内容来源:知乎

原文作者:Damonare

原文链接:http://t.cn/RHuMxI7

Blockathon|48小时极客竞赛,区块链马拉松等你挑战(成都)

时间:2018年9月14-16日

地点:成都高新区天府五街200号菁蓉国际广场2号楼A座12楼中韩互联网+新技术孵化器

  • 招募50名开发者(识别下图二维码或点击“阅读原文”即可报名)

  • 报名费100元为参赛押金,参赛者个人原因不能到场参加活动概不退款;参赛者全程参与活动,待活动结束后现场退还。9月14日18:00开始第一次签到,9月15日和16日每天早上都要记得签到哦。

  • 主办方免费提供2天的食物、饮料,并为每一位参会者准备一件文化衫

转载于:https://my.oschina.net/u/3782027/blog/1939687

区块链100讲:SSL协议之数据加密过程详解相关推荐

  1. 区块链100讲:带你走进EOS的存储系统

    2019独角兽企业重金招聘Python工程师标准>>> 1 海量数据 在一个完全去中心化的区块链系统中,每个节点如果想验证某一笔交易是否正确,则必须下载完整的区块链数据,随着时间的推 ...

  2. 区块链100讲:梅克尔树保障区块链数据不可篡改,想换根就要砍树!

    2019独角兽企业重金招聘Python工程师标准>>> 区块链100讲上期我们讲了哈希算法和公开密钥算法,说到哈希算法提到了一个名词"Merkle tree",梅 ...

  3. 区块链100讲:V神·以太坊上的分片

    五月初,以太坊创始人"V神"Vitalik Buterin表示,以太坊的内部扩展解决方案--分片已经接近完成.以太坊分片旨在将以太坊分成几个并发网络,从而使整个网络更加高效地扩展, ...

  4. 区块链100讲:据说,80%的人都搞不懂哈希算法

    2019独角兽企业重金招聘Python工程师标准>>> 前面的<区块链100讲>介绍了区块链.算力.挖矿等,几乎每一讲都会提到一个词哈希(Hashing).聊到区块链的时 ...

  5. 区块链100讲:不做码农做矿工,该怎么和爹妈解释

    说起区块链和比特币的时候都会提到一个词"挖矿",还有个角色叫"矿工",等等,区块链不是属于技术圈吗?怎么和挖矿扯上关系了?只听说过管IT圈儿的人叫码农,怎么还有 ...

  6. 区块链100讲:Truffle——一个更简单的部署智能合约的方法

    本期<区块链100讲>我们将介绍一个更简单的部署智能合约的方法:Truffle. 1 什么是Truffle ? Truffle是针对基于以太坊的Solidity语言的一套开发框架.本身基于 ...

  7. 区块链100讲:能够证明你是你的数字签名和多重签名

    随着区块链相关技术的创新和突破,很多有形或无形资产都将实现去中心化,数字资产将无处不在.要保护数字出版物版权,实现去中心化,解决业界多年来版权保护不力的难题.无论数字资产,还是数字出版版权,都是有明确 ...

  8. 区块链100讲:从村里的账本来看什么是区块链

    2019独角兽企业重金招聘Python工程师标准>>> 很久以前就有个想法,把区块链的技术和概念整理成一个体系化的知识图谱,方便大家查阅和学习,大话已说出去很久,却一直没有践行(pa ...

  9. 区块链100讲:智能合约审计指南

    智能合约代码的审计,目前还不是技术社区内经常会讨论的主题.今年3月6日,发表在博客网站[Schneier on Security]上的一篇博客(原文链接:[https://www.schneier.c ...

最新文章

  1. JS代码的window.location属性详解
  2. 请问一个表的update能同时触发两个触发器吗?
  3. 解决sublime text无法安装插件问题
  4. Oracle约束的关键字Enable/Disable/Validate/Novalidate
  5. python的盈利模式_八大盈利模式是什么?一篇文教会你盈利模式分析!
  6. 工作277:v-model实战
  7. zblog广告小小插件 - ZblogPHP插件
  8. ospf lesson 3
  9. vscode括号颜色插件_[VSCode插件推荐] Bracket Pair Colorizer: 为代码中的括号添上一抹亮色...
  10. 这款国产神器,我爱了
  11. 大厂首选,为什么 SRE 比传统运维更抢手?
  12. Atitit 项目的主体设计与结构文档 v3
  13. pcs7服务器一直显示在同步,【征文】PCS7 诡异的时间同步问题
  14. php智能电视如何安装直播软件,海信 LED 55EC520UA 怎么安装第三方软件看直播?教你安装方法...
  15. android 一键新机,改机概述 xposed 改机缺点
  16. 【Java 8 新特性】Java Map compute() 示例 | 指定 key 的值进行计算后替换
  17. eclipse 中用svn共享项目
  18. xlsx如何查找替换_Excel中如何使用通配符查找和替换
  19. 【Day5.3】鸣沙山月牙泉看日落
  20. 计算机内部数据的传输 进制,计算机内部数据加工处理和传送的形式是什么

热门文章

  1. 为什么数据库字段要使用NOT NULL?
  2. 【BZOJ 1015】 [JSOI2008]星球大战starwar
  3. SQL instr函数
  4. .NET对JAVA进行AES加密(SHA1PRNG)及解密方法
  5. ELK入门——ELK详细介绍(ELK概念和特点、Elasticsearch/Logstash/beats/kibana安装及使用介绍、插件介绍)
  6. Wine微信输入框不显示文字
  7. Command Injection命令注入攻击
  8. 自定义Mono,实现Unity Android平台代码更新
  9. 长安CS75PLUS安装第三方软件-长安CS75PLUS车机破解-长安CS75PLUS车机升级
  10. Adversarial PoseNet