Web 前端慢加密

Web 前端慢加密

💡 原文中文,约7100字,阅读约需17分钟。
📝

内容提要

文章讨论Web前端慢加密:将bcrypt等慢哈希放到客户端执行,服务端仅存储结果并加盐防预计算,以增加破解成本、减少明文泄露和撞库收益,同时涉及强度自适应、对抗GPU及性能优化。

🔎

延伸解读

前端慢加密的适用场景与限制

前端慢加密适合对密码安全要求高、且用户设备性能差异不大的网站。它能减少服务器计算压力,并防止明文密码泄露。但若用户设备性能过低,加密可能耗时过长,影响登录体验。文章指出,注册和登录最好在性能相近的设备上进行,否则可能因算力不足导致等待时间过长。

盐值在前端加密中的作用与公开性

盐值用于防止攻击者预计算慢加密结果。由于前端加密的盐值必须公开(如通过接口获取),攻击者仍可针对特定盐值制作字典。但独立盐值可定期更换,增加攻击成本。文章建议盐值可由前端生成,并随密码一起提交,后端存储。定期更换盐值相当于自动帮用户更换密码,使旧字典失效。

性能优化与对抗GPU的策略

前端慢加密需优化性能,避免无谓内耗。文章提到使用asm.js或Flash提升计算速度,并利用emscripten将C/C++编译为asm.js。对抗GPU方面,可选用内存依赖大的算法(如scrypt)或混合多种算法,增加GPU并行难度。但自行设计算法风险高,不推荐。

前端慢加密的额外安全价值

除了增加破解难度,前端慢加密还能减少明文泄露风险,防止网站私藏明文密码,并增加撞库攻击成本。攻击者每次尝试都需消耗大量计算,瓶颈从网速转为算力。这类似工作量证明,能有效遏制在线撞库。但需注意,网页本身恶意代码或用户系统恶意软件仍可能窃取明文。

❓

Q&A

什么是Web前端慢加密?

Web前端慢加密是指将bcrypt等慢哈希算法放在客户端执行,服务端仅存储加密结果并加盐防止预计算,从而增加破解成本、减少明文泄露和撞库收益。

为什么慢加密能提高密码安全性?

慢加密通过增加单次加密的计算时间,使得暴力穷举破解的速度大幅降低。例如加密时间从1微秒提高到10毫秒,攻击者每秒尝试次数从100万降到100,破解时间增加一万倍。

前端慢加密如何防止攻击者使用预先计算的字典?

通过加盐,例如将用户名或随机生成的盐值与密码结合后再进行慢加密,使得相同密码在不同用户下产生不同的慢加密结果,攻击者无法预先计算通用字典。

前端慢加密有哪些缺点?

主要缺点是消耗大量客户端计算资源,可能导致低配置设备登录缓慢;同时服务器仍需存储和验证,但计算负担转移到了客户端。

如何根据用户设备性能调整前端慢加密的强度?

可以采用强度可变方案:注册时评估设备算力,确定加密步数并保存;登录时使用该强度。也可动态调整,根据常用设备性能自动调低或调高强度。

前端慢加密如何对抗GPU破解?

可以选用内存依赖大的算法(如scrypt)制造显存瓶颈,或混合多种算法增加移植难度,以及设计包含大量条件分支的算法以利用CPU优势。

前端慢加密除了增加破解难度还有什么意义?

还能减少明文密码泄露风险(前端加密后明文不出浏览器)、防止网站私藏明文密码、增加撞库攻击成本(攻击者需消耗大量计算资源)。

🏷️

标签

➡️

继续阅读