diff --git a/CMakeLists.txt b/CMakeLists.txt index eac3f971d3..7e98b7d75a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -47,9 +47,9 @@ set(CMAKE_C_STANDARD_REQUIRED ON) set(CMAKE_POSITION_INDEPENDENT_CODE ON) set(CMAKE_C_VISIBILITY_PRESET hidden) set(OQS_VERSION_MAJOR 0) -set(OQS_VERSION_MINOR 15) +set(OQS_VERSION_MINOR 16) set(OQS_VERSION_PATCH 0) -set(OQS_VERSION_PRE_RELEASE "") +set(OQS_VERSION_PRE_RELEASE "-rc1") set(OQS_VERSION_TEXT "${OQS_VERSION_MAJOR}.${OQS_VERSION_MINOR}.${OQS_VERSION_PATCH}${OQS_VERSION_PRE_RELEASE}") set(OQS_COMPILE_BUILD_TARGET "${CMAKE_SYSTEM_PROCESSOR}-${CMAKE_HOST_SYSTEM}") set(OQS_MINIMAL_GCC_VERSION "7.1.0") diff --git a/RELEASE.md b/RELEASE.md index 0ad3635522..fdc402faa4 100644 --- a/RELEASE.md +++ b/RELEASE.md @@ -1,99 +1,233 @@ -# liboqs version 0.15.0 +# liboqs version 0.16.0-rc1 -The **Open Quantum Safe (OQS) project** has the goal of developing and prototyping quantum-resistant cryptography. More information on OQS can be found on our website: https://openquantumsafe.org/ and on Github at https://github.com/open-quantum-safe/. +The **Open Quantum Safe (OQS) project** has the goal of developing and +prototyping quantum-resistant cryptography. More information on OQS can be +found on our website: and on Github at +. -**liboqs** is an open source C library for quantum-resistant cryptographic algorithms. Details about liboqs can be found in [README.md](https://github.com/open-quantum-safe/liboqs/blob/main/README.md). See in particular limitations on intended use. +**liboqs** is an open source C library for quantum-resistant cryptographic +algorithms. Details about liboqs can be found in +[README.md](https://github.com/open-quantum-safe/liboqs/blob/main/README.md). +See in particular limitations on intended use. liboqs can be used with the following Open Quantum Safe application integrations: -- **oqs-provider**: A standalone prototype [OpenSSL 3 provider](https://www.openssl.org/docs/manmaster/man7/provider.html) enabling liboqs-based quantum-safe and hybrid key authentication and exchange for TLS 1.3, X.509 certificate generation and CMS operations. -- **OQS-BoringSSL**: A prototype integration of liboqs-based authentication and key exchange into TLS 1.3 in our fork of BoringSSL; see https://github.com/open-quantum-safe/boringssl. -- **OQS-OpenSSH**: A prototype integration of liboqs-based authentication and key exchange into Secure Shell (SSH) version 2 in our fork of OpenSSH; see https://github.com/open-quantum-safe/openssh. - -Several [demos](https://github.com/open-quantum-safe/oqs-demos) are available for using the above libraries in applications, including Apache, Chromium, curl, haproxy, nginx, and Wireshark. - -liboqs can also be used in the following programming languages via language-specific wrappers: - -- C++, via https://github.com/open-quantum-safe/liboqs-cpp -- Go, via https://github.com/open-quantum-safe/liboqs-go -- Java, via https://github.com/open-quantum-safe/liboqs-java -- Python 3, via https://github.com/open-quantum-safe/liboqs-python -- Rust, via https://github.com/open-quantum-safe/liboqs-rust - -# Release notes -liboqs 0.15.0 was released on Friday, Nov 14, 2025. - -## Deprecation notice -liboqs 0.15.0 is the last version to officially support SPHINCS+. SPHINCS+ will be removed in the 0.16.0 release and replaced by SLH-DSA. liboqs 0.15.0 also removes support for Dilithium. - -## Security issues -None reported - - -## Significant changes -- **Integrated SLH-DSA implementation from [pq-code-package/slhdsa-c](https://github.com/pq-code-package/slhdsa-c/)** - - SLH-DSA ACVP tests ([#2237](https://github.com/open-quantum-safe/liboqs/pull/2237)) - - Integrate SLH-DSA-C Library ([#2175](https://github.com/open-quantum-safe/liboqs/pull/2175)) -- Added NTRU back ([#2176](https://github.com/open-quantum-safe/liboqs/pull/2176)) -- Removed all Dilithium implementations ([#2275](https://github.com/open-quantum-safe/liboqs/pull/2275)) -- Replaced SPHINCS+ with SLH-DSA for CMake build option `OQS_ALGS_ENABLED=STD` ([#2290](https://github.com/open-quantum-safe/liboqs/pull/2290)) -- Updated CROSS to version 2.2 ([#2247](https://github.com/open-quantum-safe/liboqs/pull/2247)) -- Included DeriveEncapsulation functionality ([#2221](https://github.com/open-quantum-safe/liboqs/pull/2221)) -- Integrated ML-KEM implementation from ICICLE-PQC ([#2216](https://github.com/open-quantum-safe/liboqs/pull/2216)) - -## Bug fixes -- Fixed erroneously disabled LMS variants with build flag `OQS_ENABLE_SIG_STFL_LMS` ([#2310](https://github.com/open-quantum-safe/liboqs/pull/2310)) -- Fixed incorrect import in OV-III-pkc_skc ([#2299](https://github.com/open-quantum-safe/liboqs/pull/2299)) -- Fixed incorrect actual signature length in signature full-cycle speed test ([#2293](https://github.com/open-quantum-safe/liboqs/pull/2293)) -- Fixed ICICLE ML-KEM integration ([#2288](https://github.com/open-quantum-safe/liboqs/pull/2293)) -- Disabled strict aliasing on SPHINCS+-SHAKE ([#2264](https://github.com/open-quantum-safe/liboqs/pull/2264)) -- Fixed typo in `test_kem.c` ([#2281](https://github.com/open-quantum-safe/liboqs/pull/2281)) -- Fixed uninitialized `length_encaps_seed` for NTRU implementations ([#2266](https://github.com/open-quantum-safe/liboqs/pull/2266)) - - -- Changed 64 bit add to 32 bit add to wrap on 32 bit counter for AES-CTR AES-NI implementation ([#2252](https://github.com/open-quantum-safe/liboqs/pull/2252)) -- Improved random number generator security ([#2225](https://github.com/open-quantum-safe/liboqs/pull/2225)) -- Avoided invalid compiler options for MSVC ([#2239](https://github.com/open-quantum-safe/liboqs/pull/2239)) -- Added Classic McEliece sanitization patch ([#2218](https://github.com/open-quantum-safe/liboqs/pull/2218)) - -## Miscellaneous -- Deprecated `noregress` scripts ([#2295](https://github.com/open-quantum-safe/liboqs/pull/2295)) -- Updated no-pass explanation for constant-time testing ([#2294](https://github.com/open-quantum-safe/liboqs/pull/2294)) -- Fixed weekly test failures in GitHub Action ([#2285](https://github.com/open-quantum-safe/liboqs/pull/2294)) -- Improved algorithm support readability in README.md ([#2286](https://github.com/open-quantum-safe/liboqs/pull/2286)) -- Re-enabled all ACVP tests ([#2283](https://github.com/open-quantum-safe/liboqs/pull/2283)) -- Moved continuous benchmarking to weekly tests ([#2276](https://github.com/open-quantum-safe/liboqs/pull/2276)) -- Linked to contribution wishlist from CONTRIBUTING.md ([#2273](https://github.com/open-quantum-safe/liboqs/pull/2273)) -- Added content:read permission to scorecard workflow ([#2261](https://github.com/open-quantum-safe/liboqs/pull/2261)) -- Added guidance and questions on generative AI use ([#2269](https://github.com/open-quantum-safe/liboqs/pull/2269)) -- Moved `linux_arm_emulated` to extended tests ([#2236](https://github.com/open-quantum-safe/liboqs/pull/2236)) -- Fixed pluralization in docs: "key encapsulation mechanisms (KEMs)" ([#2255](https://github.com/open-quantum-safe/liboqs/pull/2255)) -- Fixed permissions for poutine_analysis job ([#2246](https://github.com/open-quantum-safe/liboqs/pull/2246)) -- Disabled testing on Travis CI ([#2248](https://github.com/open-quantum-safe/liboqs/pull/2248)) -- Upgraded Jinja to 3.1.6 ([#2214](https://github.com/open-quantum-safe/liboqs/pull/2214)) -- Updated license info for ML-KEM ([#2250](https://github.com/open-quantum-safe/liboqs/pull/2250)) -- Fixed typos across codebase ([#2244](https://github.com/open-quantum-safe/liboqs/pull/2244)) -- Restructured basic checks ([#2233](https://github.com/open-quantum-safe/liboqs/pull/2233)) -- Fixed code scanning workflow ([#2217](https://github.com/open-quantum-safe/liboqs/pull/2217)) -- Changed Nix install action to verified ([#2212](https://github.com/open-quantum-safe/liboqs/pull/2212)) -- Removed `armel` comment ([#2231](https://github.com/open-quantum-safe/liboqs/pull/2231)) -- Removed `armel` support from `PLATFORMS.md` ([#2232](https://github.com/open-quantum-safe/liboqs/pull/2232)) -- Added Poutine SASL ([#2213](https://github.com/open-quantum-safe/liboqs/pull/2213)) -- Updated nixpkgs from 24.05 to 25.05 ([#2187](https://github.com/open-quantum-safe/liboqs/pull/2187)) -- Added Custom Timeout to CI ([#2189](https://github.com/open-quantum-safe/liboqs/pull/2189)) -- Updated ACVP to 1.1.0.40 ([#2172](https://github.com/open-quantum-safe/liboqs/pull/2172)) -- Switched to dev mode for 0.14.1 ([#2199](https://github.com/open-quantum-safe/liboqs/pull/2199)) - -## New contributors -- Ganyu (Bruce) Xu (@xuganyu96) -- Ethan Li (@lir2002) -- @nonam3e (associated with Ingonyama) -- Saito Masataka (@saitomst) -- @max-p-log-p -- Vibhav Tiwari (@vibhav950) -- Dmitry (@mdqst) -- Rodrigo Martín (@RodriM11) -- @sukrucildirr -- Kitsios Konstantinos (@kitsiosk) - - +- **oqs-provider**: A standalone prototype [OpenSSL 3 +provider](https://www.openssl.org/docs/manmaster/man7/provider.html) enabling +liboqs-based quantum-safe and hybrid key authentication and exchange for TLS +1.3, X.509 certificate generation and CMS operations. +- **OQS-BoringSSL**: A prototype integration of liboqs-based authentication and +key exchange into TLS 1.3 in our fork of BoringSSL; see +. +- **OQS-OpenSSH**: A prototype integration of liboqs-based authentication and +key exchange into Secure Shell (SSH) version 2 in our fork of OpenSSH; see +. + +Several [demos](https://github.com/open-quantum-safe/oqs-demos) are available +for using the above libraries in applications, including Apache, Chromium, +curl, haproxy, nginx, and Wireshark. + +liboqs can also be used in the following programming languages via +language-specific wrappers: + +- C++, via +- Go, via +- Java, via +- Python 3, via +- Rust, via + +## Release notes + +liboqs 0.16.0-rc1 was released on Wednesday, June 24, 2026. + +### Deprecation notice + +SPHINCS+ was removed in 0.16.0. + +### Security issues + +- Fixed uninitialized `encaps_derand` pointer dereference +[#2460](https://github.com/open-quantum-safe/liboqs/pull/2460) +- Fixed out-of-bounds read in XMSS/XMSS^MT signature verification +[077e32a](https://github.com/open-quantum-safe/liboqs/commit/077e32a) +[#2384](https://github.com/open-quantum-safe/liboqs/pull/2384) +- Fixed Integer underflow in CROSS `crypto_sign_open()` +[25d0a9e](https://github.com/open-quantum-safe/liboqs/commit/25d0a9e) +- Fixed incorrect array size when calling `secure_clean` +[ab0e07c](https://github.com/open-quantum-safe/liboqs/commit/ab0e07c) +- Implemented optimization barrier `OQS_MEM_BLACK_BOX` and applied to +`ct_select` in FrodoKEM +[#2431](https://github.com/open-quantum-safe/liboqs/pull/2431) + +### Significant change + +#### FrodoKEM algorithm change + +[#2192](https://github.com/open-quantum-safe/liboqs/pull/2192), +[#2342](https://github.com/open-quantum-safe/liboqs/pull/2342) + +Existing FrodoKEM in 0.15.0 was renamed to ephemeral FrodoKEM +(`KEM_efrodokem_<640|976|1344>_`), and the salted variant of FrodoKEM +was added under the prior names (`KEM_frodokem_<640|976|1344>_`). + +Ephemeral FrodoKEM is recommended for applications where each keypair will +encapsulate only a small number of shared secrets and ciphertexts. Standard +(salted) FrodoKEM is recommended for applications where each keypair is +expected to encapsulate large number of ciphertexts. Please consult +[upstream](https://github.com/microsoft/PQCrypto-LWEKE/#frodokem-learning-with-errors-key-encapsulation) +for more details. + +#### mldsa-native integration + +[#2284](https://github.com/open-quantum-safe/liboqs/pull/2284), +[#2391](https://github.com/open-quantum-safe/liboqs/pull/2391), +[#3445](https://github.com/open-quantum-safe/liboqs/pull/3445) + +mldsa-native is a secure, fast, and portable C90 implementation of the ML-DSA +post-quantum signature standard. It also includes optimized builds for x86_64 +and aarch64. It is now the default implementation behind +`SIG_ml_dsa_<44|65|87>`. + +#### Updated HQC implementation + +[#2407](https://github.com/open-quantum-safe/liboqs/pull/2407) + +The HQC implementations in liboqs were updated to 20250822 spec. Its upstream +switched from PQClean to the [official repo](https://gitlab.com/pqc-hqc/hqc). +`KEM_hqc_<1|3|5>` is now enabled by default. + +#### MQOM integration and memory-optimized build flag + +[#2385](https://github.com/open-quantum-safe/liboqs/pull/2385), +[#2367](https://github.com/open-quantum-safe/liboqs/pull/2367) + +MQOM is a third-round candidate in NIST's Additional Digital Signatures for the +PQC Standardization Process. Portable, x86_64-optimized, and memory-optimized +implementations were integrate into liboqs under `OQS_ENABLE_SIG_MQOM`. + +A new build flag `OQS_MEMOPT_BUILD` can now be used to switch to +memory-optimized builds for algorithms that have memory-optimized +implementations. + +#### OpenSSH implementation of NTRU Prime + +[#2356](https://github.com/open-quantum-safe/liboqs/pull/2356) + +A public-domain OpenSSH implementation of NTRUPrime761 replaced the PQClean +implementation as the default backend for `KEM_ntruprime_sntrup761`. + +### Bug fixes + +- Fixed incremental absorption bug in AVX512VL SHA3-512 +[#2442](https://github.com/open-quantum-safe/liboqs/pull/2442) +- Implemented fallback for when `EVP_DigestSqueeze` is unavailable +[#2433](https://github.com/open-quantum-safe/liboqs/pull/2433) +- Added API for detecting stateful signature support at runtime +[#2434](https://github.com/open-quantum-safe/liboqs/pull/2434) +- Fixed missing initialization and indexing bug in LMS +[#2416](https://github.com/open-quantum-safe/liboqs/pull/2416) +- Fixed erroneous MAYO_OK despite failed sample_solution() attempts in MAYO +[#2403](https://github.com/open-quantum-safe/liboqs/pull/2403) +- Limited pytest parallelism to prevent memory exhaustion in constrained +environment [#2397](https://github.com/open-quantum-safe/liboqs/pull/2397) +- Fixed cuPQC ML-KEM derand symbol names and `#if/#elif` chains +[#2396](https://github.com/open-quantum-safe/liboqs/pull/2396) +- Tightened Windows compiler detection +[#2394](https://github.com/open-quantum-safe/liboqs/pull/2394) +- Fixed mismatched macros in LMS +[#2379](https://github.com/open-quantum-safe/liboqs/pull/2379) +- Made fuzzers tolerant to disabled algorithms +[#2359](https://github.com/open-quantum-safe/liboqs/pull/2359) +- Removed inlined exponentiation in CROSS-RSDPG-1 +[#2357](https://github.com/open-quantum-safe/liboqs/pull/2357) +- Fixed incorrect arg register update in AVX512 Keccak +[#2330](https://github.com/open-quantum-safe/liboqs/pull/2330) + +### Miscellaneous + +- Update mlkem-native to v1.2.0 +[#2470](https://github.com/open-quantum-safe/liboqs/pull/2470) + + +- Removed legacy HQC constant-time test +[#2467](https://github.com/open-quantum-safe/liboqs/pull/2467) +- Download Intel SDE from alternative source +[#2463](https://github.com/open-quantum-safe/liboqs/pull/2463) +- Updated algorithm support information +[#2441](https://github.com/open-quantum-safe/liboqs/pull/2441) +- Added NIST LMS Signature verify KATs +[#2435](https://github.com/open-quantum-safe/liboqs/pull/2435) +- Fixed comments on SHA3-AVX512VL assembly file. Thank you Anthony Plank for +reporting the issue +[#2438](https://github.com/open-quantum-safe/liboqs/pull/2438) +- Fixed latent warnings exposed by refreshed CI container images +[#2430](https://github.com/open-quantum-safe/liboqs/pull/2430) +- Added common dependencies with `include_only` in `copy_from_upstream` +[#2382](https://github.com/open-quantum-safe/liboqs/pull/2382) +- Documented algorithm support levels +[#2413](https://github.com/open-quantum-safe/liboqs/pull/2413) +- Updated Dependabot configuration +[#2420](https://github.com/open-quantum-safe/liboqs/pull/2420) +- Added @loganaden as codeowner for Kyber +[#2421](https://github.com/open-quantum-safe/liboqs/pull/2421) +- Bumped `gitpython` version for `copy_from_upstream` +[#2414](https://github.com/open-quantum-safe/liboqs/pull/2414) +- Updated GOVERNANCE.md and CODEOWNERS +[#2410](https://github.com/open-quantum-safe/liboqs/pull/2410) +- Added fuzz harness for LMS/XMSS signature verification +[#2398](https://github.com/open-quantum-safe/liboqs/pull/2398) +[#2412](https://github.com/open-quantum-safe/liboqs/pull/2412) +- Added fuzz harness for XMSS signature verification +[#2399](https://github.com/open-quantum-safe/liboqs/pull/2399) +[#2400](https://github.com/open-quantum-safe/liboqs/pull/2400) +- Moved compiler optimization level to CMAKE_BUILD_TYPE +[#2383](https://github.com/open-quantum-safe/liboqs/pull/2383) +- Updated pytest package version +[#2408](https://github.com/open-quantum-safe/liboqs/pull/2408) +- Demoted armhf to tier 3 supported platform +[#2406](https://github.com/open-quantum-safe/liboqs/pull/2406) +- Added Wycheproof tests for ML-DSA +[#2378](https://github.com/open-quantum-safe/liboqs/pull/2378) +- Added overflow check for OQS_MEM_calloc arguments +[#2377](https://github.com/open-quantum-safe/liboqs/pull/2377) +- Updated Wycheproof tests ML-KEM +[#2373](https://github.com/open-quantum-safe/liboqs/pull/2373) +- Updated Zephyr CI tests to recent versions +[#2369](https://github.com/open-quantum-safe/liboqs/pull/2369) +- Documented KAT sources and hash verification process +[#2363](https://github.com/open-quantum-safe/liboqs/pull/2363) +- Added support for ML-DSA pre-hash sign ACVP test vectors +[#2362](https://github.com/open-quantum-safe/liboqs/pull/2362) +- Added external-mu sign gen ACVP tests for ML-DSA +[#2352](https://github.com/open-quantum-safe/liboqs/pull/2352) +- Cached ACVP test vectors +[#2354](https://github.com/open-quantum-safe/liboqs/pull/2354) +- Added OQS_SIG_sign methods tests in vectors_sig +[#2350](https://github.com/open-quantum-safe/liboqs/pull/2350) +- Added the path to the binary include dir +[#2312](https://github.com/open-quantum-safe/liboqs/pull/2312) +- Removed local copies of ACVP test vectors +[#2303](https://github.com/open-quantum-safe/liboqs/pull/2303) +- New stylesheet for Doxygen-generated documentation +[#2337](https://github.com/open-quantum-safe/liboqs/pull/2337) +- Docs: List all optimized implementations +[#2333](https://github.com/open-quantum-safe/liboqs/pull/2333) +- Fixed README href formatting +[#2323](https://github.com/open-quantum-safe/liboqs/pull/2323) +- Unpined OQS_MINIMAL_BUILD alg list link from specific commit +[#2326](https://github.com/open-quantum-safe/liboqs/pull/2326) + +### New contributors + +- Vishnu Ajith (@Vishnu2707) +- William Bates (@will-bates11) +- Nelonn (@Nelonn) +- Abhi S (@abhi-dev-engg) +- Ryad Benadjila (@rben-dev) +- Billy Brumley (@bbbrumley) +- saanvi ratra (@Anusaa35) +- Harshith Vasireddy (@ode) +- Laugenbraue (@mmarock) +- Sam Van de Velde (@samvandevelde) +- Emil Lundberg (@emlun) diff --git a/SECURITY.md b/SECURITY.md index 74908b16e0..560194223b 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -8,8 +8,8 @@ Using any code prior to 0.12.0 is strongly discouraged due to a [known security | Version | Supported | | ------- | ------------------ | -| 0.15.0 | :white_check_mark: | -| < 0.15 | :x: | +| 0.16.0 | :white_check_mark: | +| < 0.16 | :x: | ## Reporting a Vulnerability