最近二狗子宅在老家,最悠闲的就是泡壶茶看着院子的风景发呆一下午。今天,二狗子看到了对面自己暗恋的小翠花,看着美好的小翠花二狗子不禁想起了自己美好的初恋。

二狗子的初恋在初中,那个时候学校禁止带手机。上课交流靠三宝,脚踢屁股、笔戳后背和传纸条。最危险的就是传纸条,尤其是早恋,被老师抓到就是一首《凉凉》,然后叫家长,又是一首《爸爸妈妈的爱》。

二狗子很聪明,就跟初恋商量了一下,加密一下小纸条上面的内容,这样就算被班主任抓到也奈何不了。二狗子将英文字母和数字一一对应,组成一个密码本,这样小纸条上只写数字,收到后要将数字翻译成对应字母,再拼成拼音才能解密。

密码本成就了二狗子美好的初恋,后来二狗子长大了,成了一名程序员,他才发现,网络数据传输中的 HTTPS 其实也是类似的原理。

HTTPS的加密算法

聊 HTTPS 之前,我们先来看下 HTTP 协议,HTTP 协议(HyperText Transfer Protocol),即超文本传输协议,是客户端浏览器或其他程序与 Web 服务器之间的应用层通信协议 。

HTTPS,则是 HTTP over SSL,即 HTTP+SSL/TLS,可以理解为 HTTP 下加入 SSL 层,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL,用于安全的 HTTP 数据传输。

上文中提到的传小纸条,其实也算是一种加密算法,而在 HTTPS 中应用的加密算法主要有以下几种:

1、对称加密

有流式、分组两种,加密和解密都是使用的同一个密钥。

例如:DES、AES-GCM、ChaCha20-Poly1305 等

2、非对称加密

加密使用的密钥和解密使用的密钥是不相同的,分别称为:公钥、私钥,公钥和算法都是公开的,私钥是保密的。非对称加密算法性能较低,但是安全性超强,由于其加密特性,非对称加密算法能加密的数据长度也是有限的。

例如:RSA、DSA、ECDSA、 DH、ECDHE

3、哈希算法

将任意长度的信息转换为较短的固定长度的值,通常其长度要比信息小得多,且算法不可逆。

例如:MD5、SHA-1、SHA-2、SHA-256 等

4、数字签名

签名就是在信息的后面再加上一段内容(信息经过 hash 后的值),可以证明信息没有被修改过。hash 值一般都会加密后(也就是签名)再和信息一起发送,以保证这个hash值不被修改。

HTTPS 为什么安全

HTTP 请求过程中,客户端与服务器之间没有任何身份确认的过程,数据全部明文传输,“裸奔”在互联网上,所以很容易遭到黑客的攻击。

图中可以看到,客户端发出的请求很容易被黑客截获,如果此时黑客冒充服务器,则其可返回任意信息给客户端,而不被客户端察觉,所以我们经常会听到一词“劫持”。

上图是 HTTPS 握手流程,可以看到相比 HTTP,HTTPS 传输更加安全。

  • 所有信息都是加密传播,黑客无法窃听。

  • 具有校验机制,一旦被篡改,通信双方会立刻发现。

  • 配备身份证书,防止身份被冒充。

而 HTTPS 一整套的加解密和校验方案,主要从下面三个方面确保传输的安全。

1. 身份认证

传输之前首先通过数字证书来确认身份,各大 CA 厂商干的就是这个事情。这里涉及到一个名词:数字证书。数字证书分为公钥和私钥,CA 厂商会用自己的私钥来给证书申请者签发一套包含私钥和公钥的客户证书,客户的公钥证书谁都可以获取,里面包含了客户站点和证书的基本信息,用来确保访问者访问的就是他想要访问的站点。

这个证书不可以伪造吗?答案是真的不可以。

原因一:系统早已内置了各大 CA 厂商的公钥来校验证书是否是对应的站点的证书,如果不是,就会给出证书不匹配的提示,除非你给别人的设备强行植入假的 CA 公钥。

原因二:这个证书是 CA 厂商通过哈希并加密得到的,基本无法逆向破解并伪造一个新的,除非是你黑进 CA 获取了 CA 的私钥,那这家 CA 也基本可以倒闭了。

2. 数据保密

数据保密包括会话秘钥传输时候的保密和数据的加密传送。具体的加密方式就不再赘述了。

3. 数据完整

身份认证成功后,到了数据加密传输的阶段,所有数据都以明文(HTTP)收发,只不过收发的是加密后的明文。这时候也遇到了一个问题,虽然中间人很难破解加密后的数据,但是如果他对数据进行了篡改,那该怎么办?此时加密套件验证数据一致性的哈希算法就派上用场了,哈希算法有多种,比如 MD5 ,SHA1 或者 SHA2 等,上面举例的加密套件使用的是 SHA2 中的 SHA256 来对数据进行哈希计算。这样就使得任何的数据更改都会导致通信双方在校验时发现问题,进而发出警报并采取相应的措施。

如何将 HTTP 升级为 HTTPS?

部署 HTTPS 需要以下三个必要条件或步骤:

  • 申请 SSL 证书,你可以选择收费或者免费的的 SSL 证书,不同类型的 SSL 证书安全程度不尽相同。

  • 部署 SSL 证书,又拍云提供一键部署,平台全局自动化管理,采用了最优质的 HTTPS 加速解决方案,可帮助用户以最低的成本,享受最优的服务,完成网站 HTTP 到 HTTPS 的转换。

  • 将网站所有 HTTP 链接更换为 HTTPS。

又拍云是众多云厂商中唯一一家提供两款免费的 SSL 证书的云厂商,同时也提供各种付费证书的购买。最近全新上线了 GlobalSign SSL 证书,GlobalSign 成立于 1996 年,是一家声誉卓著,备受信赖的 CA 中心和 SSL 数字证书提供商,在全球总计颁发超过 2000 万张数字证书。偷偷的告诉你,最近 GlobalSign SSL 证书全新上线,有非常大的促销力度哦~

推荐阅读

凡人自保指南:武汉肺炎的个人防护、装备选择与使用建议

为什么 HTTPS 比 HTTP 安全

二狗子 、初恋及HTTPS的更多相关文章

  1. 夜空中最靓的二狗子是如何让 HTTPS 快上加快的?

    二狗子是某不知名网站的站长,他热衷于通过博客分享日常的一些工作.生活.技术等,立志要成为夜空中最靓的仔. 但是前段时间有几个用户反馈,网站总是莫名会跳转到一个 xx 网站,除此之外访问速度也有点慢.作 ...

  2. 受到 1 万点暴击,二狗子被 DDoS 攻击的惨痛经历

    二狗子的遭遇 “好消息,好消息,免费 DDoS 攻击软件上线了,性感黑客在线攻击,帮您攻克所有商业难题.”二狗子不知道在看着什么网站,新买的 Mac 中发出热闹的声音. 二狗子想知道“DDoS 是什么 ...

  3. 第一次亲密接触——二狗子初识 CDN

    二狗子是国内知名XXX大学的在校学生,作为一名编程爱好者,他利用业余时间搭建了一个网站,把平时的学习心得和技术分享全都 PO 在自己的网站上.渐渐地,二狗子的网站因为文章质量高,技术分享全面,受到了很 ...

  4. 【MySQL】记一次线上重大事故:二狗子竟然把线上数据库删了!!

    写在前面 估计二狗子这几天是大姨夫来了,心情很郁闷,情绪也很低落,工作的时候也有点心不在焉.让他发个版本,结果,一行命令下去把线上的数据库删了!你没听错:是删掉了线上的数据库!运营那边顿时炸了锅:怎么 ...

  5. 【Spring注解驱动开发】二狗子让我给他讲讲@EnableAspectJAutoProxy注解

    写在前面 最近,二狗子入职了新公司,新入职的那几天确实有点飘.不过慢慢的,他发现他身边的人各个身怀绝技啊,有Spring源码的贡献者,有Dubbo源码的贡献者,有MyBatis源码的贡献者,还有研究A ...

  6. iOS10 导航条,这个二狗子变了...踩坑

    1.iOS10导航透明要转换一个透明image UIImage *image = IsDeviceVersionIOS10 ? [WeUtils imageWithColor:[UIColor cle ...

  7. 超详细的编码实战,让你的springboot应用识别图片中的行人、汽车、狗子、喵星人(JavaCV+YOLO4)

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  8. 【摸鱼神器】UI库秒变低代码工具——表单篇(二)子控件

    上一篇介绍了表单控件,这一篇介绍一下表单里面的各种子控件的封装方式. 主要内容 需求分析 子控件的分类 子控件属性的分类 定义 interface. 定义子控件的的 props. 定义 json 文件 ...

  9. MPTCP 源码分析(二) 建立子路径

    简述      MPTCP在进行三次握手之后,客户端和服务端会进行地址信息的交换,让对方知道彼此未用的地址信息. 当客户端知道服务端的地址后就可以建立其他子路径.三次握手和建立子路径的过程如图1:   ...

随机推荐

  1. Java StringBuilder类

    StringBuilder的原理 String类 字符串是常量,它们的值在创建之后不能更改 字符串的底层是一个被final修饰的数组,不能改变 private final byte[] value; ...

  2. 三、Nginx原理解析

    Nginx原理解析 一.反向代理 工作流程 用户通过域名发出访问Web服务器的请求,该域名被DNS服务器解析为反向代理服务器的IP地址: 反向代理服务器接受用户的请求: 反向代理服务器在本地缓存中查找 ...

  3. mysql时间类型和格式转换

    内容目录 简介mysql时间类型DATE_FORMAT()函数 简介 今天开发中,做一个功能需要对历史数据进行补充,相信大家也遇到过这样的情况,这个历史数据需要按月份和人的id进行区分,于是想到了my ...

  4. 获取各类前几名数据的MYSQL写法

    前几天,某在培训的朋友问我一个问题:查询每门功课成绩最好的前两名该怎么写. 这个问题虽然听起来挺简单,但是很有意思,于是我就新建了一张如下的表: stuNo为学号,stuScore为分数,course ...

  5. if(a)是什么意思

    if(a)等价于 if(a!=0) if(!a)等价于 if(a==0)

  6. java面试| 线程面试题集合

    集合的面试题就不罗列了,基本上在深入理解集合系列已覆盖 「 深入浅出 」java集合Collection和Map 「 深入浅出 」集合List 「 深入浅出 」集合Set 这里搜罗网上常用线程面试题, ...

  7. openjudge 拯救公主

    点击打开题目 看到这道题,第一感觉是我有一句m2p不知当讲不当讲 传送门就算了,你提莫还来宝石,还不给我每种最多有几个~~ 在一般的迷宫问题里,无论已经走了多少步,只要到达同一个点,状态便是等价的,但 ...

  8. 用CSS实现横向滚动条

    在进行app制作时,需要使用横向滚动条是内容展示更完善 首先,这是html代码: 这是CSS代码: 要点: 设置显示内容的宽 white-space是防止内容自动折行 overflow-y设置为hid ...

  9. mysq5.7l的下载与配置

    ---恢复内容开始--- mysql是一个开源免费的数据库,它属于oracle公司 下载地址:www.oracle.com 页面移动到下面可以找到这几个选项 还是移动到下面 如果你要下载的不是那四样中 ...

  10. 从桌面到Web - 领域模型的创建

    天佑武汉,天佑中国.这次为全国人民作出巨大牺牲的武汉人是坚强和担当的. 这次疫情期间的自我隔离的一个副作用是第一次享受这个超长假期,本来想好好学习一下Web技术的,但家里的唯一一台计算机被占用,不得已 ...