🍬 博主介绍
👨🎓 博主介绍:大家好,我是 _PowerShell ,很高兴认识大家~
✨主攻领域:【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】
🎉点赞➕评论➕收藏 == 养成习惯(一键三连)😋
🎉欢迎关注💗一起学习👍一起讨论⭐一起进步📝文末有彩蛋
🙏作者水平有限,欢迎各位大佬指点,相互学习进步!
三、工作原理(HTTP加入SSL证书)
HTTPS在传输数据之前需要客户端(浏览器)与服务端(网站)之间进行一次握手,在握手过程中将确立双方加密传输数据的密码信息。
TLS/SSL 协议不仅仅是一套加密传输的协议,更是一件经过艺术家精心设计的艺术品,TLS / SSL中使用了非对称加密,对称加密以及HASH算法。
1. 握手过程的具体描述如下:
1. 浏览器将发送自己的加密规则
浏览器将自己支持的一套加密规则发送给网站。
2. 网站选择加密规则,回复证书
网站从中选出一组加密算法与HASH算法,并将自己的身份信息以证书的形式发回给浏览器。证书里面包含了网站地址,加密公钥,以及证书的颁发机构等信息。
3. 浏览器获得网站证书之后浏览器的操作:
1. 验证证书的合法性(颁发证书的机构是否合法,证书中包含的网站地址是否与正在访问的地址一致等),如果证书受信任,则浏览器栏里面会显示一个小锁头,否则会给出证书不受信的提示。
2. 如果证书受信任,或者是用户接受了不受信的证书,浏览器会生成一串随机数的密码,并用证书中提供的公钥加密。
3. 使用约定好的HASH算法计算握手消息,并使用生成的随机数对消息进行加密,最后将之前生成的所有信息发送给网站。
4. 网站接收浏览器发来的数据之后网站要做的操作:
1. 使用自己的私钥将信息解密取出密码,使用密码解密浏览器发来的握手消息,并验证HASH是否与浏览器发来的一致。
2. 使用密码加密一段握手消息,发送给浏览器。
5. 浏览器解密HASH进行验证
浏览器解密并计算握手消息的HASH,如果与服务端发来的HASH一致,此时握手过程结束,之后所有的通信数据将由之前浏览器生成的随机密码并利用对称加密算法进行加密。
6. 注意:
这里浏览器与网站互相发送加密的握手消息并验证,目的是为了保证双方都获得了一致的密码,并且可以正常的加密解密数据,为后续真正数据的传输做一次测试。
2. HTTPS一般使用的加密与HASH算法如下:
这里不过过多介绍,想详细了解的可以看:
虚拟专用网的五种技术里面的加解密技术详细讲解了加密算法
1. 非对称加密算法:RSA,DSA/DSS
2. 对称加密算法:AES,RC4,3DES
3. HASH算法:MD5,SHA1,SHA256
3. 数据包过程
注意:公钥数字证书 = 数字证书 = CA证书
公钥数字签名 = 数字签名
HTTPS所使用到的数字证书是SSL证书(下一篇文章将详细介绍数字证书)
数字证书_百度百科 (baidu.com)数字签名_百度百科 (baidu.com)
1. 关键点:公钥数字证书(数字证书、CA证书)
2. 公钥数字证书是怎么生成的 ?
站点运维人员生成非对称密钥(私钥公钥)向CA机构提交信息,CA机构验证信息。生成公钥数字证书。
3. 公钥数字证书包括什么 ?
公钥数字证书包括:公钥、组织信息、CA信息、有效时间、证书序列号、签名算法、同时生成一个签名(数字签名)
4. CA信息包括什么 ?
CA信息:CA机构颁发的。包括CA机构信息、包括CA机构的公钥
5. 签名步骤:
hash(拟用于申请证书所提交的明文信息)= 信息摘要
将提交的信息做一个信息摘要 防止篡改
CA再使用CA机构的私钥对信息摘要进行加密,密文就是数字签名
数字签名包含在公钥数字证书里面
站点运维人员再把它部署在服务器上面
6. 浏览器如何验证数据 ?
浏览器验证数据:这时候的公钥就不单单是一个公钥了是一个公钥数字证书(有很多信息组成)(CA信息 公钥用户信息 公钥 权威机构签名 有效期)
第五个包 浏览器收到公钥数字证书之后还需要完成一个验证的操作
服务器拿到了数字证书,就拿到了,公开的信息
公钥数字证书里面包括了一个 签名算法 就可以利用签名算法 对公开信息进行加密
得到信息摘要 再通过公钥数字签名里面的CA信息(包含CA机构的公钥)利用公钥对数字签名进行解密 通过浏览器自己得到的摘要 和解密得到的摘要进行兑对比
如果两个信息摘要是一致的 说明这个证书是正确的没有被篡改的
7. 谁来验证CA信息呢?
由上级权威机构验证,权威机构由根CA机构验证
我们再进行CA证书的部署的时候部署的是一个公钥的证书链,不是说只有一个证书(谁给他颁发的,上级是谁颁发的)。
但是不会包含根证书,根证书是内置在浏览器里面的(或者说内置在操作系统里面的(这个是一定不能有问题的)(由操作系统来保障它的安全))
8. 公钥数字证书生成过程图示:
四、HTTPS 的优缺点
1. 优点
1. 使用 HTTPS 协议可认证用户和服务器,确保数据发送到正确的客户机和服务器。
2. HTTPS 协议是由 SSL+HTTP 构建的可进行加密传输、身份认证的网络协议,要比 HTTP安全,可防止数据在传输过程中被窃取、改变,确保数据的完整性
。
3. HTTPS 是现行架构下最安全的解决方案,虽然不是绝对安全,但它大幅增加了中间人攻击的成本。
2. 缺点
1. 资源消耗大
相同网络环境下,HTTPS 协议会使页面的加载时间延长近 50%,增加 10%到 20%的耗电。此外,HTTPS 协议还会影响缓存,增加数据开销和功耗。
2. 并非绝对安全
HTTPS 协议的安全是有范围的,在黑客攻击、拒绝服务攻击和服务器劫持等方面几乎起不到什么作用。
3. SSL 证书的信用链问题
最关键的是,SSL 证书的信用链体系并不安全。特别是在某些国家可以控制 CA 根证书的情况下,中间人攻击一样可行。
4. 成本增加
部署 HTTPS 后,因为 HTTPS 协议的工作要增加额外的计算资源消耗。
例如: SSL 协议加密算法和 SSL 交互次数将占用一定的计算资源和服务器成本。在大规模用户访问应用的场景下,服务器需要频繁地做加密和解密操作,几乎每一个字节都需要做加解密,这就产生了服务器成本。
随着云计算技术的发展,数据中心部署的服务器使用成本在规模增加后逐步下降,相对于用户访问的安全提升,其投入成本已经下降到可接受程度。