Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
liboqs — 用于量子抗性密码学原型设计和实验的C语言库 | Kitploit
工具/GitHubGitHub/open-quantum-safe/liboqs
加密/解密工具密码学实用工具与框架
GitHubopen-quantum-safe/liboqs

liboqs

用于量子抗性密码学原型设计和实验的C语言库

查看仓库网站
3.0k76512天前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

liboqs

Main Branch Tests Weekly Tests Coverage Status

liboqs 是一个用于量子安全密码算法的开源 C 语言库。

  • liboqs
    • 概述
    • 状态
      • 支持的算法
        • 密钥封装机制
        • 签名方案
        • 有状态签名方案
      • 限制与安全性
        • 平台限制
        • 支持限制
    • 快速入门
      • Linux 和 Mac
      • Windows
      • 交叉编译
    • 文档
    • 贡献
    • 许可证
    • 致谢

概述

liboqs 提供:

  • 一系列量子安全密钥封装机制(KEM)和数字签名算法的开源实现;完整列表可在下方找到
  • 这些算法的通用 API
  • 测试工具和基准测试例程

liboqs 是 Open Quantum Safe (OQS) 项目的一部分,该项目旨在开发量子安全密码学并将其集成到应用程序中,以促进在真实世界环境中的部署和测试。特别是,OQS 通过我们的 OpenSSL 3 Provider 提供了将 liboqs 集成到 TLS、X.509 和 S/MIME 等协议中的原型集成,并且我们提供了各种其他后量子启用演示。

OQS 项目由 Post-Quantum Cryptography Alliance 作为 Linux Foundation 的一部分提供支持。有关 Open Quantum Safe 项目的更多信息,请访问 openquantumsafe.org。

OQS 正在进行一项调查,以更好地了解我们的社区。我们希望听取组织和个人对 Open Quantum Safe 项目的兴趣和使用情况。请花几分钟时间填写调查问卷:https://linuxfoundation.surveymonkey.com/r/oqssurvey

状态

支持的算法

下表总结了当前集成到 liboqs 中的每个算法系列。有关每个变体的详细信息(包括 NIST 级别、恒定时间状态、形式化验证和可用优化),请参阅 ALGORITHMS.md;有关上游来源和建议,请参阅 docs/algorithms 下的每个算法页面。

由 NIST 标准化的算法名称 — ML-KEM、ML-DSA 和 SLH-DSA — 是稳定的;如果 NIST 更改实现细节,liboqs 将进行调整,以保护用户免受此类更改的影响。所有其他名称可能会发生变化。构建哪些算法可以通过 OQS_ALGS_ENABLED 控制;默认情况下,liboqs 构建时支持表中的所有算法,包括实验性算法。

密钥封装机制

签名方案

有状态签名方案

限制与安全性

虽然在撰写本文时,此库中使用的任何量子安全算法均未发现已知漏洞,但在部署量子安全算法时仍需谨慎,因为大多数算法和软件尚未经过与当前已部署算法同等程度的审查。应特别关注标准制定社区提供的指导,尤其是 NIST 的 Post-Quantum Cryptography Standardization 项目。随着研究的推进,受支持的算法在安全性方面可能会发生快速变化,甚至可能被证明对经典计算机和量子计算机都不安全。此外,请注意 sntrup761 仅用于互操作性测试。

liboqs 无意"挑选赢家":算法支持以 NIST PQC 标准化项目为依据。我们强烈建议应用程序和协议在部署后量子密码学时依赖该项目的成果。

我们意识到某些方可能希望在 NIST PQC 标准化项目结束之前部署量子安全密码学。我们强烈建议此类尝试使用所谓的混合密码学,即将量子安全公钥算法与传统公钥算法(如 RSA 或椭圆曲线)结合使用,以便解决方案至少不比现有传统密码学安全性更低。

我们目前不建议在生产环境中依赖此库或使用它来保护任何敏感数据。 此库旨在帮助研究和原型开发。虽然我们尽最大努力避免安全漏洞,但此库尚未经过高安全性使用所需的审计和分析水平。

请参阅 SECURITY.md 了解如何报告漏洞以及 OQS 漏洞响应流程的详细信息。

平台限制

为了优化支持工作,

  • 并非所有算法在所有平台上都得到同等支持。如有疑问,建议首先查看每个算法的文档文件。
  • 并非所有编译器都得到同等支持。例如,至少需要 GNU 编译器的 v7.1.0 版本。

支持限制本项目不提供商业支持。liboqs 的所有指南和目标均反映了当前实践,由学术、兼职和/或志愿贡献者社区以尽力而为的方式执行,并可能随时变更。任何寻求更可靠承诺的实体,强烈建议加入 OQS 社区,从而增强社区能够提供的代码和支持。

快速入门

Linux 和 Mac

  1. 安装依赖:

    在 Ubuntu 上:

    root@kitploit:~
     sudo apt install astyle cmake gcc ninja-build libssl-dev unzip xsltproc doxygen graphviz valgrind
     python3 -m venv .venv
     source .venv/bin/activate
     pip install --require-hashes -r requirements.txt
    

    在 macOS 上,使用你选择的包管理器(我们选择了 Homebrew):

    root@kitploit:~
     brew install cmake ninja openssl@3 wget doxygen graphviz astyle valgrind
     python3 -m venv .venv
     source .venv/bin/activate
     pip install --require-hashes -r requirements.txt
    

    使用 Nix:

    root@kitploit:~
     nix develop
    

    请注意,如果你希望 liboqs 使用 OpenSSL 来实现各种对称加密算法(AES、SHA-2 等),则必须安装 OpenSSL(推荐 3.x 版本;已停止维护的 1.1.1 版本仍可使用)。

  2. 获取源码:

    root@kitploit:~
     git clone -b main https://github.com/open-quantum-safe/liboqs.git
     cd liboqs
    

    然后构建:

    root@kitploit:~
     mkdir build && cd build
     cmake -GNinja ..
     ninja
    

各种用于定制生成产物的 cmake 构建选项均可用,并在 CONFIGURE.md 中进行了说明。所有受支持的选项也列在 .CMake/alg-support.cmake 文件中,并可通过在 build 目录中运行 cmake -LAH -N .. 查看。

以下说明假定我们位于 build 目录中。

  1. 默认情况下,主要构建产物是静态库 lib/liboqs.a。如果你想构建共享/动态库,请在上述 cmake -GNinja .. 命令后附加 -DBUILD_SHARED_LIBS=ON,结果将是 lib/liboqs.so|dylib|dll。公共头文件位于 include 目录中。tests 目录下还构建了多种程序:

    • test_kem:用于密钥封装机制的简单测试工具
    • test_sig:用于签名方案的简单测试工具
    • test_sig_stfl:用于有状态签名方案的简单测试工具
    • test_kem_mem:用于检查密钥封装机制内存消耗的简单测试工具
    • test_sig_mem:用于检查签名方案内存消耗的简单测试工具
    • kat_kem:使用与 NIST 提交要求相同的程序生成密钥封装机制已知答案测试(KAT)值的程序,用于通过 tests/test_kat.py 与提交的 KAT 值进行核对

Windows

可以使用安装了 CMake Tools 扩展的 Visual Studio 2019 生成二进制文件。可以使用与上述 Linux/macOS 相同的选项,构建产物将生成在指定的 build 文件夹中。

如果你想创建 Visual Studio 构建文件,例如不使用 ninja 时,请务必_不要_像上面示例那样向 cmake 命令传递 -GNinja 参数。然后你可以使用 msbuild 构建所有组件,例如:msbuild ALL_BUILD.vcxproj,并使用如下命令安装所有产物:msbuild INSTALL.vcxproj。

交叉编译

你可以为各种平台交叉编译 liboqs。详细信息请参阅 Wiki。

文档

有关构建、可选构建参数、示例应用程序、编码约定等的更详细信息,请参阅 wiki。

贡献

我们热忱欢迎符合验收标准的贡献。更多详情请参阅我们的 贡献指南。

许可证

liboqs 根据 MIT 许可证授权;详情请参阅 LICENSE.txt。

liboqs 包含一些采用不同许可证的第三方库或模块;相应的子文件夹包含适用于该情况的许可证。特别是:

  • .CMake/CMakeDependentOption.cmake:BSD 3-Clause 许可证
  • src/common/common.c:包含 Apache License v2.0 许可的部分
  • src/common/crypto/aes/aes_c.c:公有领域或任何 OSI 批准的许可证
  • src/common/crypto/aes/aes*_ni.c:公有领域
  • src/common/crypto/sha2/sha2_c.c:公有领域
  • src/common/crypto/sha3/xkcp_low:CC0(公有领域),brg_endian.h 和 KeccakP-1600-AVX2.s 除外
  • src/common/crypto/sha3/xkcp_low/.../brg_endian.h:BSD 3-Clause 许可证
  • src/common/crypto/sha3/xkcp_low/.../KeccakP-1600-AVX2.s:类似 BSD 的 CRYPTOGAMS 许可证
  • src/common/rand/rand_nist.c:参见文件
  • src/kem/bike/additional:Apache License v2.0

致谢

OQS 项目由 后量子密码联盟 作为 Linux 基金会 的一部分提供支持。

OQS 项目由 Douglas Stebila 和 Michele Mosca 在滑铁卢大学创立。liboqs 的贡献者 包括个人贡献者、学者和研究人员,以及多家公司,包括 Amazon Web Services、Cisco Systems、evolutionQ、IBM Research、Microsoft Research、SandboxAQ 和 softwareQ。

Open Quantum Safe 的开发获得了 Amazon Web Services、加拿大网络安全中心、Cisco、Unitary Fund、NGI Assure Fund 和 VeriSign Inc. 的财务支持。

开发 OQS 特定组件的研究项目得到了多项研究资助的支持,包括加拿大自然科学与工程研究委员会(NSERC)的资助;资助确认请参见原始论文。

下载工具
算法系列标准化状态主要实现上游维护OQS 层级
BIKE未被 NIST 选中awslabs/bike-kem待定第 3 层(社区)
Classic McEliece正在接受 ISO 审议PQClean/PQClean@1eacfda无活跃维护第 3 层(社区)
FrodoKEM正在接受 ISO 审议microsoft/PQCrypto-LWEKE@a2f9dec尽力而为第 2 层(受支持)
HQC被 NIST 选中用于即将到来的标准化pqc-hqc/hqc@161cd4f待定第 2 层(受支持)
Kyber被 NIST 选为 ML-KEM(FIPS 203)的基础pq-crystals/kyber@441c051积极维护第 3 层(社区)
ML-KEM由 NIST 标准化pq-code-package/mlkem-native@0ba906c积极维护第 1 层(核心)
NTRU未被 NIST 选中,正在接受 NTT 的标准化审议PQClean/PQClean@4c9e5a3积极维护第 3 层(社区)
NTRU-Prime未被 NIST 选中openssh/openssh-portable积极维护第 3 层(社区)
算法系列标准化状态主要实现上游维护OQS 层级
CROSS正在接受 NIST 审议CROSS-signature/CROSS-lib-oqs@179d61b积极维护第 3 层(社区)
Falcon被 NIST 选中用于即将到来的标准化PQClean/PQClean@1eacfda待定第 3 层(社区)
MAYO正在接受 NIST 审议PQCMayo/MAYO-C@64e15c6积极维护第 3 层(社区)
ML-DSA由 NIST 标准化pq-code-package/mldsa-native@9b0ee84积极维护第 2 层(受支持)
MQOM正在接受 NIST 审议mqom/mqom-v2@ec6b7fa积极维护第 3 层(社区)
SLH-DSA由 NIST 标准化pq-code-package/slhdsa-c@a0fc1ff尽力而为第 3 层(社区)
SNOVA正在接受 NIST 审议vacuas/SNOVA@1c3ca6f尽力而为第 3 层(社区)
UOV正在接受 NIST 审议pqov/pqov@33fa527尽力而为第 3 层(社区)
算法系列标准化状态主要实现上游维护OQS 层级
LMS由 IRTF 标准化,经 NIST 批准cisco/hash-sigs尽力而为第 2 层(受支持)
XMSS由 IRTF 标准化,经 NIST 批准XMSS/xmss-reference积极维护第 2 层(受支持)
  • kat_sig:使用与 NIST 提交要求相同的程序生成签名方案已知答案测试(KAT)值的程序,用于通过 tests/test_kat.py 与提交的 KAT 值进行核对
  • kat_sig_stfl:用于通过 tests/test_kat.py 与提交的 KAT 值进行核对结果的程序
  • speed_kem:密钥封装机制基准测试程序;用法说明请参见 ./speed_kem --help
  • speed_sig:签名机制基准测试程序;用法说明请参见 ./speed_sig --help
  • speed_sig_stfl:有状态签名机制基准测试程序;用法说明请参见 ./speed_sig_stfl --help
  • example_kem:展示 KEM API 用法的最小可运行示例
  • example_sig:展示签名 API 用法的最小可运行示例
  • example_sig_stfl:展示有状态签名 API 用法的最小可运行示例
  • test_aes、test_sha3:用于加密子组件的简单测试工具
  • test_portability:用于检查跨 CPU 代码可移植性的简单测试工具;需要存在 qemu;仅在 Ubuntu 上验证了正确运行
  • 可以使用以下命令运行完整的测试套件:

    root@kitploit:~
     ninja run_tests
    
  • 要生成 API 的 HTML 文档,请运行:

    root@kitploit:~
     ninja gen_docs
    

    然后在 Web 浏览器中打开 docs/html/index.html。

  • 可以运行 ninja install 将构建的库和 include 文件安装到指定位置,该位置可以在配置时通过向 cmake 传递 -DCMAKE_INSTALL_PREFIX=<dir> 选项来指定。或者,可以运行 ninja package 来创建安装包。

  • 可以运行 ninja uninstall 来删除所有安装文件。

  • src/kem/classic_mceliece/pqclean_*:公有领域
  • src/kem/kyber/pqcrystals-*:公有领域(CC0)或 Apache License v2.0
  • src/kem/kyber/pqclean_*:公有领域(CC0),以及公有领域(CC0)或 Apache License v2.0,以及公有领域(CC0)或 MIT,以及 MIT
  • src/kem/kyber/libjade_*:公有领域(CC0)或 Apache License v2.0
  • src/kem/ml_kem/mlkem-native_*:MIT 或 Apache License v2.0 或 ISC 许可证
  • src/kem/ntru/pqclean_*:公有领域(CC0)
  • src/kem/ntruprime/sntrup761_openssh:公有领域
  • src/sig/falcon/pqclean_\*\_aarch64:Apache License v2.0
  • src/sig/mayo/*:Apache License v2.0
  • src/sig/ml_dsa/pqcrystals-*:公有领域(CC0)或 Apache License v2.0