密码鉴权 (Password Authentication)
1. 定义
密码鉴权 = 用”只有用户知道的秘密(口令 / password)“来验证”你是你”的过程。它是最古老、最普遍的认证 (Authentication) 方式。
先厘清一个常被混用的词:中文”鉴权”常把两件事揉在一起——
- 认证 (Authentication):你是谁?(密码回答这个)
- 授权 (Authorization):你能干啥?(通过认证后,系统决定给你什么权限) 密码管的是前者;后者是另一回事(见
mcp.md的”认证与权限控制”、openclaw.md的”权限三层”)。
关联:密码只是”所知因素”一种;它在网络上必须经 TLS 传输(见
http.md的 HTTPS),在 Agent 系统里常以 token / API key 形式出现(见mcp.md、openclaw.md的 Gateway 鉴权), wider 安全边界见network-security.md。
2. 核心概念
| 概念 | 含义 |
|---|---|
| 认证三因素 | 所知(密码/答案)、所有(手机/硬件密钥)、所是(指纹/脸)。密码 = “所知”因素 |
| 注册 vs 登录 | 注册时存密码的哈希(不是明文);登录时比哈希 |
| 哈希 + 盐 (salt) | 对密码做慢哈希(bcrypt/scrypt/Argon2)+ 每用户随机盐,防彩虹表/相同密码互推 |
| 传输安全 | 密码必须经 HTTPS/TLS 传,否则被中间人窃听 |
| 会话/凭证 | 认证通过后发 session 或 token(JWT / cookie),后续请求凭它,不必每次输密码 |
| 密钥/令牌 ≠ 密码 | token/API key 是系统发放的可撤销凭证;密码是用户记忆的秘密,性质不同(呼应 mcp.md) |
3. 工作原理(登录流程)
用户 ──(用户名 + 密码,走 HTTPS)──▶ 服务端
│ 1. 取该用户存的 salt + hash
│ 2. 算 hash(输入密码 + salt)
│ 3. 比对 == 存着的 hash?
▼
一致 → 认证通过 → 发 session/token
不一致 → 拒绝
关键点:服务端永远不存明文密码,只存”盐 + 哈希”。即使数据库泄露,攻击者也拿不到能直接用的明文口令(只能离线暴力破解哈希)。
4. 常见攻击与防护
| 攻击 | 说明 | 防护 |
|---|---|---|
| 暴力/字典破解 | 穷举或常用密码试 | 限速、失败锁定、强密码策略、CAPTCHA |
| 彩虹表 | 预算哈希反查明文 | 加盐(每用户随机盐,使预表失效) |
| 明文存储泄露 | 库被拖库直接暴露 | 只存哈希+盐,绝不明文 |
| 中间人窃听 | 网络传输被截 | HTTPS/TLS 加密通道 |
| 撞库 (credential stuffing) | 用别处泄露的账密批量试 | 2FA、异地登录提醒、风控 |
| 钓鱼 | 骗你在不经意处输密码 | 用户教育、2FA、passkey |
5. 密码的固有问题与演进
- 固有问题:人记不住强密码 → 弱密码 / 跨站重用;服务端集中存储是”蜂蜜罐”,一旦泄露影响大。
- 增强:
- 2FA / MFA:再叠加”所有”(手机验证码/硬件密钥)或”所是”(生物),即使密码泄露也进不来。
- 口令管理器:生成/保管随机强密码,解决”记不住”。
- 无密码 (Passkey / WebAuthn / FIDO2):基于公钥密码学,设备持有私钥、服务端存公钥,免输密码且抗钓鱼——是密码的演进方向。
- SSO / OAuth:一次登录多处可用(注意 OAuth 是授权框架,常包着认证)。
6. 常见误区
- ❌ “鉴权 = 授权” → 认证(你是谁)和授权(你能干啥)是两件事,别混。
- ❌ “明文存密码没事,库很安全” → 拖库随时发生;必须哈希+盐,明文存储是重大事故。
- ❌ “用 MD5/SHA1 存密码就安全” → 这些太快、易被 GPU 暴力/彩虹表;要用 Argon2 / bcrypt / scrypt 这类慢哈希。
- ❌ “加了 HTTPS 就绝对安全” → TLS 只防传输窃听,不防钓鱼、服务端泄露、弱密码。
- ❌ “token / API key 就是密码” → 它们是系统发放的可撤销凭证,性质和用户记忆的口令不同(呼应
mcp.md、openclaw.md)。 - ❌ “盐随便加 / 全局一个盐” → 盐要随机、每用户唯一、足够长;全局盐或弱盐仍可被针对性破解。
7. 延伸阅读 / 关联概念
- SSH 公钥认证 — 私钥留在客户端、公钥放入远端
authorized_keys,与密码认证形成对照;见ssh.md - 网络安全 — 更宽的安全边界(防火墙/注入/攻防);见 network-security.md
- HTTP / HTTPS — 密码传输所依赖的加密通道;见
http.md - MCP — 工具的 token 鉴权与权限控制;见
mcp.md - OpenClaw — Gateway 的 token / 密码 / 设备身份鉴权与三层权限;见
openclaw.md - Agent 安全 — 最小权限、提示词注入(注入漏洞的 AI 版);见
../ai-agent-guide/agent_security.md - 网关 (Gateway) — 网络层出口常配鉴权/NAT;见
gateway.md