admin管理员组

文章数量:1603247

目录

  • HTTPS概念准备
  • 加密是什么
  • 常见的加密方式
  • 数字指纹和数据摘要
  • HTTPS 的⼯作过程探究
    • CA证书
    • 申请流程
    • 证书的形成与验证
  • 总结

HTTPS概念准备

HTTPS是什么?HTTPS也是一个应用层协议,是在HTTP协议的基础上引入了一个加密层(SSL/TLS层)

HTTPS协议内容都是按照文本的方式明文传输的,这就导致在传输过程中出现一些被篡改的情况。如果中间人也有网络协议栈,用户数据自底向上交付,就能在应用层拿到用户数据。那怎么办呢?安全设计者设计了一层SSL。

给大家阐明一点:即使使用HTTPS也不一定是安全的。尽管是SSL在权威的官方的加密和解密方案,也一定会有漏洞,因为算力会越来越强,树大招风,使用的人多了,就会有人去攻破它,过一段时间就会出现问题,所以就会有不同的版本。
一般我们认为,攻破成本 大于 攻破后的收益,我们则认为这算是安全的

加密是什么

加密就是把 明⽂ (要传输的信息)进⾏⼀系列变换, ⽣成 密⽂.
解密就是把 密⽂ 再进⾏⼀系列变换, 还原成 明⽂
在这个加密和解密的过程中, 往往需要⼀个或者多个中间的数据, 辅助进⾏这个过程, 这样的数据称为 密钥

83 版 <<⽕烧圆明园>> , 有⼈要谋反⼲掉慈禧太后. 恭亲王奕䜣给慈禧递的折⼦. 折⼦内容只是扯⼀扯家常, 套上⼀张挖了洞的纸就能看到真实要表达的意思

密⽂: 奏折全⽂


密钥: 挖了洞的纸
明⽂: “当⼼肃顺, 端华, 戴恒” (这⼏个⼈都是当时的权⾂, 后来被慈禧⼀锅端).

简单模拟一下加密解密的过程

加密解密如今已经发展成为一个独立的学科了:密码学
而密码学的奠基人,也正是计算机科学的祖师爷之一,艾伦·麦席森·图灵(Alan Mathison Turing)

这是一个悲伤的故事,图灵大佬年少有为,不光奠定了计算机,人工智能,密码学的基础,并且在二战中大破德军的Enigma机,是盟军站尽情报优势,才能扭转战局反败为胜,但是因为一些原因,图灵大佬遭到英国皇室的迫害,41岁就英年早逝了。
计算机领域中的最高荣誉就是以他的名字命名的“图灵奖”。

为什么要加密呢?

很多年前,有一个事件叫做运营商劫持
你点击天天动听下载,会自动下载QQ浏览器。


这是怎么做到的呢?
我们所有人要入网就必须有运营商提供接口,由于我们通过网络传输的任何的数据包都会经过运营商的网络设备(路由器,交换机等),以前使用的都是http协议没有加密,那么运营商的网络设备就可以解析出你传输的数据内容,并进行篡改

点击“下载按钮”,其实就是在给服务器发送一个HTTP请求,获取到的HTTP响应其实就包含了该APP的下载链接。运营商劫持之后,就发现这个请求是要下载天天动听,那么就自动的把交给用户的响应篡改成“QQ浏览器”的下载地址了
http的内容是明文传输的,明文数据会经过路由器、wifi热点、通信服务运营商、代理服务器等多个物理节点,如果信息在传输过程中被劫持,劫持者可以篡改传输的信息且不被双方察觉,这也叫做中间人攻击。
现在是没有这种事情发生了。为什么以前有这种事呢?因为运营商和大公司达成了某种协议。

其实不仅仅运营商可以劫持,其他的黑客也可以用类似的手段进行劫持,来窃取用户隐私信息或篡改内容
你在局域网环境里,你连上局域网中的路由器,你访问一定会经过路由器,再到运营商,再到服务器。这里存在的问题是,如果你的数据是明文传送,那这个路由器也能拿到你的数据请求

比如说如果你连接学校的校园网(局域网),学校也有路由器(代理服务器),你的请求实际上是交给学校内部的设备,理论上如果你是明文传送,也能被学校侦测到。你在一家商场,有些网络就是钓鱼网络,可以连免费wifi,可以直接连上,你以为你占了便宜,你的所有请求都会经过别人的设备,别人就可以对你的报文进行侦测和监听。如果你宝这笔记本到教室,但教室里没有网络,你就会拿着你手机的热点,电脑上网时,你的网络流量都会经过手机。所以你的手机也会拿到你的数据。诸如此类,很多设备都可以拿到我们主机访问的数据。而这些设备都可能成为中间人。
所以在互联网上,明文传输是比较危险的事情!!

常见的加密方式

HTTPS就是在HTTP的基础上进行了加密,进一步的来保证用户的信息安全
常见的加密方式分为两种:
1.对称加密
2.非对称加密

什么是对称加密?
对称加密只采用一个密钥,即加密和解密的密钥是相同的。比如我们上面模拟过的异或加密方式就是一个简单的对称加密
特点:算法公开、计算量小、加密速度快、加密效率高

什么是非对称加密?
用两个密钥来进行加密和解密。
特点:运行速度非常慢
既可以用A加密,B解密。也可以用B加密,A解密

一方可以公开,叫做公钥。则另一方不能公开叫私钥。
为什么这样做呢?因为有应用场景
1.用公钥加密,私钥解密。当你用公钥加密一个数据交给另一个人的时候,在这个世界上只有拥有私钥的人才能解密。
2.用私钥加密,公钥解密。你私钥加密的东西,只能用公钥解密一次,别人不可能加密上了。如果有人提前解开了,数据到达你手上的时候就发现这个已经提前被解开了,直接丢弃这个数据

非对称加密的数学原理比较复杂,设计到一些数论相关的知识。主要基于RSA算法。有兴趣的可以自行去了解一下。

数字指纹和数据摘要

数字指纹和数据摘要是什么?

同样的hash算法,哪怕只有一个标点符号不同,形成的固定长度的字符串也天差万别。如之前讲的session id就是这样形成的。
数字指纹(数据摘要),其最基本原理是利用单向散列函数(Hash函数)对信息进行运输,生成运算,生成一串固定长度的数字摘要。数字指纹并不是一种加密机制,但可以用来判断数据有没有被篡改过。
摘要常见的算法:有MD5、SHA1、SHA256、SHA512等,算法把无限的数据映射成有限数据,因此可能会有碰撞(两个不同的信息,算出的摘要相同,但是概率非常低)

你要传一部电影,你同学也要存你这部相同的电影,其他人也传了这部电影,则一份电影就有很多人存,一份电影占了几百上千G的内存。
百度就有对应的秒传功能。

怎么实现的呢?

HTTPS 的工作过程探究

我们自己逐步设计安全的方案,发现问题,解决问题

只使用对称加密

这样似乎很安全,这样设计有一个前提就是客户端内置了密钥,密钥是不会变化的,如果变了服务器怎么办。那有人说客户端内置就内置吧,如果密钥泄露了,因为是内置的,要改密钥,就必须都要改源代码,改了源代码,服务器就要重启,客户端要让用户重新下载。
将密钥内置到客户端是很不合理的。⽐较理想的做法, 就是能在客⼾端和服务器建⽴连接的时候, 双⽅协商确定这次的密钥是啥。因为密钥必须是变化的,因为是变化的,我则要知道你这次使用的密钥是什么

方案一:只使用对称加密

这样会存在一个问题

向服务器请求的密钥报文会被黑客拦截

方案二:只使用非对称加密

只能保证客户端到服务器的安全,没有保证服务器到客户端的安全

方案三:双方都是用非对称加密

这样貌似没有问题。但是效率太低。

方案四:非对称加密+对称加密

这个方案很完美,不仅仅通信效率不低,黑客还无法解密(真的吗?)

其实上面方案二,三,四依旧有安全问题
上面的黑客技术没学到家,只会截获数据。如果黑客自己也生成密钥并发送假数据给你呢?

上面问题的本质是什么呢?客户端无法验证服务器发来的公钥是否是合法的!!!

如何保证公钥的合法性??

CA证书

我们平常在访问某一网站的时候有可能碰到这种情况

每个国家都有相应的部门,各个地方当地有响应的信息安全部门,承接了CA机构的身份,如果有申请者有不懂申请流程的话,也会有相应的人,你交手续费给我相关资料,他来帮你办。
对信息进行审核的时候大部分都是直接批了,有些时候也会对某些大公司进行走访,审核公司信息。
公司的老板,你的公司需要使用https,项目负责人就必须向CA机构申请一份数字证书,数字证书里含有申请者信息、公钥信息等。浏览器向服务器密钥请求的时候,服务器把证书传输给浏览器,浏览器从证书里获取公钥就行了,证书就如身份证,证明服务器公钥的权威性。

申请流程

公钥会随着CSR⽂件,⼀起发给CA进⾏权威认证,私钥服务端⾃⼰保留,⽤来后续进⾏通信(其
实主要就是⽤来交换对称秘钥)
CSR文件在线生成

证书的形成与验证

证书是怎么形成的呢?
证书的形成都是在CA内部完成的。明文信息数据进行哈希(MD5)摘要,数据摘要加密就形成了签名。将签名和明文信息数据组合就形成了证书

客户端如何进行证书验证的?
如果将证书中的签名用CA的公钥进行解密后形成的数据摘要,和证书中的明文经过哈希形成的数据摘要相等,此证书就是有效的

客户端会内置很多CA的公钥

方案五:⾮对称加密 + 对称加密 + 证书认证

黑客还能不能像之前一样修改呢?假如黑客截获了服务器的证书
1.只对明文信息进行修改。客户端进行证书验证的时候,就会发现两个数据摘要不相等
2.只对签名进行修改。没意义。
3.对明文信息的公钥和签名进行修改。黑客修改了明文信息中的公钥,自己用明文信息生成签名。客户端进行证书验证的时候,只会用CA的公钥对明文信息进行解密。而黑客生成签名时是没有CA的私钥的,不是用CA的私钥加密的。客户端无法对该签名解密,所以也会验证失败
4.黑客申请真的证书来调包。虽然不会出现像上面这种验证失败了,但会有这样一个现象,客户端明明申请的服务器域名是www.baidu,返回来的证书里的明文却是www.heike,这也很容易被客户端查出来

有一种情况是防不了的,就是小白用户主动去访问假网站
现实中就有人这么做,申请一个和其他的网站相似的域名,网站的风格也相同。

这就是公安要做的事了,因为证书上曾经留有申请人的信息,从法律上可以溯源

查看浏览器的受信任证书发布机构


总结

HTTPS工作过程中涉及到的密钥有三组
第一组(非对称密钥):用于客户端校验证书是否被篡改。
第二组(非对称加密):为了让客户端把这个对称密钥传给服务器。
第三组(对称加密):客户端和服务器后续传输的数据都通过这个对称密钥加密解密。
其实一切的关键都是围绕这个对称加密的密钥.其他的机制都是辅助这个密钥工作的

本文标签: 原理协议HTTPS