第 34 讲:Windows Hello 与无密码登录
第 34 讲:Windows Hello 与无密码登录
卷七·安全防护(共 5 讲)
师生对话实录课:AI 当老师、我当 0 基础学生,每讲只发明一个概念。本机实测 2026-08-26。官方锚点:Windows Hello for Business。
开场:密码的三宗罪
🧑🏫 老师:
公司群里一封通报:某同事账号被盗,攻击者拿他的身份登进了 OA、邮箱、甚至工资系统。事后复盘——密码没错在「复杂度」,错在它是一串能被复制、被转发、被存在服务器上的字符:
- 钓鱼:假登录页骗你输一遍,密码就被搬走;
- 撞库:小网站的密码泄露,拿去试大网站;
- 服务器端泄露:你从不被骗,服务方的密码库被拖库、hash 被离线爆破。
共同病根:密码是「你知道的」——而你知道的东西,别人也能知道。
🧑🎓 学生: 所以要换成别人拿不走的东西?
🧑🏫 老师:
对——你拥有 + 你是谁。Windows Hello 的核心,是把登录凭证从「一个字符串」换成「一把锁在设备里的非对称私钥」:你拥有这台设备(私钥绑死在 TPM 芯片里,拷不走);你是谁/你知道——人脸、指纹、或一个只在本机有效的 PIN。认证时设备用私钥签名、服务器用公钥验签,私钥永远不出 TPM——全盘被恶意软件翻一遍也拿不走。
第 1 课:PIN 不是密码
🧑🎓 学生: 「用 PIN 代替密码,不还是一串数字?」
🧑🏫 老师:
区别在 PIN 只在本机有效、且只用来解锁本机的私钥:
| 密码 | Hello PIN | |
|---|---|---|
| 存在哪 | 服务器(hash 后) | 只在你这台机器 |
| 传输 | 登录时传到服务器比对 | 从不离开本机 |
| 服务器知道吗 | 知道 | 不知道 |
| 拿到就能登? | 在任意机器上都能试 | 没有你这台机器就没用 |
别人就算知道你的 PIN,没有你这台设备也登不进去——PIN 是「解锁私钥的本地钥匙」,不是「交给服务器的凭证」。
Hello for Business 把域登录也改成这套:你不再有「域密码」可以被抓(第 4 讲的 LSASS 保险箱里没你的密码了);域控/Entra ID 只存公钥——被抓了也没用(公钥本来就该公开);私钥封在 TPM,下一讲的 Credential Guard 再加一层隔离。
Passkeys/FIDO2 是同族思路搬上全网:每个网站一对非对称密钥,私钥在你设备、网站只存公钥;钓鱼页骗不到私钥(私钥只在真实域名下解锁)。Windows 上 Hello 就是 Passkey 的存储与验证器之一——用指纹解锁网站时,背后正是 Hello。
第 2 课:本机现状实测——Hello 可用吗?
🧑🏫 老师:
查 Hello 状态的标准命令和本机真实输出:
PS> dsregcmd /status | findstr /i "Ngc"
DomainJoined : YES ← 加域了
NgcSet : NO ← Windows Hello 未设置
(AzureAdJoined : NO——纯本地域,非 Entra 混合)
PS> Get-PnpDevice -Class Biometric
(空——没有指纹/人脸硬件)
PS> get-tpm
TpmPresent : False ← 这台机器根本没有 TPM!证据链完整:无生物识别硬件 + 无 TPM + NgcSet NO → Hello 在这台机器不可用,登录仍走密码——而第 4 讲验过「LSASS 里存着活动凭据、本机 Credential Guard 也没跑」。这台机器的凭据现状是完整的一代方案:密码登录、哈希常驻内存、无虚拟化隔离——卷一第 1 讲那道「护账户」的题,这台机器三道防线里的两道(Hello/CG)都缺席。不是批判配置,而是把「书本默认」和「真实现状」对上——巡检就该这么查。
第 3 课:回到令牌——Hello 只换了「开门的方式」
🧑🏫 老师:
和第 5 讲最关键的衔接:Hello 验证你(生物特征/PIN 解锁私钥)通过后,LSA 照样创建 Access Token 挂到进程上——和密码登录产出的令牌没有任何区别。Hello 改造的是第 4 讲的「认证」那一步;门后的世界(令牌 → DACL → 访问检查)原封不动——用指纹登录后跑 whoami /all,SID、组、权利和密码登录一模一样。
密码是「你知道的」,Hello 是「设备持有 + 你本人解锁」。Hello 只换了开门的方式,门后还是那套令牌。
收束
你现在会了: 密码为什么防不住(三宗罪);Hello 怎么用「设备 + 生物特征/PIN」替代密码(私钥不出 TPM);PIN 不是密码;Passkey 同族认脸;Hello 之后令牌世界不变。本机现状三件套实测(NgcSet NO / 无生物识别 / 无 TPM)——凭据仍是第一代方案的活标本。
下一讲才需要: 密码被换掉了,可还没换掉的、藏在 LSASS 里的那些凭据怎么办——Credential Guard。
← 上一章:第 33 讲:.NET 模拟
· 回书稿索引
→ 下一章:第 35 讲:Credential Guard