Port-PHI/phi-crypto

GitHub: Port-PHI/phi-crypto

Phi 去中心化身份网络的 Rust 密码学核心,提供 BBS+ 选择性披露、DID、WebAuthn 和匿名投票原语,通过单一实现输出 C-ABI 与 WASM 供区块链、移动端和网页端共用。

Stars: 0 | Forks: 0

Phi (φ) # phi-crypto — Phi 身份的密码学 [![CI](https://static.pigsec.cn/wp-content/uploads/repos/cas/ad/ad5834178f7599af9fdda11629d49cae07f2997beec49821b2920eff5bfd50e7.svg)](https://github.com/Port-PHI/phi-crypto/actions/workflows/ci.yml) [![License](https://img.shields.io/badge/license-Apache--2.0-blue)](./LICENSE) [![Rust](https://img.shields.io/badge/rust-stable-orange)](https://www.rust-lang.org/) **English** · [**فارسی**](./README.fa.md) Homaan Smart Data Co. · [portphi.com](https://portphi.com)
**支持人格证明、身份验证和可验证凭证的隐私保护密码学** · *绝不自行硬编密码学* ## phi-crypto 是什么 **phi-crypto** 是 [Phi](https://portphi.com) 网络的密码学核心——这是一条身份区块链,允许个人证明他们是谁,以及他们有权主张什么,**而无需暴露其原始个人数据。** 这个库是使之成为可能的引擎:零知识证明、去中心化标识符和设备绑定的身份验证,将经过一次性验证的人类转化为隐私的、自主主权的、可验证的数字身份。 它使用 **Rust** 编写一次,并通过单一实现服务于每个 Phi 消费者:区块链(Go,通过 C-ABI)、移动应用(FFI)和网页端(WebAssembly)。一个核心,三种输出——因为跨并行实现重复的密码学漏洞将是一场灾难,整个网络的敏感密码学完全存在于一个可验证的地方。 该库**绝不自行硬编密码学。** 每个原语都是对成熟、经过审计的 crate(用于 BBS+ 的 `docknetwork/crypto` 和 `pairing_crypto`,用于签名的 RustCrypto `k256`/`p256`,用于 BLS12-381 的 arkworks/blst)的轻量级、经过审查的封装。完整的归属说明在 [`NOTICE`](./NOTICE) 中。 ## 它所驱动的功能 phi-crypto 提供了 Phi 身份层的构建块: - **可验证凭证与选择性披露(`bbs`、`bbs_2023`)。** 基于 BLS12-381 的 BBS+ 不可链接选择性披露签名。持有者可以证明一项声明——*“年满 18 岁”、“城市 X 的居民”、“经过验证的人类”*——**而无需揭示其背后的数据**,并且同一凭证的两次展示无法被关联。`bbs-2023` 套件逐字节匹配官方的 IETF/W3C 互操作性向量。 - **去中心化身份(`did`)。** 在两条曲线(secp256k1 和 secp256r1)上生成密钥和签名,`did:phi:…` 标识符,以及强制执行 low-S 签名——这是个人自主拥有的 Phi 身份的密码学骨干。 - **设备绑定身份验证(`webauthn`)。** 一个基于 `authenticatorData ‖ SHA256(clientDataJSON)` 的 WebAuthn 验证器(P-256),检查类型、challenge、origin、依赖方身份、用户存在性以及 low-S——因此“使用 Phi 登录”由真实设备上的真实 passkey 提供支持。 - **隐私参与(`voting`、`semaphore`)。** Nullifier 和阈值计票原语将凭证证明绑定到一个单一的、匿名的操作——这是在不暴露身份的情况下实现一人一票参与的基础。 - **C-ABI 边界(`ffi`)。** 唯一的 `unsafe` 模块:一个无 panic、故障安全的边界,允许区块链跨 FFI 边界安全地调用核心。验证函数在有效时返回 `1`,否则返回 `0`——它们会安全地拒绝。 ## 一个核心,三种输出 ``` ┌─────────────────────────────┐ │ phi-crypto (Rust core) │ │ bbs · did · webauthn · vote │ └──────────────┬──────────────┘ ┌──────────────────┬─────────┴──────────┬──────────────────┐ WASM (wasm.rs) FFI (flutter_bridge) C-ABI (ffi.rs + cbindgen) web app / site Phi mobile app phi-chain / Go (cgo) ``` `crate-type = ["cdylib", "staticlib", "rlib"]` 启用了所有三种输出。Rust 核心、C-ABI 输出(由 phi-chain 使用)和 WebAssembly 绑定已经实现并经过测试;随着其消费者接入完毕,剩余的绑定将在即将到来的更新中完成。 ## 构建与测试 该仓库完全自包含且**离线**构建:每个依赖项都在 `vendor/` 下 vendored,并且 `.cargo/config.toml` 将源重定向到那里,因此在构建时不会下载任何内容。 ``` cargo test # unit + integration (offline, from vendor) cargo clippy --all-targets -- -D warnings # must be clean cargo build --release # → target/release/libphi_crypto.{a,dylib} ``` ### C-ABI 输出(用于 phi-chain) ``` cargo build --release cbindgen --config cbindgen.toml --output phi_crypto.h ``` 从 Go 中调用: ``` // #cgo LDFLAGS: -L./lib -lphi_crypto // #include "phi_crypto.h" import "C" ``` 所有 C-ABI 验证函数在成功时返回 `1`,否则返回 `0`(故障安全);没有 panic 会跨越边界。 ### WASM 输出(用于网页端) ``` cargo build --target wasm32-unknown-unknown # compile-check wasm-pack build --target web --out-dir pkg-web # importable web package (requires wasm-pack) ``` ``` import init, { bbsDeriveProof, bbsVerifyProof } from "./pkg-web/phi_crypto.js"; await init(); const proof = bbsDeriveProof(claims, signature, Uint32Array.of(3), nonce); // reveal only "over 18" const ok = bbsVerifyProof(proof, issuerPublicKey, nonce); ``` 在生产环境中加载 WASM 时请使用子资源完整性(SRI)。 ## 安全原则 - **绝不自行硬编密码学**——每个原语都封装了成熟、经过审计的 crate。 - 除了单一且经过审查的 `ffi` 模块外,到处都使用了 `#![deny(unsafe_code)]`。 - 使用 `subtle` 对秘密材料进行恒定时间比较——绝不使用 `==`;秘密密钥在使用后使用 `zeroize` 清零。 - 签名时强制执行 low-S;验证器**故障安全**——它们在任何疑问时都会拒绝。 - `Cargo.lock` 已提交,并且每个 crate 都已固定;构建是可重现且离线的。 我们欢迎负责任的漏洞披露——请按照 [`SECURITY.md`](./SECURITY.md) 中的描述私下报告漏洞(**security@portphi.com**),切勿通过公开 issue 报告。 ## 构建于 BBS+ 选择性披露来自 **docknetwork/crypto** 和 **pairing_crypto** 系列(基于 arkworks/blst,BLS12-381),签名和曲线哈希来自 **RustCrypto**(`k256`/`p256`/`sha2`),恒定时间比较来自 **subtle**。完整的归属说明在 [`NOTICE`](./NOTICE) 中。 ## License [Apache License 2.0](./LICENSE) — © 2026 Homaan Smart Data Co. 保留所有权利。 由 **A.Mooraeyan** 设计和发明。Phi 协议和本仓库中的原始源代码属于 Homaan Smart Data Co. 的知识产权;所有版权和专利权利均归公司所有并保留,公司根据 Apache-2.0 许可该软件用于公共使用、研究和重新分发。有关完整的所有权、专利和商标声明,请参阅 [`NOTICE`](./NOTICE)。 *Homaan Smart Data Co. — [portphi.com](https://portphi.com)*
标签:AI工具, Rust, WebAuthn, 区块链, 去中心化身份, 可视化界面, 密码学, 手动系统调用, 网络流量审计, 通知系统, 零知识证明