HTTPS知识梳理

梳理HTTPS知识,若有错误请指正,参考文章以下:html

腾讯云文档SSL原理:
https://www.qcloud.com/docume...
HTTPS:
http://www.360doc.com/content...
https://segmentfault.com/a/11...
SSL与TLS:
https://segmentfault.com/a/11...
http://kb.cnblogs.com/page/19...
RSA加密算法-维基百科:
https://zh.wikipedia.org/zh-c...
数字证书基本概念:
http://blog.csdn.net/adeyi/ar...算法

1 加解密基本概念

1.1 对称加密算法

加密、解密使用相同密钥。segmentfault

encode : clipboard.png安全

decode : clipboard.png服务器

1.2 非对称加密算法

加密、解密使用不一样密钥,分为公钥、私钥。网站

1.3 公钥密码体制

公钥密码体制使用非对称加密算法,分三部分:加解密算法、公钥、私钥。
其中,算法、公钥公开,私钥保密,加解密过程以下:加密

encode : clipboard.pngspa

decode : clipboard.png操作系统

1.4 RSA

RSA是一种公钥密码体制,算法、公钥公开,私钥保密。RSA的一对公钥、私钥均可以用来加密和解密,公钥加密的内容只能使用私钥解密,私钥加密的内容只能使用公钥解密。.net

1.5 哈希算法

将任意长度的二进制值映射为较短的固定长度的二进制值,这个小的二进制值称为哈希值。

clipboard.png

1.6 签名

做用:保证通讯过程当中传递信息未被修改。
实现:计算信息的hash值,并与信息一块儿发送,为避免恶意同时篡改信息hash值状况,对hash值加密,接收方收到数据后,计算信息的hash值,对比传输解密后的hash值,便可获知信息是否未被修改。(加密细节后文详述)

clipboard.png

2 HTTP、TLS、HTTPS

2.1 HTTP

HTTP请求 clipboard.png

黑客拦截 clipboard.png

裸奔的HTTP信息容易被窃听甚至篡改。如今有2个问题:
1)如何确保客户端的通讯对象是真正的服务器而非黑客
2)如何保证即便通讯内容被黑客窃取也不会泄露真是内容

2.2 TLS

  • HTTPS比HTTP多一层SSL/TLS
  • SSL(Secure Socket Layer,安全套接字层)
  • TLS(Transport Layer Security,传输层安全)

SSL版本:SSL1.0、SSL2.0、SSL3.0
TLS版本:TLS1.0、TLS1.一、TLS1.2。
TLS是IETF制定的一种新的协议,它创建在SSL 3.0协议规范之上,是SSL 3.0的后续版本。二者差异极小,能够理解为SSL 3.1。SSL3.0和TLS1.0因为存在安全漏洞,已经不多被使用到。TLS 1.3 改动会比较大,目前还在草案阶段,目前使用最普遍的是TLS 1.一、TLS 1.2。

clipboard.png

2.3 HTTPS

clipboard.png

1)Client请求,发送客户端信息(如:支持的非对称/对称加密算法、压缩方式等)+随机码1
2)Server响应,发送确认信息(如:确认后续使用的非对称/对称加密算法、压缩方式等)+数字证书+随机码2
2)Client校验数字证书真实性,确认后得到服务器公钥
3)Client确认,发送确认信息+随机码3,随机码3公钥加密
3)Server收到后,Clinet和Server都有3个随机数,组合生成密钥
4)Server确认,握手结束,下一步开始使用协商的对称加密算法+密钥进行通讯
5)对称加密算法+密钥,请求,序号1
6)对称加密算法+密钥,响应,序号2
...

注意:

  • 为保证通讯传递信息未被修改,信息发送前计算hash值与信息一块儿发送,接收方收到后可从新计算hash值并与收到hash值对比,确保传递信息未被修改。
  • 上步的计算信息hash值,有的文章中提到,为避免黑客同时修改内容与hash值,握手3)4)步应使用公钥&私钥加密对hash值加密,我理解这是没必要要的,黑客目的是要得到随机码3并算出密钥,同时修改了内容与hash没法获取随机码3,并致使握手失败(Client与Server密钥对应不上),并且使用私钥加密并进行信息传递,自己存在被试探私钥加密规律的问题。
  • 握手结束后,通讯含有序号,目的是为了不黑客截取某些信息后原封不动重发屡次,扰乱通讯,添加序号后一旦序号不对应,当即终止通讯。(序号具体实现待补充修改)

2.4 数字证书

2个概念:

指纹:数字证书主体的hash值
签名:使用CA(证书管理机构)的私钥,加密后的指纹

Client 校验证书确认服务器身份过程:

    操做系统安装时就已经自带权威CA机构的证书,这些证书里包含其CA公钥,用来解密数字证书的签名(被CA私钥加密)。

1)客户端收到服务器的数字证书A,查看A的Issuer证书发布机构,从操做系统中找到对应发布机构的CA证书,获取CA公钥
2)使用CA公钥解密证书签名,得到证书主体内容的hash1
3)从新计算证书主体内容得hash2,与hash1对比证实证书未被修改
4)从证书中得到服务器公钥,为HTTPS过程当中加密协商作准备
步骤1~4确认数字证书自己真实性,确实为权威CA机构发布,而非伪造

5)确认服务器证书真实性后,对比访问域名与数字证书Subject证书全部者是否一致等信息,确认访问服务器真实性。
步骤5确认访问网站的真实性

相关文章
相关标签/搜索