mingulov/pkcs11-check

GitHub: mingulov/pkcs11-check

一款 CLI 优先的 PKCS#11 测试套件,通过子进程隔离和标准化测试向量对密码模块进行合规性验证、CVE 回归检测和安全评估。

Stars: 0 | Forks: 0

# pkcs11-check 一款 CLI 优先的 PKCS#11 测试套件,具备段错误生存能力、接口强制指定以及 pytest 插件。 ## 功能介绍 pkcs11-check 针对 PKCS#11 模块(硬件 HSM、软件 token、智能卡)运行全面的测试。它能捕获: - **崩溃和段错误** — 基于单文件的子进程隔离可从 SIGSEGV 中恢复 - **CKR 返回码违规** — 根据 OASIS PKCS#11 标准检查不同的规范条件 - **CVE 回归** — 针对 NSS、SoftHSM2、TPM2、OpenCryptoki 中已知 CVE 的测试 - **安全策略违规** — Tookan 论文向量、属性模糊测试、填充预言机检测 - **接口协商错误** — v2.40/v3.0/v3.1/v3.2 自动回退机制 ## 快速开始 ``` # 安装 git clone https://github.com/mingulov/pkcs11-check cd pkcs11-check uv sync # 针对 SoftHSM2 运行 bash local-builds/build.sh softhsm2 bash local-builds/test.sh softhsm2 # 针对 Kryoptic 运行(v3.2 带 PQC) bash local-builds/build.sh kryoptic bash local-builds/test.sh kryoptic # 针对系统 NSS 运行 bash local-builds/test.sh nss-softokn ``` ### 通过 PyPI 安装 ``` pip install pkcs11-check pkcs11-check fetch-data all # download test vectors (~800 MB) pkcs11-check test --module /path/to/module.so --pin 1234 ``` ## 测试套件 测试分类: | 类别 | 描述 | |----------|-------------| | 核心密码学 | AES、RSA、ECDSA、EdDSA、HMAC、摘要 | | Wycheproof | 来自 C2SP 的边缘测试用例向量 | | PQC (v3.2) | ML-KEM、ML-DSA、SLH-DSA | | CKR 合规性 | 根据 OASIS 规范验证返回码 | | CVE 回归 | 已知漏洞测试 | | 安全性 | 属性模糊测试、Tookan、句柄复用 | | 压力测试 | 多线程、资源耗尽 | ## 支持的模块 | 模块 | 版本 | 状态 | |--------|---------|--------| | SoftHSM2 | 2.7.0 | 完全支持 | | Kryoptic | 1.5.0+PQC | 完全支持 (v3.2) | | NSS softokn | system | 加密服务 (插槽 0) | | OpenCryptoki | 3.26 | 仅限 Docker | | pkcs11-mock | 2.0.0 | 存根测试 | | tpm2-pkcs11 | 1.9.0 | 硬件 TPM | | BouncyHSM | 2.0.1 | 仅限 Docker | | qryptotoken | 0.4.1 | 仅限 Docker | ## v0.1.0 中的已知限制 - 目前尚未实现 SO 登录,因此通过 `CKU_SO` 工作流 使用 `CKA_TRUSTED=True` 导入可信证书的功能尚未被完全覆盖。 - CloudHSM/Thales 的带内 IV 配置文件、代理/加载器的可变参数 保留检查,以及更广泛的可变输出模拟器目标, 已被列入 v0.1.0 之后的互操作性工作计划中。 ## 架构 ``` src/pkcs11_check/ raw/ — pure ctypes PKCS#11 binding (v2.40-v3.2, PQC) cli/ — typer CLI (test, info, version commands) core/ — module loader, isolation runner, preflight testcases/ — test files (the product) ckr/ — CKR return code compliance tests plugin.py — pytest plugin (markers, fixtures, collection) fixtures.py — p11_session, p11_module, p11_config config.py — four-layer config (CLI > env > TOML > defaults) local-builds/ — build scripts for soft token providers docker/ — Docker test targets ``` ## 核心特性 - **`pkcs11_check.raw`** — 纯 Python ctypes 绑定,支持 v2.40/v3.0/v3.1/v3.2 接口协商,包含 50 多种 PQC 机制和全部 68 个标准函数 - **`--isolation file`** 模式在独立的子进程中运行每个测试文件 — 崩溃不会终止整个测试套件 - **`--ckr-strict`** 模式强制执行精确的 OASIS 规范 CKR 代码(而不仅仅是“任意错误”) - **Wycheproof + ACVP 向量** — 与 C2SP 和 NIST 测试向量进行交叉验证 ## 文档 - `docs/architecture.md` — 代码库结构和测试编写指南 - `docs/commands.md` — 构建、测试和 Docker 命令 - `docs/module-issues.md` — 各模块的错误和特性 - `docs/mechanism-output-parameters.md` — 生成的 IV/nonce/tag 输出参数覆盖范围 - `docs/docker-provider-results.md` — 发布的 Docker 提供者源码和结果快照 - `docs/todo.md` — 公开路线图和已知限制 - `docs/cve-regression.md` — CVE 覆盖范围跟踪 - `docs/file-isolation.md` — 隔离运行器设计 - `docs/docker-artifacts.md` — Docker 测试运行器约定 ## 许可证 根据以下任一许可证授权: - Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) 或 http://www.apache.org/licenses/LICENSE-2.0) - MIT license ([LICENSE-MIT](LICENSE-MIT) 或 http://opensource.org/licenses/MIT) 由您自行选择。 ### 第三方声明 pkcs11-check 捆绑了来自 `latchset/pkcs11-headers` 的公共领域 PKCS#11 v3.2 头文件,其 `fetch-data` 命令会从 C2SP 和 NIST 下载测试向量。请参阅 [`THIRD_PARTY_LICENSES.md`](THIRD_PARTY_LICENSES.md) 以获取完整列表和 各来源的许可证条款。
标签:ACVP, AES, ASM汇编, CISA项目, CVE测试, ECDSA, EdDSA, HMAC, HSM, Kryoptic, ML-DSA, ML-KEM, NSS, OASIS, OpenCryptoki, PKCS#11, PQC, Pytest插件, Python, RSA, SLH-DSA, SoftHSM2, Tookan, TPM2, v2.40, v3.0, v3.1, v3.2, Wycheproof, 压力测试, 合规性测试, 后量子密码学, 填充预言机检测, 子域名变形, 子进程隔离, 安全测试, 安全策略验证, 安全规则引擎, 密码学, 密码标准, 密码模块测试, 属性模糊测试, 并发测试, 手动系统调用, 接口协商, 攻击性安全, 无后门, 智能卡, 段错误恢复, 漏洞回归测试, 硬件安全模块, 请求拦截, 资源耗尽测试, 软令牌, 逆向工具