20200828——https详解

前言

https到底是什么,总说的tsl和ssl到底是什么。

https的本质

https的本质,其实就是http披上了ssl和tls的外套,http属于应用层协议,而ssl(安全套接字)和tls(运输层安全)都属于传输层协议。

加密的基本概念

明文

http协议就是明文传输的,明文就是未被加密过的原始数据。

密钥

通常是一个字符串或者是一个数字,进行加密和解密算法使用,公钥和私钥都是密钥,只不过公钥是对外开放的,加密的时候使用,而私钥是不公开的,解密时使用。

非对称加密(公钥加密)

有RSA、DSA/DSS、Elgamal、Rabin、D-H、ECC等。在客户端与服务器相互验证的过程中用的就是非对称加密算法
RSA密码体制就是公钥密码体制,RSA的一对公钥和私钥都可以用来加密和解密。
比如公钥加密后只能由私钥解密;私钥加密后只能由公钥解密。且一方加密的内容只能由对方进行解密。

对称加密算法

有AES、DES、3DES、TDEA、Blowfish、RC4、RC5、IDEA等。加密使用的密钥和解密使用的密钥是同一个密钥。由于加密算法是公开的,若要保证安全性,密钥不能对外公开。通常用来加密消息体。

hash算法

有MD5,SHA1,SHA256。用来确认信息没有被篡改。主要用来生成签名,签名是加在信息后面的,可以证明信息没有被修改过。一般对信息先做hash计算得到一个hash值,然后用私钥加密(这个加密一般是非对称加密)作为一个签名和信息一起发送。接收方收到信息后重新计算信息的hash值,且和信息所附带的hash值解密后进行对比。如果一样则认为没有被修改,反之则认为修改过,不做处理。可能有一种情况,黑客修改了信息并把hash值也改了,从而让他们相匹配。所以hash值一般都是加密后(生成签名)再和信息一起发送,确保hash值不会被修改。

数字证书

主要包含证书发布机构,证书有效期,公钥,证书所有者,签名使用的算法,指纹以及指纹算法。数字证书可以保证里面的公钥一定是证书持有者的。

在这里插入图片描述

将明文通过Hash算法加密生成摘要,再将消息体摘要用私钥加密后就是签名了。当下一级证书或客户端需要时就返回这个整体。数字签名主要作用就是配合Hash算法保证信息没有被篡改。当https验证通过后,一般会改用对称加密方式通信,因为RSA公钥体制比较耗性能。所以数字签名只存在于验证阶段。

证书链

证书是分级的,证书链由多个证书一级一级组成,拿到上级证书的公钥才能解密本级证书。只有最底层的证书是自签名的,自己颁发给自己。

https的验证流程

客户端发送了一个https请求,到443端口

服务端把自己的信息以数字证书的形式发送给客户端,(证书内容里面有密钥公钥,网站地址,地址信息,失效日期等),证书中有一个公钥来加密信息,私钥由服务器自己私有。

验证证书的合法性,客户端收到服务器的响应,首先会验证证书的合法性

生成随机密码(rsa),如果验证通过,或者用户接受了不被信任的证书,浏览器就会生成一个随机的密钥(session-key)并用公钥加密,让服务器用私钥解密,解密后就用这个对称密钥进行传输了,并且能够说明,服务器确实是私钥的持有者。

生成对称加密算法,验证完服务端身份之后,客户端生成一个对称加密算法和对称密钥,以公钥加密之后发送给服务端。此时黑客截获也没有用,因为只有服务端的私钥才可以对其进行解密,之后,客户端和服务端可以用这个对称加密算法来加密和解密通信内容了。

https运行原理

https的安全性主要依赖于对数字证书以及非对称加密机制

先来看看数字证书都有哪些内容
Issuer–证书的发布机构
发布证书的机构,指明证书是哪个公司创建的(并不是指使用证书的公司)。出了问题具体的颁发机构是要负责的

Valid from,Valid to–证书的有效期
证书的使用期限。过了这个期限证书就会作废,不能使用。

Public key–公钥
刚开始的时候介绍过公钥的概念,用于对消息加密的。

Subject–主题
证书是颁发给谁了,一般是个人或公司名称或机构名称或公司网站的网址。

Signature algorithm–签名所使用的算法
数字证书的数字签名所使用的加密算法,根据这个算法可以对指纹解密。指纹加密的结果就是数字签名。

Thumbprint,Thumbprint algorithm–指纹以及指纹算法(一种HASH算法)
指纹和指纹算法会使用证书机构的私钥加密后和证书放在一起。主要用来保证证书的完整性,确保证书没有修改过。使用者在打开证书时根据指纹算法计算证书的hash值,和刚开始的值一样,则表示没有被修改过。

客户端如何检测数字证书是合法的并是所要请求的公司的

首先应用程序读取证书中的Issuer(发布机构),然后会在操作系统或浏览器内置的受信任的发布机构中去找该机构的证书(为什么操作系统会有受信任机构的证书?先看完这个流程再来回答)。如果找不到就说明证书是水货,证书有问题,程序给错误信息。如果找到了,或用户确认使用该证书。就会拿上级证书的公钥,解密本级证书,得到数字指纹。然后对本级证书的公钥进行数字摘要算法(证书中提供的指纹加密算法)计算结果,与解密得到的指纹对比。如果一样,说明证书没有被修改过。公钥可以放心使用,可以开始握手通信了。

接下来解答操作系统为什么会有证书发布机构的证书

其实证书发布机构除了给别人发布证书外,自己也有自己的证书。在操作系统安装好时,受信任的证书发布机构的数字证书就已经被微软安装在操作系统中了,根据一些权威安全机构的评估,选取一些信誉很好并且通过一定安全认证的证书发布机构,把这些证书默认安装在操作系统中并设为信任的数字证书。发布机构持有与自己数字证书对应的私钥,会用这个私钥加密所有他发布的证书及指纹整体作为数字签名。

客户端生成随机数并用公钥加密,让服务端用私钥解密来确保对方是否真的持有私钥。但是,黑客也可以发送字符串让服务器用私钥加密,并得到加密后的信息,从而找到规律,导致私钥的安全性下降。如何解决?

服务端并不是真的加密这个字符串,而是把字符串进行hash计算后再进行加密后发送给客户端。客户端收到后再解密这个hash值与原来字符串的hash值对比,从而确定对方是否持有私钥。

在通信的过程中,黑客可以截获加密内容,虽不能理解具体内容,但可以捣乱,修改内容或重复发送该内容,如何解决?

给通信的内容加版本号或随机值,如果接收到版本号或随机值不相同的信息,双方立刻停止通信。若一直捣乱就无法正常通信,因为有人控制了你的路由器,可以针对你。所以一些对于安全性较强的部门来说就不使用公网,而是内部网络,一般不会被破环通信。

总结

最重要的就是RSA加密体制,还有用于验证服务器是否持有私钥的步骤,又能牵涉到HASH算法。验证成功后,通过对消息体的摘要进行HASH加密就能得到RSA签名了(为了保证信息没被篡改),给服务器解密,确认,正常通信。

参考

https

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值