alternative-intelligence-cp/ncrypto
GitHub: alternative-intelligence-cp/ncrypto
用 Nitpick 语言从零原生实现的密码学算法库,无需 C 绑定即可提供对称/非对称加密、签名、哈希与密钥派生等全套原语。
Stars: 1 | Forks: 0
# ncrypto
Nitpick 原生密码学算法库。
此仓库提供了标准加密哈希和非对称算法的纯 Nitpick 实现,无需使用 C shim 即可处理基本的位运算和数学原语。
## 文档
有关导出的公共接口和函数签名的详细信息,请参阅 [API 文档](docs/API.md)。
## 功能
### 哈希算法
- **MD5**
- **SHA-1**
- **SHA-256**
- **SHA-512**
- **SHA-3 (Keccak)**
- **BLAKE2b**
### 编码与格式
- **Base64**:带有恒定时间解码路径的编码器和解码器。
- **PEM**:证书和密钥解析器。
- **ASN.1 DER 层**:用于创建 AST 的嵌入式原生解析器和编码器(Sequences、OIDs、Octet Strings),用于在 RSA 签名和 PKCS#8/SPKI payload 中格式化 `DigestInfo`。
### 对称加密
- **AES-GCM**:使用 Galois/Counter Mode 的高级加密标准,用于带有关联数据的认证加密(AEAD)。包含用于 GHASH 的原生恒定时间 `gf128_mul` 乘法。
- **ChaCha20-Poly1305**:高速认证加密。
### 非对称加密
- **BigInt**:支持加法、减法、乘法、二进制长除法和模幂运算的动态任意精度算术库。
- **RSA**:
- PKCS#1 v1.5 填充类型 1 和类型 2(签名和加密)。
- 恒定时间解密和验证路径,可缓解 Bleichenbacher 攻击和时序攻击。
- 内置 Miller-Rabin 素性测试和大素数生成。
- **椭圆曲线密码学 (secp256k1)**:
- 基础有限域数学,包含完整的点加法和倍乘。
- 恒定时间标量乘法 (`ecc_scalar_mul_ct`),通过恒定时间交换方法抵抗时序分析。
- **ECDSA**:完整的签名生成和验证。
- **ECDH**:利用 `secp256k1` 进行共享密钥推导。
- **Curve25519 (X25519)**:
- 完整的恒定时间有限域算术运算 (`gf_add`, `gf_sub`, `gf_mul`, `gf_sqr`, `gf_inv`)。
- **X25519 ECDH**:从 TweetNaCl 设计原生映射的 Montgomery ladder 实现。
- **Ed25519**:
- Twisted Edwards 曲线点加法、倍乘和缩放。
- EdDSA 签名生成和验证。
### 密钥派生函数
- **Argon2id**:符合 RFC 9106 标准的内存密集型密码哈希函数。高度优化的完全展开的内部 BLAKE2b `G` 压缩块,并且内存填充边界在堆上受到安全限制。
- **PBKDF2**:基于 HMAC 的密钥派生。
- **HKDF**:基于 HMAC 的提取与扩展密钥派生。
## 安全性
所有依赖于私钥或数学排列的密码学结构都经过严格的设计和测试,以在 Nitpick 中实现原生的恒定时间无分支执行。本项目明确依赖 LLVM 标量降低配置来发出特定指令(例如 `cmov`、`atomicrmw`),以减少可观察的时序差异。内存泄漏和大栈问题已受到严格审计并在堆上安全管理,以符合 Nitpick 的约束。
敏感内存操作会通过 `secure_zero` 利用 `atomic` 逻辑自动擦除,以防止编译器将其作为死存储消除。
### 持续模糊测试
所有核心 API 边界均通过在 C-ABI 兼容的测试工具中运行的差分模糊测试引擎进行了强化。针对标准 Python `cryptography`、`pynacl` 和 `argon2-cffi` 实现进行了长达数小时的广泛属性测试,确保对任意伪随机序列具有精确的内存安全性和数学边界处理能力。
标签:Nitpick, 云配置检测, 加密算法, 哈希算法, 密码学库, 对称加密, 自动化审计, 非对称加密