You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

为何Windows仍采用LM/NTLM弱哈希算法,未用BCRYPT/SHA512等安全算法?

关于Windows密码哈希算法的常见疑问解答

1. 为什么Windows系统还在使用“弱”哈希算法保护用户密码?

首先得澄清一个误区:现在默认情况下Windows已经彻底禁用了LM哈希,NTLM也只是作为兼容性选项存在,并非当前主流的密码保护方案。之所以你还能看到它的痕迹,核心原因绕不开两点:

  • 遗留系统与应用的强依赖:很多企业环境里还在运行Windows XP、Server 2003这类老系统,或是一些十几年前的定制化工业应用、嵌入式设备,它们只支持NTLM甚至LM。如果微软直接砍掉这些算法,会导致大量业务系统直接瘫痪,这是企业用户绝对无法接受的。
  • 向下兼容的产品策略:Windows作为全球装机量最大的桌面系统,必须保证新旧设备、系统之间的互操作性。比如你用Windows 11访问一台2008年的文件服务器,总不能因为算法不兼容就直接连不上吧?

另外,现在Windows的主流密码保护早就用上了更安全的方案:本地账户默认使用NTLMv2(比原始NTLM强太多,加入了时间戳和随机盐,大幅提升抗暴力破解能力),域环境则优先采用Kerberos协议;Windows 10及以后的版本更是原生支持BCRYPT、SHA-512等现代哈希算法存储本地账户密码,只是需要通过组策略或PowerShell手动配置开启。

2. 为什么微软不直接替换LM/NTLM为BCRYPT、SHA512这类更安全的算法?

这个问题本质上是安全与兼容性的艰难权衡

  • 历史包袱太重:NTLM从Windows NT时代就开始普及,几十年下来,无数应用、服务、脚本都深度依赖它的认证逻辑——比如老版本的.NET应用、Active Directory的遗留功能、第三方单点登录系统等等。直接替换意味着这些系统全部要重构,成本高到几乎不可能落地。
  • 现代算法的适配成本:BCRYPT这类算法为了对抗暴力破解,设计了更高的计算复杂度,但老硬件(比如嵌入式设备、老旧服务器)可能跑不动,会直接导致性能崩盘。而且域环境里的Kerberos已经用了更安全的加密逻辑,NTLM只是作为故障 fallback 存在。
  • 微软其实一直在逐步过渡:这些年微软一直在推动淘汰NTLM,比如Windows 10和Server 2016之后,默认会限制NTLM的使用场景,通过组策略可以完全禁用NTLM;对于本地账户,也可以用Set-ADAccountPassword这类PowerShell命令,直接配置使用SHA-512或BCRYPT哈希。

总结来说:不是微软不想用更安全的算法,而是不能一下子抛弃几十年积累的生态,只能在安全和兼容性之间找平衡,逐步完成过渡。


内容的提问来源于stack exchange,提问作者99Con

火山引擎 最新活动