liboqs-量子安全密碼算法開源C庫

liboqs是一個用於量子安全密碼算法的開源C庫。html

一,概述

liboqs提供:python

  1. 量子安全 密鑰封裝機制(KEM)和數字簽名算法的開源實現的集合;
  2. 這些算法的通用API;
  3. 測試工具和基準測試例程。

liboqs是Douglas StebilaMichele Mosca領導開放量子安全(OQS)項目的一部分,該項目旨在開發量子安全密碼學並將其集成到應用程序中,以促進在現實環境中的部署和測試。特別是,OQS經過OpenSSLOpenSSH將liboqs原型集成到TLS和SSH中git

有關OQS的更多信息,請參見
github

https://openquantumsafe.org/算法

https://openquantumsafe.org/papers/SAC-SteMos16.pdf瀏覽器

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

二,目前狀態

2.1支持的算法

密鑰封裝機制dom

  • 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

相關文章
相關標籤/搜索