SuperAPI AI 工具集

libsodium

安全与审计

查看项目

更新于 10-15 18:52

技能介绍

用途:libsodium 面向应用层加密,提供带合理默认值的现代密码学原语,API 抗误用,经多第三方审计,采用宽松的 ISC 许可,并有常量时间实现。适用于钱包应用、加密存储等场景(不含 secp256k1,比特币场景需另行搭配)。

主要能力:对称认证加密(crypto_secretbox,XChaCha20-Poly1305)、流式加密(crypto_secretstream)、公钥加密(crypto_box,X25519+XSalsa20-Poly1305)、匿名封装(crypto_box_seal)、签名(crypto_sign,Ed25519)、密钥交换(crypto_kx)、口令哈希(crypto_pwhash,Argon2id)、通用哈希(crypto_generichash,BLAKE2b)、HMAC、密钥派生(crypto_kdf,HKDF/BLAKE2b)、随机字节(randombytes_buf)、常量时间比较(sodium_memcmp)与内存擦除(sodium_memzero)。

使用方式:官方文档建议通过 mcp__documentation__fetch_docs 指定 technology: libsodium 获取文档。Rust 新代码推荐纯 Rust 的 dryoc,也可用绑定 C 库的 sodiumoxide;示例依赖如 dryoc = "0.7"、sodiumoxide = "0.2"。Python 使用 PyNaCl,JavaScript 使用 libsodium-wrappers(npm install libsodium-wrappers),Java/Kotlin 使用 lazysodium-android,Swift 使用 Sodium。

限制与注意事项:绝不可复用同一 (key, nonce) 对;MAC 与签名比较应使用常量时间比较;主密钥口令哈希应采用 sensitive 配置而非 interactive;不应自行选择曲线或使用未认证的 ChaCha20/Salsa20;sodium_memzero 只是尽力擦除,长期驻留密钥可结合 Protected 类型。资料还提示该技能不适用于 SQLite 加密、age 文件加密格式、比特币 secp256k1、TLS、服务端口令存储后端和硬件密钥等场景,应改用对应专用方案。部分平台兼容问题(如 Android JNA 缺少 .so、iOS arm64 模拟器崩溃、dryoc 与 libsodium-sys 版本不匹配)需按故障排查表处理。