Lumoin/Lumoin.Veridical

GitHub: Lumoin/Lumoin.Veridical

一个 .NET 高级密码学库,为凭证与身份系统提供零知识证明、多项式承诺、BBS 签名和 split-ECDSA 等核心原语。

Stars: 1 | Forks: 0

Lumoin Veridical wordmark: a circular emblem in gradient indigo hues followed by the project name in matching lettering. # Lumoin.Veridical **一个用于高级密码学的 .NET 技术栈:零知识证明系统、多项式承诺、折叠方案、选择性披露签名,以及 split-ECDSA 独占控制签名。** ![Main build workflow](https://static.pigsec.cn/wp-content/uploads/repos/cas/bb/bb51d5b69bce5014bc5094b4d37ede91bb16d9341f5ab31f8afd4d9aa8c114ce.svg) ## 什么是 Veridical? Veridical 是一个超越了签名和哈希的 .NET 密码学库:基于 rank-1 约束系统的零知识证明、多项式承诺方案、Nova 风格的折叠,以及 BBS 选择性披露签名。它允许凭证和身份系统采用这些原语,而无需绑定到任何特定的曲线、证明系统或硬件后端。 它被设计为凭证和身份技术栈的平级组件,而非某个特定栈的依赖项。密码学材料永远不会以裸露字节的形式暴露:域元素、群元素和多项式是语义类型,在由内存池支撑的内存中携带 `Tag` 元数据。 ## 库 | 库 | 用途 | NuGet | |---------|---------|:-----:| | **Lumoin.Veridical.Core** | 域和群算术(BLS12-381、BN254、P-256)、多线性多项式、Fiat-Shamir 转录、R1CS、Spartan 证明系统、Hyrax/BaseFold/Ligero 多项式承诺、P-256 ECDSA、Nova 风格折叠、Bulletproof 范围证明、兼容 circomlib 的 Poseidon,以及 Merkle 集合承诺 | [![NuGet](https://img.shields.io/nuget/v/Lumoin.Veridical.Core.svg?style=flat)](https://www.nuget.org/packages/Lumoin.Veridical.Core/) | | **Lumoin.Veridical.Bbs** | 具有不可链接选择性披露证明的 BBS 多消息签名(IETF 草案,BLS12-381-SHA-256) | [![NuGet](https://img.shields.io/nuget/v/Lumoin.Veridical.Bbs.svg?style=flat)](https://www.nuget.org/packages/Lumoin.Veridical.Bbs/) | | **Lumoin.Veridical.Secdsa** | 基于 NIST P-256 的 split-ECDSA (SECDSA) —— EUDI 钱包独占控制签名原语(Verheul):使用 PIN 密钥和硬件密钥进行分离签名,且无需组合成复合密钥、离散对数相等性 NIZK,以及盲签名和交易证据证明 | [![NuGet](https://img.shields.io/nuget/v/Lumoin.Veridical.Secdsa.svg?style=flat)](https://www.nuget.org/packages/Lumoin.Veridical.Secdsa/) | | **Lumoin.Veridical.Backends.Managed** | 托管标量域后端:包含一个 BigInteger 参考实现以及支持运行时分发的特定于 ISA 的 SIMD(AVX2、AVX-512、NEON、WebAssembly PackedSimd)实现 | [![NuGet](https://img.shields.io/nuget/v/Lumoin.Veridical.Backends.Managed.svg?style=flat)](https://www.nuget.org/packages/Lumoin.Veridical.Backends.Managed/) | | **Lumoin.Veridical.Hashing** | 具有特定于 ISA 的 SIMD 后端的 BLAKE3 | [![NuGet](https://img.shields.io/nuget/v/Lumoin.Veridical.Hashing.svg?style=flat)](https://www.nuget.org/packages/Lumoin.Veridical.Hashing/) | | **Lumoin.Veridical.Analysis** | 用于掩码承诺设计泄露调查的统计工具(Kolmogorov–Smirnov,卡方检验) | [![NuGet](https://img.shields.io/nuget/v/Lumoin.Veridical.Analysis.svg?style=flat)](https://www.nuget.org/packages/Lumoin.Veridical.Analysis/) | | **Lumoin.Veridical.Cli** | 命令行和 MCP 工具:平台/后端信息、BLAKE3 哈希、一致性自测;以特定于平台的 native-AOT 包形式发布 | [![NuGet](https://img.shields.io/nuget/v/Lumoin.Veridical.Cli.svg?style=flat)](https://www.nuget.org/packages/Lumoin.Veridical.Cli/) | ## 功能特性 - **BBS 选择性披露签名** —— 多消息签名、验证和不可链接的子集披露证明(draft-irtf-cfrg-bbs-signatures,BLS12-381-SHA-256);该草案的附录 A 测试向量是互操作性的基础门槛。 - **基于 R1CS 的零知识证明** —— 一个基于多线性扩展 sumcheck 的 Spartan 风格证明器和验证器,具有用于零知识证明的掩码变体和电路构建工具。 - **多项式承诺** —— Hyrax(离散对数)、BaseFold(基于哈希,具有由泄露工具包验证的零知识变体)以及 Ligero(交织 Reed–Solomon),全部位于统一的 `Commit`/`Open`/`Verify` 接口之后,因此 Spartan 可以在无需更改的情况下直接替换其中任何一项。 - **透明的 Ligero 论证** —— 优先考虑正确性的重心法 Reed–Solomon 编码器实现了域通用和免 NTT,因此它可以在没有平滑阶单位根的域上运行,包括 P-256 标量域。这是在基于 ECDSA 签名的 mdoc 凭证上实现 Longfellow 风格零知识证明的基础。 - **P-256 作为一等曲线** —— 标量域和基域、短 Weierstrass G1,以及与 `System.Security.Cryptography.ECDsa` 交叉检查的 ECDSA 签名/验证。 - **Split-ECDSA (SECDSA)** —— Verheul 为基于 HSM 的 EUDI 钱包设计的分离签名:在由 PIN 密钥和硬件密钥形成但从未具体化的复合密钥 `P·u` 下生成标准的 ECDSA 签名,带有 RFC 6979 nonce、一个将硬件密钥保留在 TPM/HSM 内的可插拔原始签名接口、一个 Schnorr/Chaum-Pedersen 离散对数相等性 NIZK,以及可公开验证的交易透明度证据。请参阅[该论文](https://wellet.nl/SECDSA-EUDI-wallet-latest.pdf)。 - **Nova 风格折叠** —— 将两个实例-见证对进行 relaxed R1CS 折叠为一个,具有用于累积长期运行的计算的折叠链。 - **范围证明** —— 基于 BLS12-381 和 BN254 的 Bulletproofs:单值、聚合、批量验证和批量聚合,利用带有解码点缓存的 Pippenger 多重指数运算。 - **代数哈希** —— 原生 Poseidon 置换,由 Grain 推导且在 BN254 上与 circomlib 字节兼容,位于 Merkle 集合承诺影子根之后。 - **曲线和哈希** —— BLS12-381(包括 Ate 配对)、BN254 和 P-256;RFC 9380 hash-to-curve 和 hash-to-scalar;具有特定于 ISA 的 SIMD 的 BLAKE3。 - **托管后端和内存安全** —— BigInteger 参考预言机以及经过一致性测试的特定于 ISA 的 SIMD 后端(全为托管代码,无原生二进制文件);密码学材料存在于由内存池支撑且标有代数角色的 `SensitiveMemory` 中,公共 API 中没有裸露的字节数组。 ## 架构 曲线、证明系统和后端通过委托而非接口进行连接:同一个证明器在测试中针对参考后端运行,在生产中针对 SIMD 后端运行,调用点无需更改,并且后端选择是应用程序的关注点。每一次密码学材料的分配都通过内存池进行,并且密码学核心中没有静态缓存或隐藏的全局状态。 ## 快速开始 根据您的用例安装相关的包: ``` # 核心原语:algebra、transcripts、R1CS、Spartan、commitments、folding dotnet add package Lumoin.Veridical.Core # BBS selective-disclosure 签名 dotnet add package Lumoin.Veridical.Bbs # Split-ECDSA (SECDSA) sole-control 签名 dotnet add package Lumoin.Veridical.Secdsa # 加速的托管后端与哈希 dotnet add package Lumoin.Veridical.Backends.Managed dotnet add package Lumoin.Veridical.Hashing ``` 命令行工具作为 dotnet 工具安装: ``` dotnet tool install --global Lumoin.Veridical.Cli ``` ## 开发 代码库可在 Windows、Linux 和 macOS 上运行;后端加速在运行时根据指令集进行选择,并且托管参考后端始终有效。在仓库页面上按 **.** 可在 VS Code Web 编辑器中打开代码库。 ## 漏洞披露 请通过 [GitHub 安全公告](https://github.com/Lumoin/Lumoin.Veridical/security/advisories) 私下报告疑似的安全漏洞,请勿通过公开的 issue 提交。 ## 致谢 Veridical 的设计参考了已发布的规范和论文。此处的实现是独立的;没有代码被机械地复制或翻译。 - **IETF draft-irtf-cfrg-bbs-signatures** —— BBS 签名方案的线路格式权威;附录 A 测试向量是互操作性的基础门槛。 - **RFC 9380** —— hash-to-curve 和 hash-to-scalar 原语。 - **Spartan** (Setty, 2020) —— 基于 sumcheck 的 R1CS 证明系统。 - **Nova** (Kothapalli, Setty, Tzialla, 2021) —— relaxed R1CS 折叠方案。 - **BaseFold** (Zeilberger, Chen, Fisch, 2023) —— 域无关的基于哈希的多项式承诺。 - **Hyrax** (Wahby, Tzialla, shelat, Thaler, Walfish, 2018) —— 离散对数多项式承诺。 - **Ligero** (Ames, Hazay, Ishai, Venkitasubramaniam, 2017/2022) —— 交织 Reed–Solomon 透明论证。 - **Anonymous Credentials from ECDSA** (Frigo, shelat, 2024) —— P-256 和 Ligero 工作所针对的 Longfellow 式基于 ECDSA 的 ZK 结构。 - **Bulletproofs** (Bünz, Bootle, Boneh, Poelstra, Wuille, Maxwell, 2018) —— 范围证明结构。 - **[基于 HSM 并使用 Split-ECDSA (SECDSA) 的 EUDI 钱包](https://wellet.nl/SECDSA-EUDI-wallet-latest.pdf)** (Verheul,2026 年 6 月 21 日版本) —— `Lumoin.Veridical.Secdsa` 中的 split-ECDSA 独占控制结构、其离散对数相等性 NIZK,以及交易透明度证据证明。 ## 许可证 有关详细信息,请参阅 LICENSE 文件。
标签:AI工具, CVE, 多人体追踪, 多项式承诺, 密码学库, 数字签名, 零知识证明