Skip to content

Commit a13274f

Browse files
authored
Merge pull request #52 from crt26/develop
Merge Version 0.3.1 to Main
2 parents 9479f8d + cd7b334 commit a13274f

27 files changed

+375
-2193
lines changed

DISCLAIMER.md

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
2+
# Project Disclaimer
3+
4+
## General Disclaimer
5+
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.
38+
39+
For more information, see:
40+
- [Liboqs Pull Request #2122](https://github.com/open-quantum-safe/liboqs/pull/2122)
41+
- [Liboqs Issue #2118](https://github.com/open-quantum-safe/liboqs/issues/2118)
42+
- [PQC-Evaluation-Tools Issue #46](https://github.com/crt26/pqc-evaluation-tools/issues/46)

DISCLAIMER.txt

Lines changed: 0 additions & 8 deletions
This file was deleted.

LICENSE

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
MIT License
22

3-
Copyright (c) 2023 Callum Turino
3+
Copyright (c) 2023-2025 Callum Turino
44

55
Permission is hereby granted, free of charge, to any person obtaining a copy
66
of this software and associated documentation files (the "Software"), to deal

README.md

Lines changed: 35 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,8 @@ For details on the project's development and upcoming features, see the project'
4141
- [Parsing Script Usage](#parsing-script-usage)
4242
- [Parsed Results Output](#parsed-results-output)
4343
- [Additional Documentation](#additional-documentation)
44-
- [License](#license)
44+
- [Project Wiki Page](#project-wiki-page)
45+
- [Licence](#licence)
4546
- [Acknowledgements](#acknowledgements)
4647

4748
## Supported Hardware and Software
@@ -56,7 +57,7 @@ The automated testing tool is currently only supported in the following environm
5657
### Tested Dependency Libraries <!-- omit from toc -->
5758
This version of the repository has been fully tested with the following library versions:
5859

59-
- Liboqs Version 0.12.0
60+
- Liboqs Version 0.13.0
6061

6162
- OQS Provider Version 0.8.0
6263

@@ -66,7 +67,9 @@ The repository is configured to pull the latest versions of the OQS projects whi
6667

6768
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.
6869

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.
7073
7174
## Installation Instructions
7275
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.
@@ -136,7 +139,12 @@ touch .pqc_eval_dir_marker.tmp
136139
```
137140

138141
### Optional Setup Flags
139-
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).
140148

141149
## Automated Testing Tools
142150
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
150158
### Liboqs Performance Testing
151159
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.
152160

153-
The test script can be executed using the following command:
154-
```
155-
./full-liboqs-test.sh
156-
```
157-
158161
For detailed usage instructions, please refer to:
159162

160163
[Automated Liboqs Performance Testing Instructions](docs/testing-tools-usage/liboqs-performance-testing.md)
161164

165+
**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+
162167
### OQS-Provider TLS Performance Testing
163168
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.
164169

@@ -174,6 +179,12 @@ For detailed usage instructions, please refer to:
174179

175180
[Automated OQS-Provider TLS Performance Testing Instructions](docs/testing-tools-usage/oqsprovider-performance-testing.md)
176181

182+
**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+
177188
### Testing Output Files
178189
After the testing has been completed, unparsed results will be stored in the `test-data/up-results` directory:
179190

@@ -223,6 +234,12 @@ Please refer to the [Performance Metrics Guide](docs/performance-metrics-guide.m
223234
- [Project Scripts](docs/developer-information/project-scripts.md)
224235
- [Repository Structure](docs/developer-information/repository-directory-structure.md)
225236
- [Performance Metrics Guide](docs/performance-metrics-guide.md)
237+
- [Project Disclaimer](./DISCLAIMER.md)
238+
239+
### Project Wiki Page
240+
The information provided in the internal documentation is also available through the project's GitHub Wiki:
241+
242+
[PQC-Evaluation-Tools Wiki](https://github.com/crt26/pqc-evaluation-tools/wiki)
226243

227244
### Helpful External Documentation Links <!-- omit from toc -->
228245
- [Liboqs Webpage](https://openquantumsafe.org/liboqs/)
@@ -234,17 +251,19 @@ Please refer to the [Performance Metrics Guide](docs/performance-metrics-guide.m
234251
- [OpenSSL(3.4.1) Documentation](https://docs.openssl.org/3.4/)
235252
- [TLS 1.3 RFC 8446](https://www.rfc-editor.org/rfc/rfc8446)
236253

237-
## License
254+
## Licence
238255

239-
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.
240257

241258
## Acknowledgements
242-
This project depends on:
243259

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.
245265

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.
247267

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.
249269

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.

RELEASE.md

Lines changed: 10 additions & 25 deletions
Original file line numberDiff line numberDiff 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!
33

44
## 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.
126

137
## Project Features
148
The project provides automation for:
@@ -23,22 +17,13 @@ The project provides automation for:
2317

2418
- Parsing of the PQC performance data, where data from multiple machines can be parsed, averaged, and then compared against each other.
2519

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)
40-
41-
**Full Changelog**: https://github.com/crt26/pqc-evaluation-tools/compare/v0.2.1...v0.3.0
20+
## Change Log
21+
* 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)
25+
26+
**Full Changelog**: https://github.com/crt26/pqc-evaluation-tools/compare/v0.3.0...v0.3.1
4227

4328
## Important Notes
4429

cleaner.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#!/bin/bash
22

3-
# Copyright (c) 2025 Callum Turino
3+
# Copyright (c) 2023-2025 Callum Turino
44
# SPDX-License-Identifier: MIT
55

66
# Utility script for cleaning up project files produced during PQC benchmarking.

0 commit comments

Comments
 (0)