HTTPS 学习
问题
- 数字签名的作用是什么?
- 为什么 HTTPS 是安全的
- CA存在的动机是什么
- 客户端的公钥的都是一致的吗?
概述
这一节我们将要讲HTTPS,为什么说HTTPS是安全的,而HTTP是不安全的呢,这其中的原理是如何保护数据安全的。
场景一
假如服务端和客户端使用的是对称加密我们来看一下会出现什么情况?
这样子有个问题黑客E利用假装是正常用户与服务端通信,获取到密钥,然后在中途截取到其他客户端和服务端的通信(例如 A 和 B 之间的通信)那么就可能获取到他们之间的信息。 所以这种模式是不安全的。要是有一种方式可以让客户端和服务端之间的通信密钥是他们自身独有就好了,这样即使黑客拿到消息后也无法解析出来。
场景二
假如服务端和客户端使用的是非对称加密的方式,假设如今客户端已经安全地获取到了服务端的公钥,客户端用公钥加密消息给服务端,黑客E 拿到消息后发现自己没有私钥于是没办法解开消息,这是没问题的。服务端收到消息后,用私钥加密消息,发给客户端,当中途给黑客E 截取了,由于服务端的公钥的公开的,黑客E 同样可以利用公钥解开服务端给客户端的消息。
场景三
我们暂时不考虑消息传输过程是否安全,假设是安全的,我们先考虑消息的完整性,即传输过程中是否给人修改过。 这就是数字证书和数据摘要的运用了。
先说数字证书
hash对于学java的应该比较熟悉,这东西可以用来作用唯一标识。一旦内容改变了一点hash值就会不同。
然后经过私钥加密生成数字摘要,然后附在内容底下发给客户端。
当客户端收到消息解密后再对消息进行hash,对比发来的消息的hash值是否一致,不一致说明消息被人修改了。
场景四
假如服务端发送给客户端过程中公钥G给人篡改了呢?黑客E拿到公钥G后,生成一个私钥PRH和公钥PUG,发了个假的公钥给客户端,然后客户端利用这个假公钥发送消息给黑客E(又被截取了),此时黑客E可以利用手头的PRH 就可以解开又 PUG 加密的消息,然后在利用G加密消息发送给服务端。这样黑客E就充当两者之间的窃听者,可以窃取和修改两者之间的消息。所以公钥能否安全地送到客户端手上成了关键,于是就引入了第三方
就像我们平时,要证明一个人的身份,派出所成了最好的证明场所,前提是那个人要提前在派出所有记录,HTTPS 也是同样的道理,于是有了CA机构。
HTTPS
为了使公钥可以安全地发送到客户端的手上,HTTPS引入了第三方验证机构,在最初的时候服务端首先会把自己的公钥发给CA , CA用自己的私钥对服务端的公钥还有其他信息进行加密,然后生成数字证书,发送给服务端。
然后证明发给客户端,客户端如果是使用浏览器,浏览器本身会配置信任的CA机构,浏览器首先会去CA机构拿到CA的公钥,然后利用CA的公钥解开经过CA加密的服务端公钥,当然这个地方还有验证一下信息,包括证书是否过期等等。当确定该证书确实来自于服务端,且没被修改过后。
客户端生成一个用于对称加密的密钥,并用服务端给的公钥进行加密,发送给服务端,服务端收到该秘钥就利用该秘钥加密信息发给客户端,之后它们的消息都是通过该秘钥进行互相发送消息。
补充
非对称加密通俗解释
用不同的钥匙加密解密,公钥可以公开,私钥需要不能公开,需要安全保存
RSA 公钥和私钥的特性
- 私钥公钥成对出现
- 私钥公钥都可以进行加密和解密
- 用公钥加密的数据只能用对应的私钥解密,而用私钥加密的数据只能用对应的公钥才可以解密。
公钥和私钥都可以用来加密和解密,但是用途不同 :
- 私钥用于签名,公钥用于验证签名,对应着数字签名
- 公钥用于加密,私钥用于加密
数字签名
保证信息没有被人篡改。简单来说,签名主要包含两个过程:摘要和非对称加密,首先对需要签名的数据做摘要(类似于常见的 MD5)后得到摘要结果,然后通过签名者的私钥对摘要结果进行非对称加密即可得到签名结果。
CA是什么,为了解决什么问题
解决公钥分发问题的一个独立的权威的第三方机构。为了验证收到的公钥是否是真实有效的。
总结
由此可以知道HTTP开始是使用了非对称加密,当公钥被安全地送到客户端手上的时候,客户端发送对称加密的秘钥,两者之间开始对称加密。
参考资料
- https://www.jianshu.com/p/80aa37311151 (推荐阅读)
- https://www.cnblogs.com/007sx/p/10987906.html(推荐阅读)
- https://blog.51cto.com/11883699/2160032(推荐阅读,原理加实战)
- https://www.zhihu.com/question/37935203
- https://zhuanlan.zhihu.com/p/22142170
HTTPS 学习的更多相关文章
- HTTPS学习总结
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 21.0px Verdana; color: #393939 } span.s1 { } HTTPS学习总结 ...
- https学习笔记三----OpenSSL生成root CA及签发证书
在https学习笔记二,已经弄清了数字证书的概念,组成和在https连接过程中,客户端是如何验证服务器端的证书的.这一章,主要介绍下如何使用openssl库来创建key file,以及生成root C ...
- https学习笔记二----基础密码学知识和python pycrypto库的介绍使用
在更详细的学习HTTPS之前,我也觉得很有必要学习下HTTPS经常用到的加密编码技术的背景知识.密码学是对报文进行编解码的机制和技巧.可以用来加密数据,比如数据加密常用的AES/ECB/PKCS5Pa ...
- HTTPS学习笔记一----HTTPS的基础理论知识
首先推荐一本书,<HTTP权威指南>我就是看这本书入门的,对http协议有了更好的理解,学习https的理论知识我认为需要了解以下几点,需要一步步的深入学习: 1.HTTPS的基本概念? ...
- https 学习笔记
参考 : http://www.cnblogs.com/JimmyZhang/archive/2008/10/02/Cryptograph.html https://blog.csdn.net/Jog ...
- HTTPS学习(二):原理与实践
div.example { background-color: rgba(229, 236, 243, 1); color: rgba(0, 0, 0, 1); padding: 0.5em; mar ...
- HTTPS学习(一):准备知识
div.example { background-color: rgba(229, 236, 243, 1); color: rgba(0, 0, 0, 1); padding: 0.5em; mar ...
- HTTP/HTTPS 学习笔记
超文本传输协议(HyperText Transfer Protocol) 伴随着计算机网络和浏览器的诞生,HTTP1.0也随之而来,处于计算机网络中的应用层,HTTP是建立在TCP协议之上的. HTT ...
- https 学习总结
最近看了点https 做下总结 面的博客如果没有错误的话,理解起来绝对是醍醐灌顶!让人信服,如果我的理解有问题,请及时指正! 参考博客: http://www.ruanyifeng.com/b ...
- 《图解http协议》之HTTPs学习笔记
对于IP协议,并不陌生.TP协议是TCP/IP协议簇中的核心协议,也是TCP/IP的载体.所有的TCP,UDP,ICMP及IGMP数据都以IP数据报格式传输.IP提供不可靠的,无连接的数据传送服务.I ...
随机推荐
- python HTMLparser
1.概述 如果我们要编写一个搜索引擎,第一步是用爬虫把目标网站的页面抓下来, 第二步就是解析该HTML页面,看看里面的内容到底是新闻.图片还是视频. 假设第一步已经完成了,第二步应该如何解析HTML呢 ...
- 【转载】各种SQL在PIG中实现
转自:http://guoyunsky.iteye.com/blog/1317084 我这里以Mysql 5.1.x为例,Pig的版本是0.8 同时我将数据放在了两个文件,存放在/tmp/data_f ...
- CentOS7.5下基于FTP服务的局域网yum源搭建
实验环境 yum源服务器和yum客户端都处于同一局域网之中 yum源服务器 hostname:zabbix OS版本:CentOS 7.5 IP:192.168.101.201 yum客户端 host ...
- C++-POJ1017-Packets
贪心算法,思路见代码 本来想搜索,结果有O(1)的算法,我佛了 其实每一种6x6的方案可以打表预处理,然后dp or search 但是既然可以贪心何乐而不为呢? #include <set&g ...
- [Linux] Ubuntu18.04 安装之后配置过程
前言 最终还是安装了Ubuntu 虽然一开始想用Deepin 但是死活安装不上,我也很绝望(引导一直找不到 恢复BIOS默认设置也还是不行 所以 有些绝望啊....) 所以 为了让以后的我不再那么 ...
- php 利用debug_backtrace方法跟踪代码调用
在开发过程中,例如要修改别人开发的代码或调试出问题的代码,需要对代码流程一步步去跟踪,找到出问题的地方进行修改.如果有一个方法可以获取到某段代码是被哪个方法调用,并能一直回溯到最开始调用的地方(包括调 ...
- 在电竞圈想摧枯拉朽的AI,到底能带来什么?
2019ChinaJoy,似乎并没有让这个暑期彻底燃动起来.在业界和玩家看来,2019ChinaJoy亮点匮乏.饱受诟病.不过细心观察的话,能够发现一个特殊现象--AI取代此前猎艳性质的cosplay ...
- PTPX-功耗分析总结
使用PrimeTime PX进行功耗分析有两种:一种是平均功耗的分析Averaged power analysis,一种是Time-based power analysis. 电路的功耗主要有两种 ...
- Vue-cli3 项目配置 Vue.config.js( 代替vue-cli2 build config)
Vue-cli3 搭建的项目 界面相对之前较为简洁 之前的build和config文件夹不见了,那么应该如何配置 如webpack等的配那 只需要在项目的根目录下新建 vue.config.js 文件 ...
- c# excel 读写 64位操作系统 64位excel
用c#读写excel时,会出现 “本机未注册Microsoft.ACE.OLEDB.12.0 驱动(什么的,忘了)” 读写 64位的excel 时,要在项目属性里改一下目标平台,默认的为*86, 改为 ...