用途:面向已懂基础、需要安全默认值的工程师,指导正确实现加密、哈希、签名与密钥管理。覆盖七类常见任务,附带生产可用的 TypeScript/Node.js 示例与反模式表。
主要能力:密码用 argon2(首选)或 bcrypt(cost≥12)哈希与校验,强调用 argon2.verify/bcrypt.compare 做常量时间比较;数据加解密用 AES-256-GCM(带认证的加密),每次加密生成新的 12 字节随机 IV,密钥用 crypto.randomBytes;JWT 用 jose 库做签名与校验,签名算法如 ES256,校验时必须显式传入 algorithms 允许清单;TLS 最低要求 TLS 1.3,可配置 minVersion 与 honorCipherOrder,证书轮换可用 Let's Encrypt/certbot 自动续期,服务间可用 mTLS;Webhook/API 请求签名用 HMAC-SHA256,比较用 crypto.timingSafeEqual 并校验时间戳容差防重放;密钥轮换采用信封加密,用 KMS 包裹 DEK,轮换仅重包 DEK 而非重加密数据;令牌/ID/盐用 crypto.randomBytes 生成。
核心概念:对称与非对称加密、哈希与加密、数字签名、KDF、信封加密。
限制与注意:不要自创密码原语,使用经审计的库;绝不用 MD5/SHA 做密码哈希;不得重用 GCM 的 IV;JWT 校验不可省略算法允许清单,防止 alg:"none" 绕过;签名比较不可用 ===;不要用 Math.random;密码应哈希而非加密;bcrypt 在 72 字节处截断;DEK 不可明文与密文同存;不要为该技能用于通用安全态势或认证授权流程,也不要用它构建自定义算法或协议。若需更深入的算法选型,可参考 references/algorithm-guide.md。首次激活时会检查配套技能是否已安装。