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

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

一,概述

liboqs提供:

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

liboqs是由Douglas Stebila和Michele Mosca领导的开放量子安全(OQS)项目的一部分,该项目旨在开发量子安全密码学并将其集成到应用程序中,以促进在现实环境中的部署和测试。特别是,OQS通过OpenSSL和OpenSSH将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

原文地址:https://www.cnblogs.com/xdyixia/p/11577363.html

时间: 2024-11-10 14:01:35

liboqs-量子安全密码算法开源C库的相关文章

国家商业密码算法开放动态库及演示程序

 开放动态库支持如下国家商业密码算法:SM2.SM3.SM4,同时也支持AES对称加密算法. 下载地址: 国家商业密码算法开放动态库及演示程序C#语言版 国家商业密码算法开放动态库及演示程序Java语言版 当前提供的语言版本: C#语言版本,其开发环境为:Visual Studio V2013..NET Framework 4.5 Java语言版本,其开发环境为:NetBeans 8.0.2.JDK 8u45 C/C++语言版本:暂不开放 Qt版本:暂不开放 算法说明 SM2: 支持P-25

Android开源工具库

 一.依赖注入DI 通过依赖注入减少View.服务.资源简化初始化,事件绑定等重复繁琐工作 1. AndroidAnnotations(Code Diet) android快速开发框架 项目地址:https://github.com/excilys/androidannotations 文档介绍:https://github.com/excilys/androidannotations/wiki 官方网站:http://androidannotations.org/ 特点:(1)依赖注入:包

Android中锁屏密码算法解析以及破解方案

一.前言 最近玩王者荣耀,下载了一个辅助样本,结果被锁机了,当然破解它很简单,这个后面会详细分析这个样本,但是因为这个样本引发出的欲望就是解析Android中锁屏密码算法,然后用一种高效的方式制作锁机恶意样本.现在的锁机样本原理强制性太过于复杂,没意义.所以本文就先来介绍一下android中的锁屏密码算法原理. 二.锁屏密码方式 我们知道Android中现结单支持的锁屏密码主要有两种: 一种是手势密码,也就是我们常见的九宫格密码图 一种是输入密码,这个也分为PIN密码和复杂字符密码,而PIN密码

机器视觉开源处理库汇总

从cvchina搞到的机器视觉开源处理库汇总,转来了,很给力,还在不断更新... 通用库/General Library OpenCV 无需多言. RAVL Recognition And Vision Library. 线程安全.强大的IO机制.包含AAM. CImg 很酷的一个图像处理包.整个库只有一个头文件.包含一个基于PDE的光流算法. 图像,视频IO/Image, Video IO FreeImage DevIL ImageMagick FFMPEG VideoInput portVi

Linux下常用的C/C++开源Socket库

1.      Linux Socket Programming In C++ : http://tldp.org/LDP/LG/issue74/tougher.html 2.      ACE: http://www.cs.wustl.edu/~schmidt/ACE.html ACE采用ACE_OS适配层屏蔽各种不同的.复杂繁琐的操作系统API. ACE是一个大型的中间件产品,代码20万行左右,过于宏大,一堆的设计模式,架构了一层又一层.它庞大.复杂,适合大型项目.开源.免费,不依赖第三方库

C++开源网络库(Socket library)

(1)ACE 庞大.复杂,适合大型项目.开源.免费,不依赖第三方库,支持跨平台. http://www.cs.wustl.edu/~schmidt/ACE.html http://download.dre.vanderbilt.edu/ (2)Asio Asio基于Boost开发的异步IO库,封装了Socket,简化基于socket程序的开发. 开源.免费,支持跨平台. http://think-async.com/ (3)POCO POCO C++ Libraries 提供一套 C++ 的类库

Python有黄金屋,OpenCV有颜如玉,人脸融合算法开源,堪比整容!

python & opencv 打造当前相机最新的人脸融合功能. 论述 目前大部分IT大企业对人脸技术都是有研究的,人脸识别.人脸检测等等,到我们日常P图软件,随便说一个我知道的天天P图软件APP就可实现,Face++已经打造了人脸技术的API,但是它是收费的并且有点小贵,所以这次把人脸融合算法直接开源,供大家利用.(Python源码至于文末) 先来瞧瞧各大软件与我们利用Python_OpenCV实现的效果差距: 左边为被融合的图,右边为欲融合的图 手把手教你如何实现人脸融合技术: 零.融合函数

iOS流行的开源代码库

本文介绍一些流行的iOS的开源代码库 1.AFNetworking 更新频率高的轻量级的第三方网络库,基于NSURL和NSOperation,支持iOS和OSX.https://github.com/AFNetworking/AFNetworking 2.GPUImage 图像处理库,基于OpenGL ES,图像处理效率高.https://github.com/BradLarson/GPUImage 3.Masonry 自动布局库.https://github.com/SnapKit/Mason

基于HTML5的开源图标库-ECharts

ECharts: 来自百度商业前端数据可视化团队,基于html5 Canvas,纯Javascript图表库,底层依赖ZRender,商业产品常用图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表.创新的拖拽重计算.数据视图.值域漫游等特性大大增强了用户体验,赋予了用户对数据进行挖掘.整合的能力.图表类型支持折线图(区域图).柱状图(条状图).散点图(气泡图).K线图.饼图(环形图).雷达图(填充雷达图).和弦图.力导向布局图.地图,同时支持任意维度的堆积和多图表混合展现. 链接是:h