核心用法
该技能为 openclaw 框架提供 TOTP(基于时间的一次性密码)验证能力,用于保护敏感操作。工作流程分为三个阶段:
初始化阶段:运行 npm run generate 生成 Base32 编码的 TOTP 密钥和 QR 码,配置到 Google Authenticator 或 Authy 等应用后,将密钥写入 .env 文件的 TOTP_SECRET 变量。
验证阶段:当用户请求敏感操作时(如查看 .env、修改 openclaw.json、重启网关、删除备份),代理要求用户提供 6 位 OTP 码,通过 node scripts/verify.js <code> 进行校验。
决策阶段:验证通过(exit 0)则执行操作,失败(exit 1)则拒绝访问。
显著优点
- 标准化实现:基于成熟的
otplib库,兼容 RFC 6238 标准,与主流身份验证器应用互通。 - 时间容差设计:窗口设为 2(±1 分钟),兼顾安全性与用户体验,适应设备时间漂移。
- 场景覆盖全面:明确划定 5 类敏感操作场景,形成清晰的安全边界。
- 轻量依赖:仅需 Node.js 环境和单一 npm 包,部署成本低。
潜在缺点与局限性
- 单点依赖:
TOTP_SECRET以明文形式存储于.env,若环境文件泄露,整个验证体系失效。 - 无备份机制:未提及密钥丢失或更换设备的恢复流程,单设备绑定存在可用性风险。
- 固定参数:算法锁定 SHA1、6 位数字、30 秒周期,不支持更安全的 SHA-256/512 或更长周期。
- 人机交互摩擦:每次敏感操作均需用户手动输入 OTP,高频场景下体验下降。
- 时钟同步依赖:服务端与客户端时间偏差超过 1 分钟将导致验证失败,无自动同步机制。
适合人群
- 使用
openclaw框架且需保护关键运维操作的开发者 - 具备基础 Node.js 环境管理能力的技术团队
- 能接受每次敏感操作手动验证的安全敏感型用户
常规风险
- 密钥泄露风险:
.env文件权限管理不当或意外提交至版本控制将导致保护失效。 - 社会工程攻击:攻击者可能诱导用户泄露实时 OTP 码,缺乏防重放或绑定上下文机制。
- 设备丢失场景:未设计密钥轮换或紧急绕过方案,主设备丢失将锁定敏感操作。
- 供应链风险:依赖
otplib及底层加密原语,需持续关注依赖库安全更新。