Skip to content

Commit 09bb179

Browse files
authored
Merge pull request #817 from pq-code-package/beta-release
Release v1.0.0-beta
2 parents f2b1a7e + be26392 commit 09bb179

File tree

2 files changed

+42
-18
lines changed

2 files changed

+42
-18
lines changed

README.md

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ mlkem-native includes native backends for AArch64 and AVX2, offering competitive
1414
(see [benchmarks](https://pq-code-package.github.io/mlkem-native/dev/bench/)). The frontend and the C backend (i.e., all C code in [mlkem/*](mlkem) and [mlkem/fips202/*](mlkem/fips202)) are verified
1515
using [CBMC](https://github.com/diffblue/cbmc) to be free of undefined behaviour. In particular, there are no out of
1616
bounds accesses, nor integer overflows during optimized modular arithmetic.
17+
HOL-Light is used to verify functional correctness of selected AArch64 assembly routines.
1718

1819
mlkem-native is supported by the [Post-Quantum Cryptography Alliance](https://pqca.org/) as part of the [Linux Foundation](https://linuxfoundation.org/).
1920

@@ -59,8 +60,15 @@ undefined behaviour in C, including out of bounds memory accesses and integer ov
5960
all C code in [mlkem/*](mlkem) and [mlkem/fips202/*](mlkem/fips202) involved in running mlkem-native with its C backend.
6061
See [proofs/cbmc](proofs/cbmc) for details.
6162

62-
HOL-Light functional correctness proofs for the optimized AArch64 NTT [ntt.S](dev/aarch64_opt/src/ntt.S) and inverse NTT [intt.S](dev/aarch64_opt/src/intt.S)
63-
can be found in [proofs/hol_light/arm](proofs/hol_light/arm). These proofs were contributed by John Harrison, and are
63+
HOL-Light functional correctness proofs
64+
can be found in [proofs/hol_light/arm](proofs/hol_light/arm).
65+
So far, the following functions have been proven correct:
66+
- AArch64 NTT [ntt.S](mlkem/native/aarch64/src/ntt.S)
67+
- AArch64 inverse NTT [intt.S](mlkem/native/aarch64/src/ntt.S)
68+
- AArch64 Keccak x1 [keccak_f1600_x1_scalar_asm_opt.S](mlkem/fips202/native/aarch64/src/keccak_f1600_x1_scalar_asm_opt.S)
69+
- AArch64+SHA3 Keccak x1 [keccak_f1600_x1_v84a_asm_clean.S](mlkem/fips202/native/aarch64/src/keccak_f1600_x1_v84a_asm_clean.S)
70+
71+
These proofs were contributed by John Harrison, and are
6472
utilizing the verification infrastructure provided by [s2n-bignum](https://github.com/awslabs/s2n-bignum) infrastructure.
6573

6674
## State

RELEASE.md

Lines changed: 32 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,44 @@
11
[//]: # (SPDX-License-Identifier: CC-BY-4.0)
2-
mlkem-native alpha
2+
mlkem-native v1.0.0-beta
33
==================
44

55
About
66
-----
77

8-
mlkem-native is a C90 implementation of [ML-KEM](https://doi.org/10.6028/NIST.FIPS.203) targeting
9-
PC, mobile and server platforms. It is a fork of the ML-KEM [reference
10-
implementation](https://github.com/pq-crystals/kyber/tree/main/ref).
8+
mlkem-native is a secure, fast and portable C90 implementation of [ML-KEM](https://doi.org/10.6028/NIST.FIPS.203).
9+
It is a fork of the ML-KEM [reference implementation](https://github.com/pq-crystals/kyber/tree/main/ref).
1110

12-
mlkem-native aims to be fast, secure, and easy to use: It provides native code backends in C, AArch64 and
13-
x86_64, offering state-of-the-art performance on most Arm, Intel and AMD platforms. The C code in [mlkem/*](mlkem) is
14-
verified using [CBMC](https://github.com/diffblue/cbmc) to be free of undefined behavior. In particular, there are no
15-
out of bounds accesses, nor integer overflows during optimized modular arithmetic.
11+
mlkem-native includes native backends for AArch64 and AVX2, offering competitive performance on most Arm, Intel and AMD platforms
12+
(see [benchmarks](https://pq-code-package.github.io/mlkem-native/dev/bench/)). The frontend and the C backend (i.e., all C code in [mlkem/*](mlkem) and [mlkem/fips202/*](mlkem/fips202)) are verified
13+
using [CBMC](https://github.com/diffblue/cbmc) to be free of undefined behaviour. In particular, there are no out of
14+
bounds accesses, nor integer overflows during optimized modular arithmetic.
15+
HOL-Light is used to verify functional correctness of selected AArch64 assembly routines.
16+
17+
mlkem-native is supported by the [Post-Quantum Cryptography Alliance](https://pqca.org/) as part of the [Linux Foundation](https://linuxfoundation.org/).
1618

1719
Release notes
1820
=============
1921

20-
This is first official release of mlkem-native, a C90 implementation of [ML-KEM](https://doi.org/10.6028/NIST.FIPS.203) targeting
21-
PC, mobile and server platforms.
22-
This alpha release of mlkem-native features complete backends in C, AArch64 and x86_64, offering state-of-the-art performance on most Arm, Intel and AMD platforms.
22+
This is the second official release of mlkem-native, a secure, fast and portable C90 implementation of [ML-KEM](https://doi.org/10.6028/NIST.FIPS.203).
23+
This beta release expands the scope of formal verification (using CBMC and HOL-Light), improves FIPS compliance by adding improves FIPS compliance by adding PCT, buffer zeroization, and documentation, and increases the confidence in resistance against timing side-channels through extensive Valgrind-based testing.
24+
25+
What's New
26+
----------
27+
28+
Compared to [v1.0.0-alpha](https://github.com/pq-code-package/mlkem-native/releases/tag/v1.0.0-alpha) the following
29+
major improvements have been integrated into mlkem-native:
30+
- Full CBMC proof coverage of the C frontend and backend including FIPS202
31+
- Destruction of intermediate values in https://github.com/pq-code-package/mlkem-native/pull/763
32+
- Functional correctness proofs for AArch64 NTT and INTT in https://github.com/pq-code-package/mlkem-native/pull/662
33+
- Functional correctness proofs for Keccakx1 in https://github.com/pq-code-package/mlkem-native/pull/826 and https://github.com/pq-code-package/mlkem-native/pull/821
34+
- Support for single compilation-unit builds in https://github.com/pq-code-package/mlkem-native/pull/612
35+
- Addition of the pair-wise consistency test in https://github.com/pq-code-package/mlkem-native/pull/769
36+
- Valgrind-based constant-time tests in https://github.com/pq-code-package/mlkem-native/pull/687
37+
- Valgrind-based detection of secret-dependent variable-latency instruction in https://github.com/pq-code-package/mlkem-native/pull/693
38+
- Improved x86_64 backend performance in https://github.com/pq-code-package/mlkem-native/pull/709
39+
- Documentation of differences to the reference implementation in https://github.com/pq-code-package/mlkem-native/pull/799
40+
- Addition of references to FIPS algorithms and equations to relevant functions in https://github.com/pq-code-package/mlkem-native/pull/776
41+
- Numerous documentation improvements
42+
- Additional examples on using mlkem-native (see [examples/](examples/))
2343

24-
With this alpha release we intend to spark experiments on integrations of mlkem-native in other software.
25-
We appreciate any feedback on how to improve and extend mlkem-native in the future.
26-
Please open an issue on https://github.com/pq-code-package/mlkem-native.
27-
While we continue on improving and extending mlkem-native, we expect that the majority of the code is stable.
28-
In particular, the core external APIs are stable; we will potentially expose additional functions (e.g., operating on expanded secret keys) in the future.
44+
See the full change log here: https://github.com/pq-code-package/mlkem-native/compare/v1.0.0-alpha...v1.0.0-beta

0 commit comments

Comments
 (0)