• liboqs-量子安全密码算法开源C库


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

    一,概述

    liboqs提供:

    1. 量子安全 密钥封装机制(KEM)和数字签名算法的开源实现的集合;
    2. 这些算法的通用API;
    3. 测试工具和基准测试例程。

    liboqs是Douglas StebilaMichele Mosca领导开放量子安全(OQS)项目的一部分,该项目旨在开发量子安全密码学并将其集成到应用程序中,以促进在现实环境中的部署和测试。特别是,OQS通过OpenSSLOpenSSH将liboqs原型集成到TLS和SSH中

    有关OQS的更多信息,请参见

    https://openquantumsafe.org/

    https://openquantumsafe.org/papers/SAC-SteMos16.pdf

    https://openquantumsafe.org/papers/NISTPQC-CroPaqSte19.pdf

    二,目前状态

    2.1支持的算法

    密钥封装机制

    • BIKE: BIKE1-L1, BIKE1-L3, BIKE1-L5, BIKE2-L1, BIKE2-L3, BIKE2-L5, BIKE3-L1, BIKE3-L3, BIKE3-L5 (NIST Round 1 version)
    • FrodoKEM: FrodoKEM-640-AES, FrodoKEM-640-SHAKE, FrodoKEM-976-AES, FrodoKEM-976-SHAKE, FrodoKEM-1344-AES, FrodoKEM-1344-SHAKE
    • Kyber: Kyber512, Kyber768, Kyber1024
    • NewHope: NewHope-512-CCA, NewHope-1024-CCA
    • NTRU: NTRU-HPS-2048-509, NTRU-HPS-2048-677, NTRU-HPS-4096-821, NTRU-HRSS-701
    • SABER: LightSaber-KEM, Saber-KEM, FireSaber-KEM
    • SIKE: SIDH-p434, SIDH-p503, SIDH-p610, SIDH-p751, SIKE-p434, SIKE-p503, SIKE-p610, SIKE-p751, SIDH-p434-compressed, SIDH-p503-compressed, SIDH-p610-compressed, SIDH-p751-compressed, SIKE-p434-compressed, SIKE-p503-compressed, SIKE-p610-compressed, SIKE-p751-compressed

    签名技术

    • Dilithium: Dilithium2, Dilithium3, Dilithium4
    • MQDSS: MQDSS-31-48, MQDSS-31-64
    • Picnic: Picnic-L1-FS, Picnic-L1-UR, Picnic-L3-FS, Picnic-L3-UR, Picnic-L5-FS, Picnic-L5-UR, Picnic2-L1-FS, Picnic2-L3-FS, Picnic2-L5-FS
    • qTESLA: qTESLA-I, qTESLA-III-size, qTESLA-III-speed (NIST Round 1 version)
    • SPHINCS+-Haraka: SPHINCS+-Haraka-128f-robust, SPHINCS+-Haraka-128f-simple, SPHINCS+-Haraka-128s-robust, SPHINCS+-Haraka-128s-simple, SPHINCS+-Haraka-192f-robust, SPHINCS+-Haraka-192f-simple, SPHINCS+-Haraka-192s-robust, SPHINCS+-Haraka-192s-simple, SPHINCS+-Haraka-256f-robust, SPHINCS+-Haraka-256f-simple, SPHINCS+-Haraka-256s-robust, SPHINCS+-Haraka-256s-simple
    • SPHINCS+-SHA256: SPHINCS+-SHA256-128f-robust, SPHINCS+-SHA256-128f-simple, SPHINCS+-SHA256-128s-robust, SPHINCS+-SHA256-128s-simple, SPHINCS+-SHA256-192f-robust, SPHINCS+-SHA256-192f-simple, SPHINCS+-SHA256-192s-robust, SPHINCS+-SHA256-192s-simple, SPHINCS+-SHA256-256f-robust, SPHINCS+-SHA256-256f-simple, SPHINCS+-SHA256-256s-robust, SPHINCS+-SHA256-256s-simple
    • SPHINCS+-SHAKE256: SPHINCS+-SHAKE256-128f-robust, SPHINCS+-SHAKE256-128f-simple, SPHINCS+-SHAKE256-128s-robust, SPHINCS+-SHAKE256-128s-simple, SPHINCS+-SHAKE256-192f-robust, SPHINCS+-SHAKE256-192f-simple, SPHINCS+-SHAKE256-192s-robust, SPHINCS+-SHAKE256-192s-simple, SPHINCS+-SHAKE256-256f-robust, SPHINCS+-SHAKE256-256f-simple, SPHINCS+-SHAKE256-256s-robust, SPHINCS+-SHAKE256-256s-simple

    2.2局限性与安全性

    随着研究的进展,受支持的算法可能会看到其安全性的快速变化,甚至可能证明对经典计算机和量子计算机都不安全。

    liboqs并不打算“选拔优胜者”:算法支持由NIST 后量子密码术标准化项目提供。我们强烈建议应用程序和协议在部署后量子加密时依赖于其努力的结果。

    我们认识到一些参与者可能希望在NIST标准化项目结束之前部署量子安全密码学。我们强烈建议您尝试使用所谓的混合密码术,其中将量子安全的公共密钥算法与传统的公共密钥算法(例如RSA或椭圆曲线)一起使用,以使该解决方案的安全性至少比现有的传统安全性低加密。

    三,快速开始

    3.1Linux/ MacOS

    1,安装依赖项:

    在Ubuntu上:

     sudo apt install autoconf automake libtool gcc libssl-dev python3-pytest unzip xsltproc doxygen graphviz

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

    brew install autoconf automake libtool openssl wget doxygen graphviz
    pip3 install pytest

    2,获取来源:

     git clone -b master https://github.com/open-quantum-safe/liboqs.git
     cd liboqs

    并建立:

     autoreconf -i
     ./configure
     make clean
     make -j

    可以传递各种选项来配置以禁用算法,使用不同的实现,指定要使用的OpenSSL库或交叉编译。有关./configure --help详细信息,请参见

    (如果在macOS上遇到类似的错误Can't exec "libtoolize": No such file or directory at ...,请尝试使用运行LIBTOOLIZE=glibtoolize autoreconf -i。)

    3,主要的构建结果是liboqs.a,一个静态库。(可以将其放置在.libs目录中。)目录下还构建了各种程序tests

    • test_kem:用于关键封装机制的简单测试工具
    • test_sig:用于密钥签名方案的简单测试工具
    • kat_kem:使用与NIST提交要求相同的过程为密钥封装机制生成已知答案测试(KAT)值的程序,用于使用以下方法检查提交的KAT值 tests/test_kat.py
    • kat_sig:使用与NIST提交要求相同的过程为签名方案生成已知答案测试(KAT)值的程序,用于使用以下方法检查提交的KAT值 tests/test_kat.py
    • speed_kem:关键封装机制的基准测试程序;请参阅./speed_kem --help使用说明
    • speed_sig:签名机制的基准测试程序;请参阅./speed_sig --help使用说明
    • example_kem:最小的可运行示例,显示了KEM API的用法
    • example_sig:最小的可运行示例,显示了签名API的用法
    • test_aestest_sha3:用于加密子组件的简单测试工具的测试(包括所有的A范围test_*kat_*上述的程序)可以使用运行
    python3 -m pytest

    4,要生成API的HTML文档,请运行:

     make docs

    然后docs/doxygen/html/index.html在您的Web浏览器中打开

    3.2Windows

    可以使用VisualStudio文件夹中的Visual Studio解决方案生成二进制文件。支持的方案在项目的winconfig.h文件中定义

    3.3其他

    可以在Wiki中找到有关在OpenBSD和ARM上进行构建的说明

    3.4License

    liboqs是根据MIT许可获得许可的;有关详细信息,请参见LICENSE.txt

    liboqs包含一些许可不同的第三方库或模块;相应的子文件夹包含在这种情况下适用的许可证。尤其是:

    • src/crypto/aes/aes_c.c: public domain
    • src/crypto/sha2/sha2_c.c: public domain
    • src/crypto/sha3/fips202.c: CC0 (public domain)
    • src/crypto/sha3/keccak4x: CC0 (public domain), except brg_endian.h
    • src/kem/bike/x86_64: Apache License v2.0
    • src/kem/kyber/pqclean_*: public domain
    • src/kem/newhope/pqclean_*: public domain
    • src/kem/ntru/pqclean_*: public domain
    • src/kem/saber/pqclean_*: public domain
    • src/sig/dilithium/pqclean_*: public domain
    • src/sig/mqdss/pqclean_*: CC0 (public domain)
    • src/sig/picnic/external/sha3: CC0 (public domain)
    • src/sig/rainbow/pqclean_*: CC0 (public domain)
    • src/sig/sphincs/pqclean_*: CC0 (public domain)

    https://github.com/open-quantum-safe/liboqs#status

  • 相关阅读:
    2018.09.25python学习第十天part3
    2018.09.25python学习第十天part2
    2018.09.25python学习第十天part1
    2018.09.21python学习第九天part3
    2018.09.21python学习第九天part2
    2018.09.21python学习第九天part1
    2018.09.20python作业
    Alpha 冲刺(3/10)
    Alpha 冲刺(2/10)
    Alpha 冲刺(1/10)
  • 原文地址:https://www.cnblogs.com/xdyixia/p/11577363.html
Copyright © 2020-2023  润新知