You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This project is intended solely for research and benchmarking purposes. The tools and scripts provided in this repository are designed to evaluate the performance characteristics of Post-Quantum Cryptography (PQC) algorithms in controlled environments. They are not intended for production use or security-critical applications.
6
+
7
+
The maintainers of this project assume no liability for any consequences resulting from the use or misuse of this repository or its components.
8
+
9
+
Users are expected to understand the implications of enabling, modifying, or extending any parts of the framework, especially when integrating with cryptographic libraries and systems.
10
+
11
+
## Licence Compliance
12
+
13
+
This project complies with the licensing terms of all third-party software and libraries it utilises. All dependencies are downloaded and built locally during the setup process; however, this repository does include modified versions of specific source files from third-party projects where necessary.
14
+
15
+
In particular:
16
+
17
+
- Modified versions of the `test_kem_mem.c` and `test_sig_mem.c` files from the **Liboqs** project are distributed in this repository. These files have been adapted to support detailed memory benchmarking with reduced terminal output. The original MIT Licence is retained at the top of each modified file, and these modifications remain subject to that licence.
18
+
19
+
All other third-party dependencies are incorporated dynamically during setup:
20
+
21
+
-**Liboqs** and **OQS-Provider** are modified and built locally under the MIT Licence.
22
+
-**OpenSSL** is dynamically patched and built during setup under the Apache Licence 2.0.
23
+
-**pqax** is used without modification under the Creative Commons Zero v1.0 Universal (CC0) Licence.
24
+
25
+
Users are responsible for ensuring compliance with all relevant third-party licences, particularly if redistributing binaries or integrating this project into larger systems.
26
+
27
+
## HQC Algorithm Inclusion Disclaimer
28
+
The HQC KEM algorithms are disabled by default in recent versions of the Liboqs library due to a known security issue that breaks IND-CCA2 guarantees under specific attack models.
29
+
30
+
Despite this, the PQC Evaluation Tools framework provides an optional mechanism to enable HQC algorithms for the sole purpose of performance testing. When using the `--enable-hqc-algs` flag during setup, users will receive a clear warning and must explicitly confirm before HQC is included in the benchmarking environment.
31
+
32
+
If HQC is enabled:
33
+
34
+
- It must only be used within the provided testing tools.
35
+
- It must not be used in any production systems or real-world cryptographic deployments.
36
+
37
+
Enabling HQC is done at the user's own risk, and the project maintainers accept no responsibility for any issues arising from its inclusion.
@@ -56,7 +57,7 @@ The automated testing tool is currently only supported in the following environm
56
57
### Tested Dependency Libraries <!-- omit from toc -->
57
58
This version of the repository has been fully tested with the following library versions:
58
59
59
-
- Liboqs Version 0.12.0
60
+
- Liboqs Version 0.13.0
60
61
61
62
- OQS Provider Version 0.8.0
62
63
@@ -66,7 +67,9 @@ The repository is configured to pull the latest versions of the OQS projects whi
66
67
67
68
However, as the OQS libraries are still developing projects, if any major changes have occurred to their code bases, this project's automation scripts may not be able to accommodate this. If this does happen, please report an issue to this repositories GitHub page where it will be addressed as soon as possible. In the meantime, it is possible to change the versions of the OQS libraries used by the benchmarking suite. This is detailed further in the [Installation Instructions](#installation-instructions) section.
68
69
69
-
> Notice: Memory profiling for Falcon algorithm variants is currently non-functional on **ARM** systems due to issues with the scheme and the Valgrind Massif tool. Please see the [bug report](https://github.com/open-quantum-safe/liboqs/issues/1761) for details. Testing and parsing remain fully functional for all other algorithms.
70
+
> **Notice 1:** The HQC KEM algorithms are disabled by default in recent Liboqs versions due to a disclosed IND-CCA2 vulnerability. For benchmarking purposes, the setup process includes an optional flag to enable HQC, accompanied by a user confirmation prompt and warning. For instructions on enabling HQC, see the [Advanced Setup Configuration Guide](docs/advanced-setup-configuration.md), and refer to the [Disclaimer Document](./DISCLAIMER.md) for more information on this issue.
71
+
72
+
> **Notice 2:** Memory profiling for Falcon algorithm variants is currently non-functional on **ARM** systems due to issues with the scheme and the Valgrind Massif tool. Please see the [bug report](https://github.com/open-quantum-safe/liboqs/issues/1761) for details. Testing and parsing remain fully functional for all other algorithms.
70
73
71
74
## Installation Instructions
72
75
The standard setup process uses the latest versions of the OQS libraries and performs automatic system detection and installation of the benchmarking suite. It supports various installation modes that determine which OQS libraries are downloaded and built, depending on your environment.
For advanced setup options, including `safe-mode` for using the last tested versions of the dependency libraries, custom OpenSSL `speed.c` limits, and additional build features, please refer to the [Advanced Setup Configuration Guide](docs/advanced-setup-configuration.md).
142
+
For advanced setup options, including:
143
+
-`safe-mode` for using the last tested versions of the dependency libraries,
144
+
- Custom OpenSSL `speed.c` limits,
145
+
- Enabling HQC algorithms in Liboqs
146
+
147
+
Please refer to the [Advanced Setup Configuration Guide](docs/advanced-setup-configuration.md).
140
148
141
149
## Automated Testing Tools
142
150
The repository provides two categories of automated benchmarking:
@@ -150,15 +158,12 @@ The testing tools are located in the `scripts/test-scripts` directory and are fu
150
158
### Liboqs Performance Testing
151
159
This tool benchmarks CPU and memory usage for various PQC algorithms supported by the Liboqs library. It produces detailed performance metrics for each tested algorithm.
152
160
153
-
The test script can be executed using the following command:
**Note:** HQC KEM algorithms are disabled by default in the latest Liboqs version due to a known vulnerability. The main setup script provides an option to enable HQC for benchmarking if required. Please refer to the [Advanced Setup Configuration Guide](docs/advanced-setup-configuration.md) for more information.
166
+
162
167
### OQS-Provider TLS Performance Testing
163
168
This tool is focused on benchmarking the performance of PQC and Hybrid-PQC algorithms when integrated within OpenSSL (3.4.1) via the OQS-Provider library.
164
169
@@ -174,6 +179,12 @@ For detailed usage instructions, please refer to:
**Note:** The following signature algorithms are excluded from the automated TLS benchmarking due to known incompatibilities with [RFC 8446](https://datatracker.ietf.org/doc/html/rfc8446):
183
+
- UOV-based schemes (e.g., OV_Is, OV_III, and their hybrid variants)
184
+
- CROSSrsdp256small
185
+
186
+
These algorithms remain available for computational benchmarking using the Liboqs tools.
187
+
177
188
### Testing Output Files
178
189
After the testing has been completed, unparsed results will be stored in the `test-data/up-results` directory:
179
190
@@ -223,6 +234,12 @@ Please refer to the [Performance Metrics Guide](docs/performance-metrics-guide.m
This project is licensed under the MIT License - see the [LICENSE](LICENSE)
256
+
This project is licensed under the MIT License – see the [LICENSE](LICENSE) file for details.
240
257
241
258
## Acknowledgements
242
-
This project depends on:
243
259
244
-
1.[Liboqs](https://github.com/open-quantum-safe/liboqs) - This project includes modified versions of files from the `liboqs` project. These modified files are subject to the `liboqs` MIT license, which can be found at the top of each modified file.
260
+
This project depends on the following third-party software and libraries:
261
+
262
+
1.**[Liboqs](https://github.com/open-quantum-safe/liboqs)** – Used to provide standalone implementations of post-quantum key encapsulation mechanisms (KEMs) and digital signature algorithms for computational performance testing. This project includes modified versions of the `test_kem_mem.c` and `test_sig_mem.c` files in order to collect detailed memory usage metrics during benchmarking with minimal terminal output. These modifications remain under the original MIT License, which is noted at the top of each modified file.
263
+
264
+
2.**[OQS-Provider](https://github.com/open-quantum-safe/oqs-provider)** – Used to integrate post-quantum algorithms from `Liboqs` into OpenSSL via the provider interface, enabling TLS-based performance testing. Modifications include dynamically altering the `generate.yml` template to optionally enable all signature algorithms that are disabled by default. The provider is built locally and dynamically linked into OpenSSL. It is licensed under the MIT License.
245
265
246
-
2.[OQS-Provider](https://github.com/open-quantum-safe/openssl) - This project relies on the OpenSSL provider created by the `OQS-Provider` project. The project is subject to a MIT licence, details of which can be found in the projects repositories root directory.
266
+
3.**[OpenSSL](https://github.com/openssl/openssl)** – Used as the core cryptographic library for TLS testing and benchmarking. This project applies runtime modifications during the build process to increase the hardcoded algorithm limits in `speed.c` (`MAX_KEM_NUM` and `MAX_SIG_NUM`) to support benchmarking of a broader algorithm set, and to append configuration directives to `openssl.cnf` to register and activate the `oqsprovider`. OpenSSL is licensed under the Apache License 2.0.
247
267
248
-
3.[OpenSSL](https://github.com/openssl/openssl) - This project utilises the OpenSSL library through its own scripts and the libraries provided by the OQS Project. The OpenSSL project is under the Apache 2.0 license, details of which can be found in the projects repositories root directory.
268
+
4.**[pqax](https://github.com/mupq/pqax)** – Used to enable access to the ARM Performance Monitor Unit (PMU) on ARM-based systems such as Raspberry Pi. This allows precise benchmarking of CPU cycles. No modifications are made to the original source code. Pqax is licensed under the Creative Commons Zero v1.0 Universal (CC0) license, placing it in the public domain.
249
269
250
-
4.[pqax](https://github.com/mupq/pqax/tree/main) - This project uses the pqax library to enable arm PMU on Raspberry Pi devices. The pqax library is licensed under the Creative Commons Zero v1.0 Universal license, which dedicates the work to the public domain.
Copy file name to clipboardExpand all lines: RELEASE.md
+10-25Lines changed: 10 additions & 25 deletions
Original file line number
Diff line number
Diff line change
@@ -1,14 +1,8 @@
1
-
# Version v0.3.0 Release
2
-
Welcome to the version 0.3.0 release of the PQC-Evaluation-Tools project!
1
+
# Version v0.3.1 Release
2
+
Welcome to the version 0.3.1 release of the PQC-Evaluation-Tools project!
3
3
4
4
## Release Overview
5
-
The version 0.3.0 release of the PQC-Evaluation-Tools suite delivers key updates focused on compatibility, stability, and usability. It adds support for the latest version of the OQS libraries and has been upgraded to use the latest version of OpenSSL (version 3.4.1).
6
-
7
-
Automation has been refined with fixes to control signalling, improved handling of TLS benchmarking ports, and more robust detection of port conflicts. The suite now supports older Python versions, and script usability has been enhanced through clearer naming and new help flags.
8
-
9
-
TLS speed benchmarking is now more stable, resolving issues caused by control signal timing and newer versions of the OQS-Provider library to break the OpenSSL `s_speed` tool when using all its supported algorithms. The release also includes an updated generate.yml for OQS-Provider, along with documentation improvements and general codebase clean-up.
10
-
11
-
These changes make the toolset more flexible and reliable for evaluating PQC performance, particularly in TLS-based deployments.
5
+
Version 0.3.1 is a maintenance release focused on resolving critical bugs introduced by recent changes in upstream dependencies. It addresses issues affecting algorithm detection, TLS handshake stability, and improves exception handling for computational performance testing on ARM-based systems. Additionally, a licence compliance review was completed to ensure all third-party usage remains properly attributed and documented.
12
6
13
7
## Project Features
14
8
The project provides automation for:
@@ -23,22 +17,13 @@ The project provides automation for:
23
17
24
18
- Parsing of the PQC performance data, where data from multiple machines can be parsed, averaged, and then compared against each other.
25
19
26
-
## Change Log
27
-
* Verify project support for liboqs version 0.12.0 in [#9](https://github.com/crt26/pqc-evaluation-tools/pull/9)
28
-
* Update OQS-Provider Script and Variable Naming in [#10](https://github.com/crt26/pqc-evaluation-tools/pull/10)
29
-
* Upgrade OpenSSL Dependency to Version 3.4.0 in [#11](https://github.com/crt26/pqc-evaluation-tools/pull/11)
30
-
* Fix Control Signalling Issue in Automated TLS Benchmarking Scripts in [#13](https://github.com/crt26/pqc-evaluation-tools/pull/13)
31
-
* Add Support for Older Versions of Python in [#17](https://github.com/crt26/pqc-evaluation-tools/pull/17)
32
-
* Upgrade OpenSSL Dependency to Security Patch Version 3.4.1 in [#19](https://github.com/crt26/pqc-evaluation-tools/pull/19)
33
-
* Make TLS Benchmarking Ports Configurable and Improve Conflict Handling in [#20](https://github.com/crt26/pqc-evaluation-tools/pull/20)
34
-
* Update Modified OQS-Provider generate.yml File in [#22](https://github.com/crt26/pqc-evaluation-tools/pull/22)
35
-
* Fix False Positives in Port Usage Checks & Relocate Default TLS Benchmarking Ports in [#24](https://github.com/crt26/pqc-evaluation-tools/pull/24)
36
-
* Fix TLS Speed Benchmark Failure Caused by Excessive Algorithm Loading in [#26](https://github.com/crt26/pqc-evaluation-tools/pull/26)
37
-
* Add Configurable Control Signal Sleep Time to Automated TLS Testing Scripts in [#29](https://github.com/crt26/pqc-evaluation-tools/pull/29)
38
-
* Add support for help Flags in Project Scripts in [#32](https://github.com/crt26/pqc-evaluation-tools/pull/32)
39
-
* Update and Improve Documentation and Clean Codebase in [#33](https://github.com/crt26/pqc-evaluation-tools/pull/33)
* Fix automated algorithm detection and TLS handshake failures due to UOV signature size limits in [#44](https://github.com/crt26/pqc-evaluation-tools/pull/44)
22
+
* Fix ARM PMU access loss after reboot on some Raspberry Pi devices in [#45](https://github.com/crt26/pqc-evaluation-tools/pull/45)
23
+
* Fix HQC not being enabled by default in Liboqs builds in [#47](https://github.com/crt26/pqc-evaluation-tools/pull/47)
24
+
* Complete licence compliance review for third-party dependencies in [#51](https://github.com/crt26/pqc-evaluation-tools/pull/51)
0 commit comments