前言
你既然说你懂了HTTPS,那么下面的这些概念你肯定不会陌生了
- HTTPS 协议(HyperText Transfer Protocol over Secure Socket Layer):可以理解为HTTP+SSL/TLS, 即 HTTP 下加入 SSL 层,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL,用于安全的 HTTP 数据传输。
- SSL(Secure Socket Layer,安全套接字层):1994年为 Netscape 所研发,SSL 协议位于 TCP/IP 协议与各种应用层协议之间,为数据通讯提供安全支持。
- TLS(Transport Layer Security,传输层安全):其前身是 SSL,它最初的几个版本(SSL 1.0、SSL 2.0、SSL 3.0)由网景公司开发,1999年从 3.1 开始被 IETF 标准化并改名,发展至今已经有 TLS 1.0、TLS 1.1、TLS 1.2 三个版本。SSL3.0和TLS1.0由于存在安全漏洞,已经很少被使用到。TLS 1.3 改动会比较大,目前还在草案阶段,目前使用最广泛的是TLS 1.1、TLS 1.2。
上面的这些名词相信你肯定信手拈来,那接下来就要灵魂两问了!
-
为什么用了 HTTPS 就是安全的?
-
HTTPS 的底层原理如何实现?
老规矩,开局一张图,下面就看图说话(这里别问,只看图):
一、为什么用了 HTTPS 就是安全的?
HTTP请求过程中,客户端与服务器之间没有任何身份确认的过程,数据全部明文传输,“裸奔”在互联网上,所以很容易遭到黑客的攻击。一旦被黑客抓包就能解析出其明文数据。
那HTTPS的本意就是在HTTP明文的基础之上,将其明文数据采取加密算法(通常此算法是对称加密,非对称加密算法效率低无法满足http大量交互场景)进行加密传输,达到黑客无法‘偷看’和‘篡改’目的。—加签防止篡改,加密防止偷看
HTTPS通过向权威机构申请CA证书,将CA证书发送给客户端以实现身份验证,以此达到了黑客无法‘身份冒用’的目的。
二、HTTPS 的底层原理如何实现
1.一张图看http向https演变
上面的阶段最终会演变为前言中的开局图! ps :打个广告,麻烦各位如果缺袜子或者女朋友缺袜子,或者未来男女朋友缺袜子,可以去淘宝选一双支持下,淘宝搜夏言秋语即可
2.https交互流程解释
- 证书验证阶段:
浏览器发起 HTTPS 请求。
服务端返回 HTTPS 证书。
客户端验证证书是否合法,如果不合法则提示告警。
- 数据传输阶段:
当证书验证合法后,在本地生成随机数。
通过公钥加密随机数,并把加密后的随机数传输到服务端。
服务端通过私钥对随机数进行解密。
服务端通过客户端传入的随机数构造对称加密算法,对返回结果内容进行加密后传输。
证书验证是采用非对称加密实现,但是传输过程是采用对称加密,而其中对称加密算法中重要的随机数是由本地生成并且存储于本地的,HTTPS 如何保证随机数不会被窃取?
其实 HTTPS 并不包含对随机数的安全保证,HTTPS 保证的只是传输过程安全,而随机数存储于本地,本地的安全属于另一安全范畴,应对的措施有安装杀毒软件、反木马、浏览器升级修复漏洞等。
总结
HTTPS主要基于HTTP的基础上,结合证书非对称校验,数据对称加密传输,保证了不被第三方偷看,篡改,冒用。