密码鉴权 (Password Authentication)

1. 定义

密码鉴权 = 用”只有用户知道的秘密(口令 / password)“来验证”你是你”的过程。它是最古老、最普遍的认证 (Authentication) 方式。

先厘清一个常被混用的词:中文”鉴权”常把两件事揉在一起——

  • 认证 (Authentication):你是谁?(密码回答这个)
  • 授权 (Authorization):你能干啥?(通过认证后,系统决定给你什么权限) 密码管的是前者;后者是另一回事(见 mcp.md 的”认证与权限控制”、openclaw.md 的”权限三层”)。

关联:密码只是”所知因素”一种;它在网络上必须经 TLS 传输(见 http.md 的 HTTPS),在 Agent 系统里常以 token / API key 形式出现(见 mcp.mdopenclaw.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.mdopenclaw.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