迷茫的HTTPS

http不安全
明文传输,交互过程和数据传输没有进行加密,通信双方没有相互认证,通信过程非常容易遭遇劫持、监听、篡改。例如:”中间人”在服务端返回的报文里面插入html、js代码等,加入了广告链接,小红包,或其它一些高危险代码,或修改用户的请求头URL,导致用户的请求被劫持到另外一个网站,请求不到真正的服务器。

对称密钥加密
信息的发送方和接收方使用同一个密钥去加密和解密数据,加/解密速度快,适合于对大数据量进行加密,但密钥管理困难。

非对称密钥加密
使用不同的密钥来分别完成加密和解密操作,一个公开发布,即公开密钥,另一个由用户自己秘密保存,即私用密钥。公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。公钥机制灵活,但加密和解密速度却比对称密钥加密慢得多。

数字证书验证
申请者拿到CA的证书并部署在网站服务器端,那浏览器发起握手并接收到证书后,如何确认这个证书就是CA签发的呢?怎样避免第三方伪造这个证书?答案就是数字签名(digital signature)。数字签名是证书的防伪标签,目前使用最广泛的SHA-RSA(SHA用于哈希算法,RSA用于非对称加密算法)。数字签名的制作和验证过程如下:
1、数字签名的签发。首先是使用哈希函数对待签名内容进行安全哈希,生成消息摘要,然后使用CA自己的私钥对消息摘要进行加密。
2、数字签名的校验。使用CA的公钥解密签名,然后使用相同的签名函数对签名证书内容进行签名,并和服务端数字签名里的签名内容进行比较,如果相同就认为校验成功。
这里写图片描述这里写图片描述
(1)数字签名签发和校验使用的非对称密钥是CA自己的公钥和私钥,跟证书申请者(提交证书申请的公司实体)提交的公钥没有任何关系。
(2)数字签名的签发过程跟公钥加密的过程刚好相反,即是用私钥加密,公钥解密。(一对公钥和私钥,公钥加密的内容只有私钥能够解密;反过来,私钥加密的内容,也就有公钥才能够解密)
(3)现在大的CA都会有证书链,证书链的好处:首先是安全,保持CA的私钥离线使用。第二个好处是方便部署和撤销。这里为啥要撤销呢?因为,如果CA数字证书出现问题(被篡改或者污染),只需要撤销相应级别的证书,根证书依然是安全的。
(4)根CA证书都是自签名,即用自己的公钥和私钥完成了签名的制作和验证。而证书链上的证书签名都是使用上一级证书的非对称密钥进行签名和验证的。
(5)怎样获取根CA和多级CA的密钥对?还有,既然是自签名和自认证,那么它们是否安全可信?这里的答案是:当然可信,因为这些厂商跟浏览器和操作系统都有合作,它们的根公钥都默认装到了浏览器或者操作系统环境里。


1.非对称加解密的密钥用于TLS握手阶段。

2.对称密钥用于后续传输数据加解密。

3.服务器把公钥发给客户端,客户端用公钥加密进行数据传输的对称密钥。客户端用公钥将对称密钥加密发给服务器时,即使中间人截取了信息,也无法解密,只有服务器有私钥能解密。

4.“中间人”攻击过程:中间人在截取服务器发送给客户端的公钥后,并没有直接发给客户端,中间人将自己的公钥(中间人也会有一对公钥和私钥)发给客户端。客户端把对称密钥用这个“伪造公钥”加密后发送出去,中间人用自己的私钥解密数据并拿到对称密钥,中间人再把对称密钥用“正确的公钥”加密发回给服务器。此时,客户端、中间人、服务器都拥有了一样的对称密钥,后续客户端和服务器的所有加密数据,中间人都可以通过对称密钥解密出来。

5.解决”中间人”攻击方法:数字证书。服务器生成公钥私钥,将公钥提供给相关机构(CA),CA将公钥放入数字证书并将数字证书颁布给服务器,此时服务器就不是简单的把公钥给客户端,而是给客户端一个数字证书,数字证书中加入了一些数字签名的机制,保证了数字证书一定是服务器给客户端的。中间人发送的伪造证书,不能够获得CA的认证。

6.非对称加密算法(公钥和私钥)交换对称密钥+数字证书验证身份(验证公钥是否是伪造的)+利用对称密钥加解密后续传输的数据=安全

7.这里写图片描述

8.对称加密两种模式:流加密和分组加密。

9.对称加密的优点:计算量小、加密速度快、加密效率高。

10.非对称加密缺点:CPU计算资源消耗非常大,对加密内容的长度有限制,不能超过公钥长度。

11.身份认证:由CA数字证书完成的,证书由公钥、证书主体、数字签名等内容组成。在客户端发起SSL请求后,服务端会将数字证书发给客户端,客户端会对证书进行验证(验证这张证书是否是伪造的?也就是公钥是否是伪造的)。

12.数字证书作用:
a.验证证书合法性,客户端接收到数字证书后,会对证书合法性进行验证,只有验证通过后的证书,才能够进行后续通信过程。
b.身份授权,确保浏览器访问的网站是经过CA验证的可信任的网站。
c.分发公钥,每个数字证书都包含了注册者生成的公钥(验证确保是合法的,非伪造的公钥)。

13.申请一个受信任的CA数字证书:
a.公司(实体)的服务器生成公钥和私钥,以及CA数字证书请求。
b.RA(证书注册及审核机构)检查实体的合法性(在注册系统里面是否注册过的正规公司)。
c.CA(证书签发机构)签发证书,发送给申请者实体。
d.证书更新到repository(负责数字证书及CRL内容存储和分发),实体终端后续从repository更新证书,查询证书状态等。

14.数字证书危机:Hash碰撞伪造签名。2004年低,王小云团队成功破解MD5、HAVAL-128、MD4和RIPEMD四大国际著名密码算法,之后几月又破解难度最高的SHA-1密码。2017年2月23日,Google经过两年的研究,表示其已经成功破解了SHA-1加密。

15.HTTPS,也称作HTTP over TLS。TLS的前身是SSL,TLS 1.0通常被标示为SSL 3.1,TLS 1.1为SSL 3.2,TLS 1.2为SSL 3.3。

16.证书中包含:
a.Certificate(证书):
   (1).Common Name(证书所有人姓名,简称CN,其实就是证书的名字)
   (2).Version(版本,现在一般是V3了)
   (3).Issuer(发证机关)
   (4).Validity(有效日期)
   (5).Subject(证书信息,你会发现它和Issuer里面的内容是一样的)
   (6).Subject’s Public Key Info(证书所有人公钥)
   (7).Extension(扩展信息)
   (8).Certificate Signature Algorithm(公钥加密算法)、
  (9).Serial Number(序列号)  
b.Certificate Signature Algorithm:这是描述证书的加密算法,看它的Fireld Value,一般会写:PKCS #1 SHA-1 With RSA Encryption。
c.Certificate Signature Value:这记录的是证书被加密后的结果。

17.CA认证中心之间是一个树状结构,根CA认证中心可以授权多个二级的CA认证中心,同理二级CA认证中心也可以授权多个3级的CA认证中心…根CA认证中心是有多个的,也就是说会有多棵这样的结构树,FireFox里面默认记录了一些根CA认证机构的信息。

18.数字证书的验证:
a.可信性验证/合法性验证(用ca公钥解密数字签名得到证书的hash码,这个hash码是合法证书应当得到的hash码,然后把证书通过描述的加密算法得出实际证书的hash码,然后两个hash做比较)
b.完整性验证(在验证可信性的过程中,两个hash码的比较,其实已经顺便验证其完整性了)
c.有效性验证(Vilidity值是否过期)

19.TLS协议包括TLS Record Protocol和TLS Handshake Protocol。

20.这里写图片描述

21.SSL协议可分为两层:SSL记录协议(SSL Record Protocol):它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。 SSL握手协议(SSL Handshake Protocol):它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。

22.TLS协议中,有四种子协议运行于Record protocol之上,Handshake protocol,Alert protocol,Change cipher spec protocol,Application data protocol。

23.Record protocol:在发送端:将数据(Record)分段,压缩,增加MAC(Message Authentication Code)和加密;在接收端:将数据(Record)解密,验证MAC,解压并重组。

24.协商对称加密算法:
这里写图片描述

25.中间人攻击:
这里写图片描述

26.中间人在与客户端同一家CA机构申请了自己的证书下攻击:
这里写图片描述


转:http://wetest.qq.com/lab/view/110.html
https://cattail.me/tech/2015/11/30/how-https-works.html
https://www.cnblogs.com/hyddd/archive/2009/01/07/1371292.html
https://segmentfault.com/a/1190000002554673
http://blog.jobbole.com/110354/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值