Https是如何工作的?
Https这个名词在日常编程中已经是习以为常了,写代码的时候也会涉及到相关的概念,那么,为什么相关的代码要那样写,所以来讲下Https。
密码系统(Cipher)
众所周知,如果我们要加密解密一些信息,我们必须要有一个key,就相当于如果你想打开一扇门或者锁上一扇门,你必须要有一把钥匙。
在不同的编程语言中都有相应的生成key的库或者函数,可以生成对称加密的可以,也可以生成非对称加密的key。
对称加密的key
-- 加密跟解密用同一把钥匙非对称加密的key
-- 加密跟解密用的不是同一把钥匙,key通常分成公钥跟私钥。公钥可以被大范围的发布,然而私钥只有它的所有者才知道。
在一个非对称加密的方案中,当信息被公钥加密了以后,只有私钥才能够对信息进行解密,所以,如果一个黑客,截取了你的公钥和你加密过的信息,他不能够对信息进行解密,因为他没有该公钥对应的私钥,所以这条消息的传输是安全的。
证书(Certificate)
在现实生活中,如果你到珠宝店里面买珠宝,你如何来判别这个珠宝是不是真的呢?一个普通人通常是没有任何珠宝知识的,但是如果每件珠宝都有一个被政府下发的许可证,那么你就会相信这个珠宝是真的了。
证书(Certificate)的道理是一样的,在计算机世界里,证书通常会包括一些key和另外一个证书,暂且叫做证书B,其中的key是我所想要的,证书B就相当于一个许可证,来证明这个证书是可信的。
那么问题来了,我怎么知道证书B是可信的呢?这是一个好问题。
Android手机系统被内置了150多个根证书,这个150多个根证书是被全世界所信任的,就相当于是,他们是国家政府,你要相信你的政府。
证书B中会包含另外一个证书C,所以我们要去检查证书C是不是可信的,我们依照这个证书链一层层向上检查,如果我们发现最后一个证书或者根证书是这150个证书里面的一个,那么一开始的那个证书B就是可信的了。
??(举个栗子):
"x.509"
x.509
证书通常用来包含一个公钥。"PKCS12"
PKCS12
证书也可以包含一个私钥,因此PKCS12
证书需要一个密码来打开。
Https
最后,我们终于到了要谈谈https的时候了,因为https涵盖了上面所说的两点内容,所以,我要先在前面讲这两个部分。
https
(http over ssl) 是为了在网络上进行安全的通信而被设计的。
1.如何安全的通信?
如何在网络上安全的进行通信?密码系统(Cipher)是我首先能够想到的。我在本地对我的数据进行加密,然后把加密后的数据和key一起传输到服务器上,然后服务器就能用我传给服务器的key来揭秘我的数据。
现在让我们来看看一个可能的场景:黑客窃听了你的通信,也就是说,他们已经有了key和加密过后的数据,显而易见,黑客有了你的key,有了用这个key加密过的数据,很容易的就把你的数据解密了,你的数据就此泄漏。
2.非对称加密又如何呢?
我们上面第一点所说的就是对称加密, 就是加密跟解密用的是同一把?,显而易见这是很危险的,是不安全的,那么我们来看看非对称加密。
这是一个好主意,我们来讲讲实现原理,首先服务器给了你它的公钥,然后你用这个公钥对你的数据进行加密,因为只有服务器有这个公钥所对应的私钥,也就是说只有这个私钥能够解密你的数据,从而保证了只有服务器能够解密你的数据。
现在让我们来看看一个可能的场景:黑客窃听了你的通信,你的公钥跟公钥加密过的数据都被黑客得到了,但是由于黑客没有这个公钥所对应的私钥,所以就算他窃听了你的通信,获取了你的公钥跟数据,他还是无法知道这个被加密过的数据到底是什么。所以你的数据不会被泄漏。
所以是不是觉得大功告成了,so easy,但是,非对称加密所要花费的时间要远远超过对称加密的时间,从用户的角度来考虑,用非对称加密的方式来加密一段很长的内容时,这并不是一个很好的解决方案。
3.最终的解决方案
上面讲的两种方式到头来都是不可行的,那要是把上面的两种方式结合下呢?是的,这就是最终的解决方案。
这种方式主要分为下面几个步骤:
【服务器】服务器在服务器端生成一堆钥匙串,包含了一个公钥一个私钥。
【服务器】服务器通过网络把公钥传输到客户端。
【客户端】客户端在本地生成一个对称加密的key,然后用这个key加密我们的数据。
【客户端】客户端用服务器生成的公钥来对在本地生成的key进行加密,所以在传输的时候本地生成的这个key就安全了,因为只有服务器才能对这个key进行解密。
【客户端】客户端把加密过后的数据和用公钥加密过后的key传输到服务器。
【服务器】服务器用自己的私钥来解密在客户端生成的那个对称加密的key。
【服务器】服务器用解密过后的key来解密我们的数据。
上述过程计算被黑客劫持了,我们的数据也是安全的,黑客无法知道我们的数据具体是什么内容。
结论
通过上面讲的第三种方法进行数据的传输,既能保证加密数据的时间很短,用户体验良好,用能保证数据的安全性。
欢迎访问博客
Https是如何工作的?相关推荐
- https是如何工作的?
最近在看到这么一篇讲解Https原理的文章,语言精炼,通俗易懂,特地将其翻译下,原文在此how does https work 加密算法简介 正文开始之前,我先来解释简单的解释下对称加密和非对称加密. ...
- https协议 的工作过程
https协议 的工作过程 文章目录 https协议 的工作过程 一.用代码构造http请求 二.https ☆(这篇帖子的重点) 2.1 加密的概念 2.2 加密的工作流程 2.2.1 对称加密 ☆ ...
- SSL协议(HTTPS) 握手、工作流程详解(双向HTTPS流程)
SSL协议的工作流程: 服务器认证阶段:1)客户端向服务器发送一个开始信息"Hello"以便开始一个新的会话连接:2)服务器根据客户的信息确定是否需要生成新的主密钥,如需要则服务器 ...
- HTTP和HTTPS协议及工作原理分析
HTTP协议概念 HTTP协议(HyperText Transfer Protocol,超文本传输协议,属于应用层)是用于从服务器传输超内容到本地浏览器的传送协议.是一个无状态的协议 想了解http, ...
- HTTPS是如何工作的
译者:@Edgar 译文链接:http://www.zcfy.cc/article/how-does-https-work-1280.html 原文链接:http://www.songzhw.com/ ...
- HTTPS协议及其工作原理
一.什么是HTTPS HTTP 协议(HyperText Transfer Protocol,超文本传输协议)是客户端浏览器或其他程序与Web服务器之间的应用层通信协议 .HTTP协议传输的数据都是未 ...
- HTTPS代理的工作原理
HTTPS代理实际上是HTTP代理的加强版,这里的字母"S"代表支持SSL连接的"安全".当用户想要发送敏感信息,比如用户名和密码时,可以使用这类代理,它的标准 ...
- 【基础协议】HTTP/HTTPS协议及其工作流程
目录 1 HTTP协议与HTTPS协议 1.1 HTTP协议概述 1.2 HTTPS协议概述 1.3 HTTPS与HHTP区别 2 URI和URL相关知识 2.1 URI统一资源标识符 2.2 URL ...
- [信息安全] 3.HTTPS工作流程
0. 简单回顾 在前面两篇博客中介绍了密码相关的一些基本工具,包括(对称密码,公钥密码,密码散列函数,混合密码系统,消息认证码码,数字签名,伪随机数,数字证书)这几个.其中它们之间也是互相依赖的,我们 ...
最新文章
- typecho本地上传头像_微信QQ抖音透明头像制作方法,还有不会的吗?
- Team Foundation Server安装指南(转)
- 【原】让H5页面适配移动设备全家 - 设计师篇 - PPT
- java swing 例子(一些)
- Linux学习 LVM ***
- 网页爬虫中文乱码问题Python
- ionic更改端口号
- JVM 类型的生命周期学习
- python中的class类使用方法[探索3]
- C#可视化编程技术总结:制作可视化窗体软件
- 各种版本操作系统的虚拟机镜像文件
- D3实现的ChinaMap
- 用CSS3制作50个超棒动画效果教程
- 《如何让你爱的人爱上你》第一部分:第一印象
- wps excel 插入公式 整列
- 字节跳动员工晒出税后工资,网友:怀疑你是日薪
- 免费学术资源(转自施一公博客)
- python设置Excel单元格的数据有效性
- 科技云报道:科技巨头们为什么要“跨界造芯”?
- R语言极值理论 EVT、POT超阈值、GARCH 模型分析股票指数VaR、条件CVaR:多元化投资组合预测风险测度分析