|
1 | 1 | [//]: # (SPDX-License-Identifier: CC-BY-4.0) |
2 | | -mlkem-native v1.0.0-beta |
| 2 | +mlkem-native v1.0.0 |
3 | 3 | ================== |
4 | 4 |
|
5 | | -About |
6 | | ------ |
7 | | - |
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). |
10 | | - |
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/src/fips202/*](mlkem/src/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/). |
18 | | - |
19 | 5 | Release notes |
20 | | -============= |
| 6 | +------------- |
| 7 | + |
| 8 | +v1.0.0 is the first stable release of mlkem-native, a secure, fast and portable C90 implementation of [ML-KEM](https://csrc.nist.gov/pubs/fips/202/final) derived from the ML-KEM reference implementation. mlkem-native v1.0.0 offers: |
| 9 | +* High maintainability and extensibility through modular frontend/backend design. |
| 10 | +* High performance through Arch64 and AVX2 assembly backends and the use of the [SLOTHY super-optimizer](https://github.com/slothy-optimizer/slothy). |
| 11 | +* High assurance through memory- and type-safety proofs for the C frontend + backend, functional correctness proofs for all AArch64 assembly, and extensive constant-time testing. |
21 | 12 |
|
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. |
| 13 | +mlkem-native-v1.0.0 is uniformly licensed Apache-2.0 OR MIT OR ISC, giving consumers the choice to use any of these licenses. |
24 | 14 |
|
25 | 15 | What's New |
26 | 16 | ---------- |
27 | 17 |
|
28 | | -Compared to [v1.0.0-alpha](https://github.com/pq-code-package/mlkem-native/releases/tag/v1.0.0-alpha) the following |
| 18 | +Compared to [v1.0.0-beta](https://github.com/pq-code-package/mlkem-native/releases/tag/v1.0.0-beta) the following |
29 | 19 | 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 |
| 20 | + |
| 21 | +- Completion of functional correctness proofs of the AArch64 backend |
| 22 | +- Uniform licensing of all code in mlkem/* under Apache-2.0 OR ISC OR MIT |
| 23 | +- Numerous configuration option improvements |
41 | 24 | - Numerous documentation improvements |
42 | | -- Additional examples on using mlkem-native (see [examples/](examples/)) |
43 | 25 |
|
44 | | -See the full change log here: https://github.com/pq-code-package/mlkem-native/compare/v1.0.0-alpha...v1.0.0-beta |
| 26 | +See the full change log here: https://github.com/pq-code-package/mlkem-native/compare/v1.0.0-beta...v1.0.0 |
0 commit comments