0%

Web安全防护和认证措施

[toc]

HTTPS防护常见问题#

HTTPS原理详解

Q: 讲一下HTTPS双向认证的过程?#

A:

  1. 服务端发送证书, 证书中包含网站信息、CA签名、网站公钥

  2. 客户端校验CA签名,确认是CA所签且来源方正是该网站。

  3. 客户端生成会话密钥

  4. 客户端用网站公钥对会话密钥进行加密,生成非对称的会话密钥密文

  5. 客户端发送会话密钥密文给服务端

  6. 服务端用私钥解密, 得到明文会话密钥。

  7. 二者使用会话密钥进行加密传输

    在这里插入图片描述

Q: 为什么不使用非对称密钥加密 传输数据, 而要用对称密钥这样绕一大圈?#

A:
对称算法的加解密性能比非对称算法快很多, 所以非对称只用于会话密钥的传输即可, 只需要一次。


Q: 为什么数据开始传输之后不需要再做验签, 难道者中间的数据就不会再被人篡改或者替换吗?#

A:
不会,有3个原因保证:

  1. 会话密钥是会话级别, 动态生成的,只有这一次连接才会用到。因此以前废弃的会话密钥不用担心被人拿去利用。
  2. 建立连接并传递会话密钥之前,已经通过验签确认过对方身份是可信的。
  3. 没有任何第三方知道会话密钥是什么。因此第三方攻击人无法用正确的会话密钥加密数据,即无法做到伪造会话密钥来欺骗接收者的目的。

Q: CA根证书可能被造假吗?#

例如黑客修改了用户机器中的CA证书,导致CA的公钥被替换了, 后面访问了黑客所在的网址时,就会验签成功。

A:
如果真的能修改的话,那么是可行的。
但是操作系统基本会内置著名CA的公钥,除非黑客已经能直接触碰你的操作系统底层了,否则基本办不到。


Q: 黑客把这个服务端返回的证书, 保存下来,然后下次别人访问黑客的钓鱼网站时, 黑客把这个证书原封不动发回去,会通过验证吗?#

A:
客户端会验证成功,
但是客户端做公钥时
于是对数据进行对称+非对称加密
重点来了
钓鱼网站接收到的数据,他没法用,他没有正规网站的私钥! 因为客户端用的是正规网站签发的公钥才可以。
黑客做中间人两边相互拦截,把假的签发过的公钥+证书发给客户端
客户端验签过程就会发现端倪, 发现他这个证书不对劲, 不是自己这边持有的CA机构正常签发出来证书。

Q: MD5 在双向认证过程中有什么用?#

A:
对网址申请信息进行摘要, 避免签名内容过长。同时也避免了逆向推导原网址信息的过程。

Q: 什么是证书链?#

A:

  • 一个证书或证书链的拆封操作,是为了
    从中获得一个公钥。可示为X1p?X1<>,这为一个中缀操作,其左操作数为一个认证机构的公钥,
    右操作数则为该认证机构所颁发的一个证书。如果能正确解开,输出结果为用户的公钥

  • 证书链验证的要求是,路径中每个证书从最终实体到根证书
    都是有效的,并且每个证书都要正确地对应发行该证书的权威可信任性CA。操作表达式为 Ap?A<>B<>,
    指出该操作使用A的公钥,从B的证书中获得B的公钥Bp,然后再通过 Bp来解封C的证书。操作的最终结果

说人话就是下游证书解出来是上游父证书的密文公钥,然后继续解

理解证书和证书链

Token机制#

Q: 如何设计token?#

A:
token进行加密处理,将请求 URL、时间戳、加密后的token、 三者进行合并加盐签名,因为盐值是保密的,所以其他人只是得到token的话,无法进行正确的签名,后端验证请求的签名值来判断请求是否有效。


Q: token泄露怎么办?#

A:
每次请求可以将token和请求的对应的ip地址或设备id保存起来,放到数据库或者redis缓存中,如果后面请求token对应的ip地址或设备id不一样,则视为非法请求

HTTPS保护。

应用程序里用到的时候再解密。 如果支持TEE的话可以在TEE里进行解密。

理解证书和证书链

云服务AKSK#