认证不是“看到正确密码就放行”这么简单。完整链路包括:用户声明身份、系统收集证据、验证证据与身份的绑定、建立可持续使用的会话,并在风险变化、恢复账户或注销时正确撤销信任。任何一环薄弱,攻击者都可能绕过前面最强的因素。

标识用于回答“声称是谁”,验证用于回答“证据是否支持这个声明”,授权用于回答“该身份能做什么”。会话则把一次成功验证延续到后续请求。四者必须分开设计、共同审计。
认证过程至少有两步:识别阶段提交用户名、账号或设备标识;验证阶段提交能证明身份绑定的认证器。用户名通常不保密,真正的安全性来自认证器、协议和验证端状态。
常见认证证据分成四类:知识因素是密码、PIN 与恢复短语;拥有因素是智能卡、安全钥匙或持有的设备;静态生物特征是指纹、面部、虹膜;动态生物特征是声音、签名轨迹、打字节奏。位置、设备信誉与行为异常更适合作为风险信号,而不是单独证明身份。
多因素认证要求来自不同类别的独立证据。密码加 PIN 仍是两个知识秘密;密码加手机确认才跨类别。所谓独立还要求失败模式不同:若密码和短信验证码都通过同一被接管邮箱恢复,就可能在恢复路径重新合并为单点故障。
认证强度不仅取决于因素数量,还取决于抵抗钓鱼、重放、验证端泄露、恶意客户端和恢复绕过的能力。两个都可被钓鱼页面实时转发的因素,不一定强过一个与站点域名绑定的公钥认证器。
密码的优势是部署便宜、可撤销、无需专门硬件;弱点是人类会选择可猜、复用且容易被钓鱼的秘密。攻击可分为在线与离线两类。在线攻击向服务器提交猜测,能被速率限制、风险检测与逐步延迟约束;离线攻击发生在密码摘要泄露后,攻击者可在自己的设备上高速试算,不受账户锁定影响。
攻击策略包括针对单账户的字典猜测、用一个热门密码横扫大量账户的密码喷洒、利用其他站点泄露凭据的撞库、观察键盘与钓鱼窃取、恶意客户端记录输入,以及趁已登录终端无人看守直接接管。单纯设置“连续五次失败锁死”会被用来拒绝服务,因此应结合账户与请求端维度限速、渐进退避、异常告警和安全恢复。
服务器不应存明文或可逆加密密码,而保存独立随机盐、算法参数和慢速密码派生结果:
stored = KDF(password, salt, cost)
登录时用保存的盐和参数重新计算,并用恒定时间比较。盐不需要保密,它使相同密码产生不同摘要,破坏跨账户预计算和彩虹表复用;慢速、耗内存的 KDF 则提高每一次离线猜测成本。工作因子应根据服务器容量校准并可随时间升级,不能把通用快速摘要函数直接当密码哈希。

密码策略应优先鼓励足够长、可记忆且唯一的密码短语,拦截已知泄露与常见口令,允许密码管理器和粘贴。机械要求每隔短期更换、强制复杂字符而限制长度,常会诱发可预测变体。只有在泄露证据、风险事件或管理员重置后才必须更换,并让旧会话与恢复令牌同步失效。
拥有因素从简单存储卡到可执行密码运算的智能令牌。只读或磁条式存储卡容易复制,通常必须配合 PIN;智能卡与安全钥匙能在内部保存密钥并执行运算,使秘密不必交给主机。
动态口令令牌可按时间或计数器生成一次性口令。服务器与令牌共享种子并保持时间窗口或计数同步;一次性特性抵抗事后重放,却不自动抵抗实时钓鱼:攻击者可以在有效窗口内把用户输入的 OTP 转发到真实站点。因此高风险操作还需要把确认内容与交易绑定,而不能只弹出六位数字。
挑战—应答协议更一般。服务器生成不可预测、只用一次的随机挑战 r,认证器计算与 r、身份和上下文绑定的响应;服务器验证后立即消耗挑战。挑战必须高熵、短时有效、绑定会话与用途,否则旧响应仍可能被重放或被挪作别的操作。
令牌的工程问题包括丢失、替换成本、读卡器可信度、恶意主机窃取 PIN、硬件复制与侧信道。PIN 只是在本地解锁令牌时,服务器不应误把 PIN 本身当作远程拥有证明。
生物识别先在注册阶段采样、提取特征并形成模板;验证时重新采样并计算相似度。原始图像与模板都是敏感数据,应最小化收集、隔离保护并限制用途。模板并非必然不能反推或跨系统关联,不能因为它不是照片就降低保护级别。
阈值决定系统的错误取舍。阈值宽松会提高误接受率 FAR,让冒名者更容易被接受;阈值严格会提高误拒绝率 FRR,让本人更常失败。两条曲线的交会点可用于比较算法,但生产阈值应由业务损失、传感器、环境和人群数据决定,而非追求一个漂亮的单一数字。
攻击者可能复制指纹、播放录音、展示照片、替换采集设备或重放模板。防御包括活体与复制检测、可信采集设备、挑战引导的动态动作、模板加密与设备内匹配。生物特征不可像密码那样轻易更换,最稳妥的角色通常是本地解锁安全硬件中的密钥,而不是把指纹模板上传给每个网站。
远程认证面对窃听、篡改、重放和假服务器。TLS 保护传输仍不等于协议正确:客户端可能连到钓鱼域名,服务器可能接受重复挑战,或响应没有绑定预期用途。可靠协议要验证双方上下文、使用新鲜挑战,并把身份、站点与操作纳入签名或 MAC。
FIDO2 由 WebAuthn 与认证器通信协议共同组成。注册时认证器为某个依赖方生成密钥对,服务器保存公钥和凭据标识;登录时服务器发送随机挑战,浏览器把挑战、站点源信息与依赖方标识交给认证器,认证器在本地进行用户在场/用户验证并签名。服务器检查挑战、站点源信息、依赖方标识哈希、签名与计数等状态。

私钥不出设备,服务器泄露公钥数据库不会直接给攻击者登录秘密;凭据绑定站点域名,钓鱼站无法为真实站点取得有效签名。通行密钥可以设备绑定,也可由受保护的凭据管理器跨设备同步。指纹或设备 PIN 通常只是本地解锁私钥,生物信息不交给网站。
实施时仍要验证预期 origin 与 rpId,挑战必须随机且一次性,敏感操作要明确要求用户验证。若注册或恢复仍允许仅靠弱短信完成,攻击者可以先接管恢复渠道,再为自己注册新的强认证器。
多因素不是越多越好,而是要覆盖威胁模型。密码加 TOTP 能抵抗单纯密码泄露;密码加域名绑定安全钥匙还能抵抗大部分钓鱼转发;设备证书加本地用户验证适合企业托管终端。短信可作为覆盖面广的过渡或恢复信号,但面临号码转移、恶意应用读取与实时转发,不宜作为高价值账户的最高保障。
风险自适应认证可根据新设备、异常位置、不可达速度、匿名网络、失败模式与交易价值要求升级验证。风险信号只能调整流程,不能秘密成为无法申诉的永久封禁;对敏感操作应重新认证,并明确告诉用户验证的是哪项操作。
密码重置本质上是另一条登录协议,安全强度不能低于正常认证。请求页面应返回一致信息与近似耗时,避免枚举账号;重置令牌要高熵、短时、一次性、绑定账户与用途,并只存摘要;完成后通知用户、撤销相关会话与恢复令牌,但不要擅自替用户生成可预测密码。备用码应离线保存、每个仅用一次。
客服恢复需要严格身份核验、最小权限、完整审计与高风险延迟。安全问题答案通常低熵且可从社交信息推断,不应成为唯一恢复证据。恢复成功后应提醒原渠道,并允许用户报告非本人操作。
HTTP 请求彼此独立,服务器用会话标识把后续请求绑定到已认证身份。会话标识在有效期内等价于认证结果,因此必须由密码学安全随机源生成,内容无业务含义,不能放用户身份或权限明文。

登录成功与权限提升后必须轮换会话标识并使旧值失效,防止会话固定。Cookie 应通过 HTTPS 传输,设置 Secure、HttpOnly 和合适的 SameSite,并收窄 Domain 与 Path;会话标识不放 URL,以免进入历史、日志和引用头。HttpOnly 降低脚本直接读取风险,但不能阻止恶意脚本代表用户发请求,仍需防 XSS 与 CSRF。
生命周期同时需要空闲超时、绝对超时和必要时的周期轮换。注销应在服务器端撤销会话,而不只是删除浏览器 Cookie;密码变更、账户恢复、MFA 变更与高风险事件应要求重新认证,并提供“查看和结束其他会话”。敏感响应应避免缓存。
客户端攻击包括猜测、键盘记录、恶意采集器与生物伪造;主机攻击瞄准密码摘要、令牌种子、公钥登记和生物模板;传输攻击包括窃听、重放和中间人;流程攻击则利用注册、重置、MFA 换绑和客服。木马可捕获所有传统输入,拒绝服务可滥用锁定策略。
对应防线应成体系:客户端采用可信输入路径与设备完整性;主机使用慢速密码哈希、密钥隔离、最小权限和告警;协议使用 TLS、新鲜挑战、域名/交易绑定;业务流程执行一致响应、限速、延迟通知和双人复核;MFA 注册、删除与恢复全部视为高风险操作。
ATM 类系统说明“PIN 被加密”远远不够。若卡号、金额与交易指令可被篡改,攻击者仍能重放、改金额或冒充终端。认证协议必须同时保护消息完整性、设备身份、新鲜性与交易上下文,并用网络分区和端到端加密缩小暴露面。
审计至少记录身份标识、认证器类型、结果、风险信号、会话轮换、恢复与因素变更,但绝不记录密码、OTP、私钥或完整恢复令牌。日志也要防篡改、受访问控制并设置合理保留期。
我们在沙盒环境中使用系统密码学库生成两份 16 字节随机盐,以同一密码执行 scrypt,并用恒定时间比较验证;随后模拟登录前后会话标识轮换。输出为:
salt_bytes= 16 hash_bytes= 32 same_password_same_hash= false
verify_correct= true verify_wrong= false
session_rotated= true old_session_invalidated=true结果证明同一密码配不同盐不会产生相同摘要,正确密码可复算验证,错误密码失败;登录后标识已更换且旧会话明确失效。这个实验只验证关键性质,不代表参数已适合生产负载;实际部署必须基准测试内存、延迟、并发与拒绝服务承受能力。
上线验收可以沿完整生命周期检查:注册是否验证联系方式和认证器绑定;登录是否限速且不泄露账号存在;密码是否使用随机盐与慢速 KDF;挑战是否一次性并绑定站点上下文;因素变更是否重新认证;重置是否短时、一次性并通知;登录与提权后是否轮换会话;注销是否服务端撤销;日志是否足以追责但不包含秘密。
强认证不是一个登录组件,而是一条闭环:安全注册、抗攻击验证、受保护会话、可审计变更、等强恢复与及时撤销。最弱的旁路决定整个账户的真实强度。