首发于 必须深入理解的50个JAVA基础概念

HTTPS原理和通信流程

了解HTTPS之前你还需要了解:

加密、证书、签名的原理: zhuanlan.zhihu.com/p/50



Http协议的不足

  1. 不验证身份,导致身份可能被伪装。

HTTP是不会对请求的双方进行身份验证的,服务器不会校验客户端的身份,谁都可以向服务器发送请求,任何人都的请求都会进行响应; 客户端也不会验证响应的数据是否是由自己请求的目标服务器所发出。


2、明文通信,数据可能被窃取

HTTP的请求过程中是不会对通信内容进行加密的,在网络中一旦请求或响应的数据被窃取就会导致数据泄漏,造成数据安全问题。

3、无法验证报文的完整性,内容可能被篡改。

HTTP不会验证数据的前后一致性,一旦数据传输的过程中遭遇中间人的篡改,通信的双发是无法判断自己接收的数据是否和对方发送的数据一致性。


SSL/TSL协议的解决方案

SSL通常是指SLL和TSL,TSL是在SSL上进行了包装,本质上他们是一样的,通常HTTPS 是HTTP+SSL 或者HTTP+TSL;SSL主要针对HTTP存在的三个问题逐一实现了对应的解决方案。


通信加密(解决数据被窃取问题)

因为HTTP不对通信内容进行加密处理,所以衍生了SSL加密技术协议,SLL采用混合加密(同时使用非对称加密和对称加密)的方式建立起安全的HTTP通信,经过加密后的内容即使被窃听了,窃听的人也无法解密对应的数据。

对称加密、非对称加密、混合加密机制

对称加密是指加密和解密的密钥为同一个,用来加密数据的密钥同时也可以用来)它的特点是加密速度快,使用简单,因为加密解密只需要同一把钥匙就行了,他的破解难度是随着钥匙的大小增加而增加的,钥匙越大就越难破解,但是钥匙越大相应的据解密的时间也会越长;


对称加密存在的问题

(1)双方都必须事先约定好加密规则。

(2)密钥的数目难于管理。因为对于每一个合作者都需要使用不同的密钥,很难适应开放互联网中的大量的合作者交流。

(3)无法适用于陌生的网络的环境,双方都必须是可信任的才可进行。


运用对称加密有一个前提就是在发送信息前双方都必须知道加密的规则,但是在互联网的环境下我们每天可能跟不同人发送信息,很多人我们之前根本没认识过,这种情况下我们根本不可能事先就约定好加密规则,那么我们就只能通过信息把加密规则(密钥)发送给对方,然后我们再根据加密规则来加密聊天信息,很显然这肯定是不可取的,不经过加密的数据在网络传输是没有任何安全性可言的,于是就出现了非对称加密;


与对称加密不同,非对称加密的密钥是成对的(公钥和私钥)。私钥由自己安全保管不外泄,而公钥则可以发给网络中的任何人。非对称加密使用这对密钥中的一个进行加密,而解密则需要另一个密钥。根据公钥是无法推导出私钥的;

相比于对称加密,非对称加密有以下优势:

(1)比对称加密安全:加密和解密是不同的钥匙,非对称加密的私钥是由自己保管不会外泄的,除了自己没有任何人知道私钥,而对称加密只有一把密钥并且通信双方都要知道密钥,一旦密钥知道的人越多那么安全的风险就越大。

(2)更方便可扩展:公钥可以公布在网络中,任何人都可以拿着公钥和你进行通信,而对称加密密钥是不可能公布在网络中的,只能通过私下约定密钥规则。


非对称加密的问题

虽然非对称加密很安全,但是和对称加密比起来,它的解密速度非常慢;所以通常会用混合加密的方式进行通信,混合加密是用非对称加密的方式交换双方的对称加密秘钥交换对称加密秘钥之后双方再用 对称加密的方式进行通信。

数字证书(解决身份伪装问题)

HTTP不会对通信的双方进行进行身份的验证所以身份有可能被伪装造成安全问题,所以为了解决这个问题所以产生了数字证书,数字证书的使用流程大概如下:

1、服务器首先向一个大家都信任的第三方机构申请一个身份证书。

2、客户端向服务器建立通信之前首先向服务器请求获得服务器的证书。

3、服务器收到请求后把数字证书发送给客户端。

4、客户端获得服务器的证书之后,然后与可信任的第三方机构证书进行验证,验证通过后则进行正常的内容通信。

数字签名(解决数据篡改问题)

Http不会对数据的完整性进行验证,这样会造成就算通信的过程中数据被别人恶意篡改了

,通信的双方也没办法知道,所以就有了数字签名技术。

数字签名主要有两个作用,一是验证数据是否为意料中的对象所发出的,二是对数据的完整性进行验证,验证数据是否被篡改过:

1、对需要发送的数据进行摘要

对数据进行摘要主要目的是确认数据的完整性,发送方首先根据约定的哈希算法把数据进行哈希,得到一个哈希值,因为两个数据有任何一点不相同都会得出不同的哈希值,所以把对数据内容进行哈希得到哈希值作为数据的摘要发给对方;

然后对方收到数据后,首先自己也按照约定的哈希算法把接收到的数据内容进行哈希得到一个哈希值,然后把自己的哈希值与发送过来的摘要信息进行比对,根据哈希值是否一致来确认数据的完整性。

2、对摘要信息进行签名

对摘要进行签名的目的主要是对确认数据发送人的身份,签名技术是使用非对称加密的原理,

非对称加密是使用一个密钥对(一个公钥,一个私钥),公钥加密只能由私钥解密,私钥加密只能由公钥解密; 公钥是公布出来的密钥,私钥由自己安全保管不外泄,所以在私钥不泄漏情况下,我们通过私钥其实就可以确认发送数据方的身份。

那么我们想要对A发送过来的数据进行身份验证,那么我们只需要用A的公钥对数据进行解密即可(如果可以解密,那么就说明该数据是A用自己的私钥进行加密过的,而A的私钥又只有A自己拥有)


HTTPS通信流程

HTTPS通信主要包括几个节点,发起请求、验证身份、协商秘钥、加密会话,具体流程如下(此例子只有客户端对服务端的单向验证):

1、客户端向服务端发起建立HTTPS请求。

2、服务器向客户端发送数字证书。

3、客户端验证数字证书,证书验证通过后客户端生成会话密钥(双向验证则此处客户端也会向服务器发送证书)。

4、服务器生成会话密钥(双向验证此处服务端也会对客户端的证书验证)。

5、客户端与服务端开始进行加密会话。


整体情况如下图:

HTTPS通信流程

第一步:客户端向服务端发起请求

(1)客户端生成随机数R1 发送给服务端;

(2)告诉服务端自己支持哪些加密算法;

第二步:服务器向客户端发送数字证书

(1)服务端生成随机数R2;

(2)从客户端支持的加密算法中选择一种双方都支持的加密算法(此算法用于后面的会话密钥生成);

(3)服务端生成把证书、随机数R2、会话密钥生成算法,一同发给客户端;

第三步:客户端验证数字证书。

(1)验证证书的可靠性,先用CA的公钥解密被加密过后的证书,能解密则说明证书没有问题,然后通过证书里提供的摘要算法进行对数据进行摘要,然后通过自己生成的摘要与服务端发送的摘要比对。

(2)验证证书合法性,包括证书是否吊销、是否到期、域名是否匹配,通过后则进行后面的流程

(3)获得证书的公钥、会话密钥生成算法、随机数R2

(4)生成一个随机数R3。

(5)根据会话秘钥算法使用R1、R2、R3生成会话秘钥。

(6)用服务端证书的公钥加密随机数R3并发送给服务端。

第四步:服务器得到会话密钥

(1)服务器用私钥解密客户端发过来的随机数R3

(2)根据会话秘钥算法使用R1、R2、R3生成会话秘钥

第五步:客户端与服务端进行加密会话

(1)客户端发送加密数据给服务端

发送加密数据:客户端加密数据后发送给服务端。

(2)服务端响应客户端

解密接收数据:服务端用会话密钥解密客户端发送的数据;

加密响应数据:用会话密钥把响应的数据加密发送给客户端。

(3)客户端解密服务端响应的数据

解密数据:客户端用会话密钥解密响应数据;




部分图片来源:《图解HTTP》

代做工资流水公司衡阳代办转账银行流水扬州工作收入证明办理滁州银行对公流水代做漳州收入证明制作大庆打转账银行流水商丘代做入职流水沧州车贷工资流水 报价宿迁开房贷流水鞍山制作银行流水修改太原查询工资代付流水石家庄制作在职证明菏泽对公流水代办广州企业对私流水模板株洲薪资银行流水公司桂林个人工资流水 打印北京转账流水费用遵义查询车贷流水西安代办车贷工资流水桂林查询企业流水打印南阳工资流水单模板福州办理签证银行流水天津转账银行流水代开宿迁个人流水价格杭州企业流水打印打印大连工资代付流水价格长沙签证银行流水 查询深圳查询自存银行流水无锡办理工资流水单海口工资证明样本西安代办车贷流水香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤

代做工资流水公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化