什么是双因素认证(2FA):机制、实现与风险
副标题 / 摘要 双因素认证通过“密码 + 第二因素”显著提升账号安全。本文讲清原理、实现方式与常见风险。 目标读者 负责账号安全的工程师 需要设计登录流程的开发者 关注安全合规的团队 背景 / 动机 密码容易泄漏,单因素认证已不足以抵御现代攻击。 2FA 通过引入第二因素,大幅降低账号被盗风险。 核心概念 第二因素:你“拥有”或“是”的证明 TOTP:基于时间的一次性密码 SMS:短信验证码(风险较高) 设备绑定:硬件或设备认证 实践指南 / 步骤 选择合适的第二因素(优先 TOTP) 实现绑定与解绑流程 提供恢复机制(备用码) 限制验证码尝试次数 记录安全日志与告警 可运行示例 下面示例用 Python 生成 TOTP: import time import hmac import hashlib import base64 def totp(secret, interval=30, digits=6): key = base64.b32decode(secret) counter = int(time.time() // interval) msg = counter.to_bytes(8, "big") h = hmac.new(key, msg, hashlib.sha1).digest() offset = h[-1] & 0x0F code = (int.from_bytes(h[offset:offset+4], "big") & 0x7fffffff) % (10 ** digits) return str(code).zfill(digits) if __name__ == "__main__": print(totp("JBSWY3DPEHPK3PXP")) 解释与原理 2FA 的安全性在于“攻击者必须同时获取两种因素”。 TOTP 在短时间内有效,避免重放攻击。 ...