HTTPS可谓是一个老生常谈的话题了,也是面试过程中几乎必然会问到的一个问题,我们都知道 HTTPS 比 HTTP 安全,也听说过与 HTTPS 协议相关的概念有 SSL 、非对称加密、 CA证书等,但一般面试官都喜欢左手擎“HTTPS 与 SSL有什么关系?”右手抓“HTTPS 的工作原理是什么?”两大法宝来放在任何的技术问题上提问,希望以此来击溃所有的面试者。
那么首先,我们来谈谈HTTPS 与 SSL之间的关系:
HTTPS 即 HTTP over SSL,即 HTTP+SSL/TLS,可以理解为 HTTP 下加入 SSL 层。
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、TLS 1.3 四个版本。SSL 3.0 和 TLS 1.0 由于存在安全漏洞,已经很少被使用到。TLS 1.3 相比于 TLS 1.2 改动比较大,既避免之前版本出现的缺陷,也减少了 TLS 握手的时间,更快更安全。
而HTTPS 的安全基础便是 SSL/TLS,因此就需要 SSL 证书用于安全的 HTTP 数据传输。
那么问题来了,什么样的才算是安全呢?
数据传输的安全其实体现在以下三方面:
1. 我发的数据,不该看的人看不懂
2. 我发的数据,不该看的人不能伪造或者修改(修改后接收方可察觉)
3. 我发的数据,过期之后不该看的人不能偷偷拿过来继续用
HTTPS怎样保证数据传输安全?
在讲到HTTPS的原理之前我们必须先聊一聊数据加密,目前包括以下三种加密方式:
对称加密:加密和解密数据使用同一个密钥。这种加密方式的优点是速度很快,常见对称加密的算法有 AES;
非对称加密:加密和解密使用不同的密钥,叫公钥和私钥。数据用公钥加密后必须用私钥解密,数据用私钥加密后必须用公钥解密。一般来说私钥自己保留好,把公钥公开给别人,让别人拿自己的公钥加密数据后发给自己,这样只有自己才能解密。这种加密方式的特点是速度慢,CPU 开销大,常见非对称加密算法有 RSA;
散列函数 Hash:hash 是把任意长度数据经过处理变成一个长度固定唯一的字符串,但任何人拿到这个字符串无法反向解密成原始数据(解开你就是密码学专家了),Hash 常用来验证数据的完整性。常见 Hash 算法有 MD5(已经不安全了)、SHA1、SHA256。
而TLS/SSL的功能实现主要依赖于以上三种基本算法,其利用非对称加密实现身份认证和密钥协商,对称加密算法采用协商的密钥对数据加密,基于散列函数验证信息的完整性。
【HTTPS安全协议工作原理】
希望你在阅读完本篇文章之后,下次面试时再被问到https为什么安全时,不要再简单的说“因为加密了呀”这种“白痴”回答,再往下问时就直接哑口无言,那这次面试不黄也够呛。最后祝各位面试顺利,事业有成,我们下期再见咯~
|