web前端加密是否有意义
web前端加密是否有意义
Nov 7, 2022
| Dec 26, 2024
1526  |  Read Time 4 min
type
status
date
slug
summary
tags
category
icon
password
AI 摘要

背景

在 web 通信建立在 https 的基础上,是否还需要前端对用户密码的加密?
有人会笑话说这不是废话吗,常识如此(我最开始看到这个问题就是这么想的) 你若再问我为什么,我不假思索就会来上一句“有助于提高系统用户的安全性”
可真的能 提高 系统用户的安全性”吗??
先回顾一下前后端交互的几个核心诉求

前后端交互过程中的安全性诉求

这里借用一个比喻: Alice( 浏览器前端 )和 Bob(服务器后端)到底可以怎么幽会。这个问题又会涉及到以下这些问题:
  • Alice 怎么知道 Bob 是 Bob?
  • Bob 怎么知道 Alice 是 Alice?
  • Alice 和 Bob 幽会中的 窃窃私语 如何不被Eve偷听到,甚至被Oscar串改呢?
前两个问题被统称归为 Authenticity(认证),第三个问题可以被归为 Confidentiality(保密)Integrity
对于一般人而言,以上三个问题的成熟解决方案实现现有 SSHmTLS ,常用的就是是 HTTPS 即 HTTP over TLS(在 TLS 安全信道上 HTTP 通讯)

关于系统用户安全性的提升

直觉上大家都会觉得前端既然加密了,那对 该网站用户认证系统 的整体安全性肯定是有所帮助的,哪怕是 m + n + 1 的帮助也是帮助,即 用户认证安全性 = m + n + 1,(先记住这个概念,后面会再用到)
  • m 指后端加密
  • 这里的 n 是指传统的 htttps
  • 1 则是前端用户加密
实际上并非如此,因为你的这个 n 正是从 1 迭代而来的,二者并没有累加的关系,而是后浪和前浪的关系,以下是解释

n 和 1 的关系

先看案例:
  1. 如果某一天,这个系统的数据库泄露了,黑客就直接拿到了每个用户的密码 md5 值
  1. 但此时,由于黑客知道密码是在前端进行哈希的,所以他不需要爆破出该 md5 对应的原文是什么,而是直接修改客户端向服务器发出的请求,把密码字段换成数据库中 MD5 就可以了
  1. 由于与数据库中记录一致,直接就会登录成功。这跟 直接存储 明文密码 没有任何区别!!
在这个类似中间人攻击的案例中,我们再分析 n 和 1 的实际映射对象
  • n 指对信息传输通道所做的操作,可以是 https 加密传输等其他任何传输方式
  • 1 指对信息发送源头所做的操作,可以是前端对密文做的一切加密操作
再来看案例中黑客如何爆破这个系统的,他无视掉了 1(对信息发送源头所做的操作),仅仅是干掉了 n(即信息传输通道所做的操作)这一操作,就干掉了这个认证系统 ——即此时认证系统的安全性完全取决于 n
因此,这个公式应该变成 用户认证安全性 = m + n
针对这些,现代密码学有一些“反常识”的方法,也能加强这一理解

现代密码学

1.A 可以向 B 证明自己拥有一个密码,但是如果 B 是假冒的验证者,A 不会透露关于密码的任何信息给 B。——“零知识证明”
2.A 可以和 B 比较自己持有的一个值的大小关系,而不泄露这个值给对方。——“百万富翁问题”
3.A 可以给 B 发来的一段信息进行 电子签名 ,而不知道信息的内容。——“ 盲签名
4.A 和 B 可以,在没有公正第三人的情况下,进行等概率胜负的博弈。——“电 子博弈
5.邮件服务,如果不考虑法律风险的话,是可以做到让服务器看不到你的邮件内容的。——PGP

对用户认证系统安全性并没有帮助

以上,我们可以明确前端密码加密对用户认证系统安全性 并没有帮助
有些人会认为前端进行了加密,可以降低后台的安全性需求,这种错误的观念会造成系统的 安全漏洞
实际上,我们不能对前端做任何的假设,所有跟安全相关的技术,都必须应用在传输通道和后台上

其他意义

如果跳出系统用户安全性的这个范围,前端对密码加密还是有一定意义的
主要是防止这个网站用户密码破解后,被黑客拿去 撞库, 去验证用户在其他平台的账号
你可能又会问,这不也是加强安全性了吗?不是,这是 社会工程学 上的意义
每个网站自己的 用户认证安全性 与其他网站的安全性应当是独立的,这只能防止被窃听到原文的密码被攻击者用在社会学攻击上,而不能改善该网站的安全性

结论

回到一开始的问题,答案是:Web 前端密码加密没有意义,又有意义
这个意义跟多数开发者所想的并不一致,它并不能改善该网站的安全性,它体现在社会工程学上

参考

  • front-end
  • esbuild 为什么快关于图灵完备
    Loading...