Skip to content

v0.4.1

Latest

Choose a tag to compare

@xbzbing xbzbing released this 18 Aug 11:07

0.4.1 安全增强:OTP 密钥静态加密(AES-256-GCM)(PR #6,by adra2n)。

变更

  • OTP 密钥加密存储:TOTP secret 落盘前以 AES-256-GCM 密封(v1.<iv>.<tag>.<cipher>),读取需 32 字节主密钥——$DSH_HOME 文件泄露不再直接交出第二因素根密钥;
  • 主密钥来源:环境变量 DSH_AUTH_GATEWAY_MASTER_KEY(hex/base64,建议生产置于 KMS / Docker secret / 加密卷)> 自动生成的 auth-gate/otp-master.key(0600);旧明文 otp.json 零迁移兼容(按 v1. 前缀判断);
  • 错误分类:解密失败不再退化为裸 500——otp-master-key-missing(503)/ otp-master-key-invalid(500)/ otp-secret-corrupted(500)均以带说明的 JSON 返回,指引恢复路径(恢复 key 或删 otp.json 重绑);
  • 重放水印钳制:未来步验证码仍可登录,但 lastCounter 不再超前——避免合法当前/下一步验证码被永久当作重放、把用户锁在 TOTP 外;
  • 运维.gitignore 忽略 otp-master.keydsh-auth-gateway-reset 提示丢失认证器时 otp.jsonotp-master.key 一并删除;
  • 测试 104 → 116(新增:磁盘密文、往返、篡改拒绝、密钥缓存、env 覆盖、明文迁移、缺失 key 不再静默再生成、typed 错误码、水印钳制回归)。

已知限制

  • 主密钥不支持热轮换(进程内缓存一次);轮换需删除 otp.json + key 文件后重新绑定;
  • 默认自动生成密钥文件时,密钥与密文同目录,仍属本机可信模型——生产请用环境变量注入主密钥并置于加密卷/外部密钥管理。

安装

dsh plugin --profile web add dsh-auth-gateway   # npm 0.4.1
dsh plugin --profile web add github:xbzbing/dsh-auth-gateway#v0.4.1