From 9251482d41cbf590d6dc3ce48474dc7085d05e23 Mon Sep 17 00:00:00 2001 From: zzz <zzz@i2pmail.org> Date: Tue, 18 Mar 2025 16:16:44 -0400 Subject: [PATCH] prop. 169 updates after review --- i2p2www/spec/proposals/169-pq-crypto.rst | 101 ++++++++++++----------- 1 file changed, 53 insertions(+), 48 deletions(-) diff --git a/i2p2www/spec/proposals/169-pq-crypto.rst b/i2p2www/spec/proposals/169-pq-crypto.rst index 47fd9217..b9ea50e1 100644 --- a/i2p2www/spec/proposals/169-pq-crypto.rst +++ b/i2p2www/spec/proposals/169-pq-crypto.rst @@ -5,7 +5,7 @@ Post-Quantum Crypto Protocols :author: zzz :created: 2025-01-21 :thread: http://zzz.i2p/topics/3294 - :lastupdated: 2025-03-14 + :lastupdated: 2025-03-18 :status: Open :target: 0.9.80 @@ -168,12 +168,12 @@ The new signature types are: ============================ ==== Type Code ============================ ==== -MLDSA44_EdDSA_SHA512_Ed25519 12 -MLDSA65_EdDSA_SHA512_Ed25519 13 -MLDSA87_EdDSA_SHA512_Ed25519 14 -MLDSA44 15 -MLDSA65 16 -MLDSA87 17 +MLDSA44 12 +MLDSA65 13 +MLDSA87 14 +MLDSA44_EdDSA_SHA512_Ed25519 15 +MLDSA65_EdDSA_SHA512_Ed25519 16 +MLDSA87_EdDSA_SHA512_Ed25519 17 MLDSA44ph 18 MLDSA65ph 19 MLDSA87ph 20 @@ -263,7 +263,7 @@ NONE 0 0.9.xx See proposal 169, for destinations Hybrid public keys are the X25519 key. KEM public keys are the ephemeral PQ key sent from Alice to Bob. -Byte order defined in [FIPS203]_. +Encoding and byte order are defined in [FIPS203]_. MLKEM*_CT keys are not really public keys, they are the "ciphertext" sent from Bob to Alice in the Noise handshake. They are listed here for completeness. @@ -286,9 +286,9 @@ MLKEM768 2400 0.9.xx See proposal 169, for handshakes MLKEM1024 3168 0.9.xx See proposal 169, for handshakes only, not for Leasesets, RIs or Destinations ================ ================== ====== ===== -Hybrid private keys are the X25519 key followed by the PQ key. +Hybrid private keys are the X25519 key followed by the PQ key, as in [COMPOSITE-SIGS]_. KEM private keys are the ciphertext sent from Bob to Alice. -Byte order defined in [FIPS203]_. +Encoding and byte order are defined in [FIPS203]_. @@ -301,19 +301,19 @@ The new Signing Public Key types are: ============================ ============== ====== ===== Type Length (bytes) Since Usage ============================ ============== ====== ===== -MLDSA44_EdDSA_SHA512_Ed25519 1344 0.9.xx See proposal 169 -MLDSA65_EdDSA_SHA512_Ed25519 1984 0.9.xx See proposal 169 -MLDSA87_EdDSA_SHA512_Ed25519 2624 0.9.xx See proposal 169 MLDSA44 1312 0.9.xx See proposal 169 MLDSA65 1952 0.9.xx See proposal 169 MLDSA87 2592 0.9.xx See proposal 169 +MLDSA44_EdDSA_SHA512_Ed25519 1344 0.9.xx See proposal 169 +MLDSA65_EdDSA_SHA512_Ed25519 1984 0.9.xx See proposal 169 +MLDSA87_EdDSA_SHA512_Ed25519 2624 0.9.xx See proposal 169 MLDSA44ph 1344 0.9.xx Only for SU3 files, not for netdb structures MLDSA65ph 1984 0.9.xx Only for SU3 files, not for netdb structures MLDSA87ph 2624 0.9.xx Only for SU3 files, not for netdb structures ============================ ============== ====== ===== -Hybrid signing public keys are the Ed25519 key followed by the PQ key. -Byte order defined in [FIPS204]_. +Hybrid signing public keys are the Ed25519 key followed by the PQ key, as in [COMPOSITE-SIGS]_. +Encoding and byte order are defined in [FIPS204]_. SigningPrivateKey @@ -324,19 +324,19 @@ The new Signing Private Key types are: ============================ ============== ====== ===== Type Length (bytes) Since Usage ============================ ============== ====== ===== -MLDSA44_EdDSA_SHA512_Ed25519 2592 0.9.xx See proposal 169 -MLDSA65_EdDSA_SHA512_Ed25519 4064 0.9.xx See proposal 169 -MLDSA87_EdDSA_SHA512_Ed25519 4928 0.9.xx See proposal 169 MLDSA44 2560 0.9.xx See proposal 169 MLDSA65 4032 0.9.xx See proposal 169 MLDSA87 4896 0.9.xx See proposal 169 +MLDSA44_EdDSA_SHA512_Ed25519 2592 0.9.xx See proposal 169 +MLDSA65_EdDSA_SHA512_Ed25519 4064 0.9.xx See proposal 169 +MLDSA87_EdDSA_SHA512_Ed25519 4928 0.9.xx See proposal 169 MLDSA44ph 2592 0.9.xx Only for SU3 files, not for netdb structuresSee proposal 169 MLDSA65ph 4064 0.9.xx Only for SU3 files, not for netdb structuresSee proposal 169 MLDSA87ph 4928 0.9.xx Only for SU3 files, not for netdb structuresSee proposal 169 ============================ ============== ====== ===== -Hybrid signing private keys are the Ed25519 key followed by the PQ key. -Byte order defined in [FIPS204]_. +Hybrid signing private keys are the Ed25519 key followed by the PQ key, as in [COMPOSITE-SIGS]_. +Encoding and byte order are defined in [FIPS204]_. Signature @@ -347,21 +347,21 @@ The new Signature types are: ============================ ============== ====== ===== Type Length (bytes) Since Usage ============================ ============== ====== ===== -MLDSA44_EdDSA_SHA512_Ed25519 2484 0.9.xx See proposal 169 -MLDSA65_EdDSA_SHA512_Ed25519 3373 0.9.xx See proposal 169 -MLDSA87_EdDSA_SHA512_Ed25519 4691 0.9.xx See proposal 169 MLDSA44 2420 0.9.xx See proposal 169 MLDSA65 3309 0.9.xx See proposal 169 MLDSA87 4627 0.9.xx See proposal 169 +MLDSA44_EdDSA_SHA512_Ed25519 2484 0.9.xx See proposal 169 +MLDSA65_EdDSA_SHA512_Ed25519 3373 0.9.xx See proposal 169 +MLDSA87_EdDSA_SHA512_Ed25519 4691 0.9.xx See proposal 169 MLDSA44ph 2484 0.9.xx Only for SU3 files, not for netdb structuresSee proposal 169 MLDSA65ph 3373 0.9.xx Only for SU3 files, not for netdb structuresSee proposal 169 MLDSA87ph 4691 0.9.xx Only for SU3 files, not for netdb structuresSee proposal 169 ============================ ============== ====== ===== -Hybrid signatures are the Ed25519 signature followed by the PQ signature. +Hybrid signatures are the Ed25519 signature followed by the PQ signature, as in [COMPOSITE-SIGS]_. Hybrid signatures are verified by verifying both signatures, and failing if either one fails. -Byte order defined in [FIPS204]_. +Encoding and byte order are defined in [FIPS204]_. @@ -373,12 +373,12 @@ The new Signing Public Key types are: ============================ =========== ======================= ====== ===== Type Type Code Total Public Key Length Since Usage ============================ =========== ======================= ====== ===== -MLDSA44_EdDSA_SHA512_Ed25519 12 1344 0.9.xx See proposal 169 -MLDSA65_EdDSA_SHA512_Ed25519 13 1984 0.9.xx See proposal 169 -MLDSA87_EdDSA_SHA512_Ed25519 14 2624 0.9.xx See proposal 169 -MLDSA44 15 1312 0.9.xx See proposal 169 -MLDSA65 16 1952 0.9.xx See proposal 169 -MLDSA87 17 2592 0.9.xx See proposal 169 +MLDSA44 12 1312 0.9.xx See proposal 169 +MLDSA65 13 1952 0.9.xx See proposal 169 +MLDSA87 14 2592 0.9.xx See proposal 169 +MLDSA44_EdDSA_SHA512_Ed25519 15 1344 0.9.xx See proposal 169 +MLDSA65_EdDSA_SHA512_Ed25519 16 1984 0.9.xx See proposal 169 +MLDSA87_EdDSA_SHA512_Ed25519 17 2624 0.9.xx See proposal 169 MLDSA44ph 18 n/a 0.9.xx Only for SU3 files MLDSA65ph 19 n/a 0.9.xx Only for SU3 files MLDSA87ph 20 n/a 0.9.xx Only for SU3 files @@ -429,12 +429,12 @@ skey[0:383] 5 (932 >> 8) (932 & 0xff) 00 12 00 255 skey[384:1311] ============================ =========== ======================= ====== ====== ===== Type Type Code Total Public Key Length Main Excess Total Dest Length ============================ =========== ======================= ====== ====== ===== -MLDSA44_EdDSA_SHA512_Ed25519 12 1344 384 960 1351 -MLDSA65_EdDSA_SHA512_Ed25519 13 1984 384 1600 1991 -MLDSA87_EdDSA_SHA512_Ed25519 14 2624 384 2240 2631 -MLDSA44 15 1312 384 928 1319 -MLDSA65 16 1952 384 1568 1959 -MLDSA87 17 2592 384 2208 2599 +MLDSA44 12 1312 384 928 1319 +MLDSA65 13 1952 384 1568 1959 +MLDSA87 14 2592 384 2208 2599 +MLDSA44_EdDSA_SHA512_Ed25519 15 1344 384 960 1351 +MLDSA65_EdDSA_SHA512_Ed25519 16 1984 384 1600 1991 +MLDSA87_EdDSA_SHA512_Ed25519 17 2624 384 2240 2631 ============================ =========== ======================= ====== ====== ===== @@ -458,12 +458,12 @@ enckey[0:31] skey[0:351] 5 (960 >> 8) (960 & 0xff) 00 12 00 4 skey[352:1311] ============================ =========== ======================= ====== ====== ===== Type Type Code Total Public Key Length Main Excess Total RouterIdent Length ============================ =========== ======================= ====== ====== ===== -MLDSA44_EdDSA_SHA512_Ed25519 12 1344 352 992 1383 -MLDSA65_EdDSA_SHA512_Ed25519 13 1984 352 1632 2023 -MLDSA87_EdDSA_SHA512_Ed25519 14 2624 352 2272 2663 -MLDSA44 15 1312 352 960 1351 -MLDSA65 16 1952 352 1600 1991 -MLDSA87 17 2592 352 2240 2631 +MLDSA44 12 1312 352 960 1351 +MLDSA65 13 1952 352 1600 1991 +MLDSA87 14 2592 352 2240 2631 +MLDSA44_EdDSA_SHA512_Ed25519 15 1344 352 992 1383 +MLDSA65_EdDSA_SHA512_Ed25519 16 1984 352 1632 2023 +MLDSA87_EdDSA_SHA512_Ed25519 17 2624 352 2272 2663 ============================ =========== ======================= ====== ====== ===== @@ -738,8 +738,13 @@ This is the "ekem1" message pattern: {% endhighlight %} -Alice/Bob KDF for split() -````````````````````````` +KDF for Message 3 (XK only) +``````````````````````````` +unchanged + + +KDF for split() +``````````````` unchanged @@ -1634,12 +1639,12 @@ See design section above. Type Pubkey Sig Key+Sig RIdent Dest RInfo LS/Streaming/Datagram (each msg) ============================ ======= ==== ======= ====== ====== ======== ===== EdDSA_SHA512_Ed25519 32 64 96 391 391 baseline baseline -MLDSA44_EdDSA_SHA512_Ed25519 1344 2484 3828 1383 1351 +3412 +3380 -MLDSA65_EdDSA_SHA512_Ed25519 1984 3373 5357 2023 1991 +5668 +5636 -MLDSA87_EdDSA_SHA512_Ed25519 2624 4691 7315 2663 2631 +7488 +7456 MLDSA44 1312 2420 3732 1351 1319 +3316 +3284 MLDSA65 1952 3309 5261 1991 1959 +5668 +5636 MLDSA87 2592 4627 7219 2631 2599 +7072 +7040 +MLDSA44_EdDSA_SHA512_Ed25519 1344 2484 3828 1383 1351 +3412 +3380 +MLDSA65_EdDSA_SHA512_Ed25519 1984 3373 5357 2023 1991 +5668 +5636 +MLDSA87_EdDSA_SHA512_Ed25519 2624 4691 7315 2663 2631 +7488 +7456 ============================ ======= ==== ======= ====== ====== ======== ===== Speed: -- GitLab