用途:审查加密、解密、签名、验签、哈希相关代码,以及密钥管理、TLS/mTLS 配置、JWT 与会话令牌、API 签名、密码与密钥存储、安全相关随机数质量。不适用于设计新原语或协议、CTF 破解密码学、通用代码审查或密码破解,这些应使用相应专门技能。
主要检查项:密文是否经过认证(推荐 AES-GCM、ChaCha20-Poly1305 或 AES-CBC+HMAC 的 encrypt-then-MAC,反对单独 CBC、ECB、CTR 无 MAC、MAC-then-encrypt);nonce/IV 处理(GCM 与 ChaCha20 不得复用 (key, nonce),CBC 每消息使用不可预测随机 IV,CTR 不得复用计数器);密钥来源、用途单一性、轮换路径与 KDF(口令用 Argon2id、scrypt、bcrypt、PBKDF2-HMAC-SHA256,不用裸 SHA-256);密码存储与恒定时间比较;随机数须来自 CSPRNG;签名是否真正验证、算法是否来自消息、JWT 的 kid/jku/x5u 等攻击者可控字段与声明校验;TLS 版本与密码套件、证书与主机名验证;长保密期数据的后量子风险。另需关注重放、签名范围绑定、降级、解密与错误处理预言机、序列化规范化等协议层问题。
使用方式:按顺序执行检查清单,结合 rg 搜索常见误用模式,如 AES/ECB、固定或零 IV、硬编码密钥、math/rand 等弱随机、HMAC 使用 == 比较、JWT 关闭验证、InsecureSkipVerify 等;密钥历史可用 gitleaks detect --source . --redact 检查;TLS 可用 testssl.sh --severity MEDIUM、sslyze --regular、nmap --script ssl-enum-ciphers 评估。获取公开公告或规范时可使用 curl -sL "https://defuddle.md/<url>",但 JSON/API 响应、需认证或 JS 渲染页面应直接抓取,且不要把对手基础设施或客户主机经此代理。
限制:该技能面向误用审计,不替代密码学家对原语与协议的正式评审;每条发现应说明涉及的构造、具体误用、可实现的攻击、受影响数据与保密期,以及具体修复方案(命名库、模式与参数),否则建议难以落实。