一、Https
1、实现原理
A、HTTPS 在内容传输的加密上使用的是对称加密,非对称加密只作用在证书验证阶段
B、HTTPS的整体过程分为证书验证
和数据传输
阶段,具体的交互过程如下:
2、HTTP证书
**A、**数字证书是Https实现安全传输的基础,它是由权威的CA机构颁发的,证书的主要内容有:公钥
(Public Key)、ISSUER
(证书的发布机构)、Subject
(证书持有者)、证书有效期
、签名算法
、指纹及指纹算法
。
B、证书验证阶段:
a.浏览器发起 HTTPS 请求
b.服务端返回 HTTPS 证书
c.客户端验证证书是否合法,如果不合法则提示告警
C、客户端和服务器通过网络进行数据传输过程中,存在“中间人攻击
”的风险“:
由于缺少对证书的验证,虽然客户端发起的是 HTTPS 请求,但客户端完全不知道自己的网络请求已被拦截,传输内容被中间人窃取。面对客户端中间人把自己伪装成服务端,面对服务端中间人把自己伪装成客户端,这样数据的传递完全没有安全性。这也是需要CA机构颁发证书的意义。
D、证书的合法依据:
a.权威机构
是要有认证的,不是随便一个机构都有资格颁发证书,不然也不叫做权威机构;
b.证书的可信性基于信任制
,权威机构需要对其颁发的证书进行信用背书,只要是权威机构生成的证书,我们就认为是合法的。
E、浏览器如何验证证书的合法性?
客户端(浏览器)发起 HTTPS 请求时,”服务器”(此处加引号表示这个服务器有可能是中间人伪装)会返回网站的 SSL 证书,客户端(浏览器)需要对证书做以下验证:
a.验证域名、有效期等信息是否正确:证书上都有包含这些信息,比较容易完成验证;
b.判断证书来源是否合法:每份签发证书都可以根据验证链查找到对应的根证书,操作系统、浏览器会在本地存储权威机构的根证书,利用本地根证书可以对对应机构签发证书完成来源验证
:
3)判断证书是否被篡改:需要与 CA 服务器进行校验;
4)判断证书是否已吊销:通过CRL(Certificate Revocation List 证书注销列表)和 OCSP(Online Certificate Status Protocol 在线证书状态协议)实现,其中 OCSP 可用于第3步中以减少与 CA 服务器的交互,提高验证效率。
**注:**CA机构实现原理也是非对称加密中的公私钥
,机构通过自己的私钥生成公钥在系统安装时内置于操作系统中的证书(每台计算机唯一)中,而不是通过网络传给计算机。CA机构加密的数据只能用客户端公钥解开,中间人即使拿到证书也无法伪装成合法服务端,因为无法对客户端传入的加密数据进行解密。
3、数据传输
A、数据传输阶段:
a.当证书验证合法后,在本地生成随机数
b.通过公钥加密随机数,并把加密后的随机数传输到服务端
c.服务端通过私钥对随机数进行解密
d.服务端通过客户端传入的随机数构造对称加密算法,对返回结果内容进行加密后传输
B、本地随机数被窃取怎么办?
证书验证是采用非对称加密实现,但是传输过程是采用对称加密,而其中对称加密算法中重要的随机数是由本地生成并且存储于本地的,HTTPS 如何保证随机数不会被窃取?
其实 HTTPS 并不包含对随机数的安全保证,HTTPS 保证的只是传输过程安全,而随机数存储于本地,本地的安全属于另一安全范畴,应对的措施有安装杀毒软件、反木马、浏览器升级修复漏洞等。
C、用了 HTTPS 会被抓包吗?
HTTPS 的数据是加密的,常规下抓包工具代理请求后抓到的包内容是加密状态,无法直接查看。
但是,正如前文所说,浏览器只会提示安全风险,如果用户授权仍然可以继续访问网站,完成请求。因此,只要客户端是我们自己的终端,我们授权的情况下,便可以组建中间人网络,而抓包工具便是作为中间人的代理
。通常 HTTPS 抓包工具的使用方法是会生成一个证书,用户需要手动把证书安装到客户端中,然后终端发起的所有请求通过该证书完成与抓包工具的交互,然后抓包工具再转发请求到服务器,最后把服务器返回的结果在控制台输出后再返回给终端,从而完成整个请求的闭环。
D、既然 HTTPS 不能防抓包,那 HTTPS 有什么意义?
HTTPS 可以防止用户在不知情的情况下通信链路被监听,对于主动授信的抓包操作是不提供防护的,因为这个场景用户是已经对风险知情
。要防止被抓包,需要采用应用级的安全防护,例如采用私有的对称加密
,同时做好移动端的防反编译加固
,防止本地算法被破解
。