|
1 | 1 | [//]: # (SPDX-License-Identifier: CC-BY-4.0)
|
2 |
| -mlkem-native alpha |
| 2 | +mlkem-native v1.0.0-beta |
3 | 3 | ==================
|
4 | 4 |
|
5 | 5 | About
|
6 | 6 | -----
|
7 | 7 |
|
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). |
11 | 10 |
|
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/). |
16 | 18 |
|
17 | 19 | Release notes
|
18 | 20 | =============
|
19 | 21 |
|
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/)) |
23 | 43 |
|
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