Skip to content

Commit ffd6e03

Browse files
committed
Reimplement AArch64 NTT 2/2: Switch from ML-KEM to ML-DSA
This is the second commit reimplementing the NTT based on the "Apache-2.0 OR ISC OR MIT"-licensed NTT and iNTT from mlkem-native. This commit changes the ML-KEM NTT into a ML-DSA NTT using minimal changes. Resolves #381 Signed-off-by: Matthias J. Kannwischer <[email protected]>
1 parent bee2a47 commit ffd6e03

File tree

6 files changed

+718
-584
lines changed

6 files changed

+718
-584
lines changed

BIBLIOGRAPHY.md

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ source code and documentation.
1414
- National Institute of Standards and Technology
1515
* URL: https://csrc.nist.gov/projects/cryptographic-module-validation-program/fips-140-3-ig-announcements
1616
* Referenced from:
17+
- [examples/bring_your_own_fips202/mldsa_native/config.h](examples/bring_your_own_fips202/mldsa_native/config.h)
18+
- [examples/bring_your_own_fips202/mldsa_native/sign.c](examples/bring_your_own_fips202/mldsa_native/sign.c)
1719
- [integration/liboqs/config_aarch64.h](integration/liboqs/config_aarch64.h)
1820
- [integration/liboqs/config_c.h](integration/liboqs/config_c.h)
1921
- [integration/liboqs/config_x86_64.h](integration/liboqs/config_x86_64.h)
@@ -45,6 +47,15 @@ source code and documentation.
4547
* URL: https://csrc.nist.gov/pubs/fips/204/final
4648
* Referenced from:
4749
- [README.md](README.md)
50+
- [examples/bring_your_own_fips202/mldsa_native/common.h](examples/bring_your_own_fips202/mldsa_native/common.h)
51+
- [examples/bring_your_own_fips202/mldsa_native/config.h](examples/bring_your_own_fips202/mldsa_native/config.h)
52+
- [examples/bring_your_own_fips202/mldsa_native/ntt.h](examples/bring_your_own_fips202/mldsa_native/ntt.h)
53+
- [examples/bring_your_own_fips202/mldsa_native/poly.c](examples/bring_your_own_fips202/mldsa_native/poly.c)
54+
- [examples/bring_your_own_fips202/mldsa_native/poly_kl.c](examples/bring_your_own_fips202/mldsa_native/poly_kl.c)
55+
- [examples/bring_your_own_fips202/mldsa_native/polyvec.c](examples/bring_your_own_fips202/mldsa_native/polyvec.c)
56+
- [examples/bring_your_own_fips202/mldsa_native/rounding.h](examples/bring_your_own_fips202/mldsa_native/rounding.h)
57+
- [examples/bring_your_own_fips202/mldsa_native/sign.c](examples/bring_your_own_fips202/mldsa_native/sign.c)
58+
- [examples/bring_your_own_fips202/mldsa_native/sign.h](examples/bring_your_own_fips202/mldsa_native/sign.h)
4859
- [mldsa/common.h](mldsa/common.h)
4960
- [mldsa/config.h](mldsa/config.h)
5061
- [mldsa/fips202/fips202.c](mldsa/fips202/fips202.c)
@@ -115,6 +126,22 @@ source code and documentation.
115126
* Referenced from:
116127
- [README.md](README.md)
117128

129+
### `NeonNTT`
130+
131+
* Neon NTT: Faster Dilithium, Kyber, and Saber on Cortex-A72 and Apple M1
132+
* Author(s):
133+
- Hanno Becker
134+
- Vincent Hwang
135+
- Matthias J. Kannwischer
136+
- Bo-Yin Yang
137+
- Shang-Yi Yang
138+
* URL: https://eprint.iacr.org/2021/986
139+
* Referenced from:
140+
- [dev/aarch64_clean/src/intt.S](dev/aarch64_clean/src/intt.S)
141+
- [dev/aarch64_clean/src/ntt.S](dev/aarch64_clean/src/ntt.S)
142+
- [mldsa/native/aarch64/src/intt.S](mldsa/native/aarch64/src/intt.S)
143+
- [mldsa/native/aarch64/src/ntt.S](mldsa/native/aarch64/src/ntt.S)
144+
118145
### `REF`
119146

120147
* CRYSTALS-Dilithium reference implementation
@@ -130,6 +157,9 @@ source code and documentation.
130157
* URL: https://github.com/pq-crystals/dilithium/tree/master/ref
131158
* Referenced from:
132159
- [README.md](README.md)
160+
- [examples/bring_your_own_fips202/mldsa_native/ntt.c](examples/bring_your_own_fips202/mldsa_native/ntt.c)
161+
- [examples/bring_your_own_fips202/mldsa_native/poly.c](examples/bring_your_own_fips202/mldsa_native/poly.c)
162+
- [examples/bring_your_own_fips202/mldsa_native/poly_kl.c](examples/bring_your_own_fips202/mldsa_native/poly_kl.c)
133163
- [mldsa/ntt.c](mldsa/ntt.c)
134164
- [mldsa/poly.c](mldsa/poly.c)
135165
- [mldsa/poly_kl.c](mldsa/poly_kl.c)
@@ -205,8 +235,24 @@ source code and documentation.
205235
- Damien Stehlé
206236
* URL: https://pq-crystals.org/dilithium/data/dilithium-specification-round3-20210208.pdf
207237
* Referenced from:
238+
- [examples/bring_your_own_fips202/mldsa_native/sign.c](examples/bring_your_own_fips202/mldsa_native/sign.c)
208239
- [mldsa/sign.c](mldsa/sign.c)
209240

241+
### `SLOTHY_Paper`
242+
243+
* Fast and Clean: Auditable high-performance assembly via constraint solving
244+
* Author(s):
245+
- Amin Abdulrahman
246+
- Hanno Becker
247+
- Matthias J. Kannwischer
248+
- Fabien Klein
249+
* URL: https://eprint.iacr.org/2022/1303
250+
* Referenced from:
251+
- [dev/aarch64_clean/src/intt.S](dev/aarch64_clean/src/intt.S)
252+
- [dev/aarch64_clean/src/ntt.S](dev/aarch64_clean/src/ntt.S)
253+
- [mldsa/native/aarch64/src/intt.S](mldsa/native/aarch64/src/intt.S)
254+
- [mldsa/native/aarch64/src/ntt.S](mldsa/native/aarch64/src/ntt.S)
255+
210256
### `libmceliece`
211257

212258
* libmceliece implementation of Classic McEliece
@@ -215,6 +261,7 @@ source code and documentation.
215261
- Tung Chou
216262
* URL: https://lib.mceliece.org/
217263
* Referenced from:
264+
- [examples/bring_your_own_fips202/mldsa_native/ct.h](examples/bring_your_own_fips202/mldsa_native/ct.h)
218265
- [mldsa/ct.h](mldsa/ct.h)
219266

220267
### `m1cycles`
@@ -247,6 +294,7 @@ source code and documentation.
247294
- Daniel J. Bernstein
248295
* URL: https://groups.google.com/a/list.nist.gov/g/pqc-forum/c/hqbtIGFKIpU/m/H14H0wOlBgAJ
249296
* Referenced from:
297+
- [examples/bring_your_own_fips202/mldsa_native/ct.h](examples/bring_your_own_fips202/mldsa_native/ct.h)
250298
- [mldsa/ct.h](mldsa/ct.h)
251299

252300
### `supercop`

BIBLIOGRAPHY.yml

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,26 @@
8383
- Stehlé, Damien
8484
url: https://pq-crystals.org/dilithium/data/dilithium-specification-round3-20210208.pdf
8585

86+
- id: SLOTHY_Paper
87+
name: "Fast and Clean: Auditable high-performance assembly via constraint solving"
88+
short: SLOTHY paper
89+
author:
90+
- Abdulrahman, Amin
91+
- Becker, Hanno
92+
- Kannwischer, Matthias J.
93+
- Klein, Fabien
94+
url: https://eprint.iacr.org/2022/1303
95+
96+
- id: NeonNTT
97+
name: "Neon NTT: Faster Dilithium, Kyber, and Saber on Cortex-A72 and Apple M1"
98+
year: 2022
99+
url: https://eprint.iacr.org/2021/986
100+
author:
101+
- Becker, Hanno
102+
- Hwang, Vincent
103+
- Kannwischer, Matthias J.
104+
- Yang, Bo-Yin
105+
- Yang, Shang-Yi
86106
- id: mupq
87107
name: Common files for pqm4, pqm3, pqriscv
88108
author:

0 commit comments

Comments
 (0)