From 2b3778d44f04a95cc26a8e4db7d72ca0af27f20f Mon Sep 17 00:00:00 2001 From: Jake Massimo Date: Thu, 23 Jan 2025 16:02:56 -0800 Subject: [PATCH] ACVP test harness for ML-DSA (#2127) ### Issues: Resolves #CryptoAlg-2819 ### Description of changes: Implements: - https://pages.nist.gov/ACVP/draft-celi-acvp-ml-dsa.html - https://github.com/usnistgov/ACVP-Server/tree/master/gen-val/json-files/ML-DSA-keyGen-FIPS204 - https://github.com/usnistgov/ACVP-Server/tree/master/gen-val/json-files/ML-DSA-sigGen-FIPS204 - https://github.com/usnistgov/ACVP-Server/tree/master/gen-val/json-files/ML-DSA-sigVer-FIPS204 ### Additional Details Added testing for ML-DSA configured with`deterministic = true` `externalmu = true, false` `signatureInterface = internal` for `parameterSet = ML-DSA-44, ML-DSA-65, ML-DSA-87`. We add the [ML-DSA sigGen Test Case JSON Schema](https://pages.nist.gov/ACVP/draft-celi-acvp-ml-dsa.html#name-ml-dsa-siggen-test-case-jso): ``` type mlDsaSigGenTestGroup struct { ID uint64 `json:"tgId"` Type string `json:"testType"` ParameterSet string `json:"parameterSet"` Deterministic bool `json:"deterministic"` SignatureInterface string `json:"signatureInterface"` ExternalMu bool `json:"externalMu` Tests []struct { ID uint64 `json:"tcId"` Message hexEncodedByteString `json:"message"` MU hexEncodedByteString `json:"mu"` SK hexEncodedByteString `json:"sk"` RND hexEncodedByteString `json:"rnd"` Context hexEncodedByteString `json:"context"` HashAlg string `json:"hashAlg"` } } ``` and [ML-DSA sigVer Test Case JSON Schema](https://pages.nist.gov/ACVP/draft-celi-acvp-ml-dsa.html#name-ml-dsa-sigver-test-case-jso): ``` type mlDsaSigVerTestGroup struct { ID uint64 `json:"tgId"` Type string `json:"testType"` ParameterSet string `json:"parameterSet"` Deterministic bool `json:"deterministic"` SignatureInterface string `json:"signatureInterface"` ExternalMu bool `json:"externalMu` Tests []struct { ID uint64 `json:"tcId"` PK hexEncodedByteString `json:"pk"` Message hexEncodedByteString `json:"message"` MU hexEncodedByteString `json:"mu"` Signature hexEncodedByteString `json:"signature"` Context hexEncodedByteString `json:"context"` HashAlg string `json:"hashAlg"` } } ``` ### Testing: ``` Running ACVP tests 2025/01/17 14:09:39 40 ACVP tests matched expectations 2025/01/17 14:09:40 1 ACVP tests matched expectations 2025/01/17 14:09:41 1 ACVP tests matched expectations 2025/01/17 14:09:42 1 ACVP tests matched expectations 2025/01/17 14:09:44 1 ACVP tests matched expectations 2025/01/17 14:09:46 1 ACVP tests matched expectations 2025/01/17 14:09:48 1 ACVP tests matched expectations 2025/01/17 14:09:50 1 ACVP tests matched expectations 2025/01/17 14:09:52 1 ACVP tests matched expectations 2025/01/17 14:10:09 1 ACVP tests matched expectations 2025/01/17 14:10:10 1 ACVP tests matched expectations 2025/01/17 14:10:11 1 ACVP tests matched expectations 2025/01/17 14:10:12 1 ACVP tests matched expectations 2025/01/17 14:10:12 1 ACVP tests matched expectations ``` By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license and the ISC license. --- crypto/ml_dsa/ml_dsa_ref/params.h | 13 +- .../acvp/acvptool/subprocess/ml_dsa.go | 239 ++++++++++++++++++ .../acvp/acvptool/subprocess/subprocess.go | 1 + .../acvp/acvptool/test/expected/ML-DSA.bz2 | Bin 0 -> 39397 bytes util/fipstools/acvp/acvptool/test/tests.json | 3 +- .../acvp/acvptool/test/vectors/ML-DSA.bz2 | Bin 0 -> 90520 bytes .../acvp/modulewrapper/modulewrapper.cc | 236 ++++++++++++++++- 7 files changed, 487 insertions(+), 5 deletions(-) create mode 100644 util/fipstools/acvp/acvptool/subprocess/ml_dsa.go create mode 100644 util/fipstools/acvp/acvptool/test/expected/ML-DSA.bz2 create mode 100644 util/fipstools/acvp/acvptool/test/vectors/ML-DSA.bz2 diff --git a/crypto/ml_dsa/ml_dsa_ref/params.h b/crypto/ml_dsa/ml_dsa_ref/params.h index 633de6accd..8fe92013af 100644 --- a/crypto/ml_dsa/ml_dsa_ref/params.h +++ b/crypto/ml_dsa/ml_dsa_ref/params.h @@ -1,6 +1,10 @@ #ifndef ML_DSA_PARAMS_H #define ML_DSA_PARAMS_H +#if defined(__cplusplus) +extern "C" { +#endif + // The only defined parameters are those that don't depend // on the parameter set. All other parameters are specified // in ml_dsa_params structure that is unique for each parameter @@ -44,8 +48,11 @@ typedef struct { #define ML_DSA_POLY_UNIFORM_ETA_NBLOCKS_MAX ((227 + SHAKE256_BLOCKSIZE - 1)/SHAKE256_BLOCKSIZE) #define ML_DSA_POLYZ_PACKEDBYTES_MAX (576) -void ml_dsa_44_params_init(ml_dsa_params *params); -void ml_dsa_65_params_init(ml_dsa_params *params); -void ml_dsa_87_params_init(ml_dsa_params *params); +OPENSSL_EXPORT void ml_dsa_44_params_init(ml_dsa_params *params); +OPENSSL_EXPORT void ml_dsa_65_params_init(ml_dsa_params *params); +OPENSSL_EXPORT void ml_dsa_87_params_init(ml_dsa_params *params); +#if defined(__cplusplus) +} +#endif #endif diff --git a/util/fipstools/acvp/acvptool/subprocess/ml_dsa.go b/util/fipstools/acvp/acvptool/subprocess/ml_dsa.go new file mode 100644 index 0000000000..fa7e7bc553 --- /dev/null +++ b/util/fipstools/acvp/acvptool/subprocess/ml_dsa.go @@ -0,0 +1,239 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 OR ISC + +package subprocess + +import ( + "encoding/json" + "fmt" + "strings" +) + +type mlDsa struct{} + +func (*mlDsa) Process(vectorSet []byte, m Transactable) (interface{}, error) { + var vs struct { + Mode string `json:"mode"` + TestGroups json.RawMessage `json:"testGroups"` + } + + if err := json.Unmarshal(vectorSet, &vs); err != nil { + return nil, err + } + + switch { + case strings.EqualFold(vs.Mode, "keyGen"): + return processMlDsaKeyGen(vs.TestGroups, m) + case strings.EqualFold(vs.Mode, "sigGen"): + return processMlDsaSigGen(vs.TestGroups, m) + case strings.EqualFold(vs.Mode, "sigVer"): + return processMlDsaSigVer(vs.TestGroups, m) + } + + return nil, fmt.Errorf("unknown ML-DSA mode: %v", vs.Mode) +} + +type mlDsaKeyGenTestGroup struct { + ID uint64 `json:"tgId"` + Type string `json:"testType"` + ParameterSet string `json:"parameterSet"` + Tests []struct { + ID uint64 `json:"tcId"` + SEED hexEncodedByteString `json:"seed"` + } +} + +type mlDsaKeyGenTestGroupResponse struct { + ID uint64 `json:"tgId"` + Tests []mlDsaKeyGenTestCaseResponse `json:"tests"` +} + +type mlDsaKeyGenTestCaseResponse struct { + ID uint64 `json:"tcId"` + PK hexEncodedByteString `json:"pk"` + SK hexEncodedByteString `json:"sk"` +} + +func processMlDsaKeyGen(vectors json.RawMessage, m Transactable) (interface{}, error) { + var groups []mlDsaKeyGenTestGroup + + if err := json.Unmarshal(vectors, &groups); err != nil { + return nil, err + } + + var responses []mlDsaKeyGenTestGroupResponse + + for _, group := range groups { + if !strings.EqualFold(group.Type, "AFT") { + return nil, fmt.Errorf("unsupported keyGen test type: %v", group.Type) + } + + response := mlDsaKeyGenTestGroupResponse{ + ID: group.ID, + } + + for _, test := range group.Tests { + results, err := m.Transact("ML-DSA/"+group.ParameterSet+"/keyGen", 2, test.SEED) + if err != nil { + return nil, err + } + + pk := results[0] + sk := results[1] + + response.Tests = append(response.Tests, mlDsaKeyGenTestCaseResponse{ + ID: test.ID, + PK: pk, + SK: sk, + }) + } + + responses = append(responses, response) + } + + return responses, nil +} + +type mlDsaSigGenTestGroup struct { + ID uint64 `json:"tgId"` + Type string `json:"testType"` + ParameterSet string `json:"parameterSet"` + Deterministic bool `json:"deterministic"` + SignatureInterface string `json:"signatureInterface"` + ExternalMu bool `json:"externalMu` + Tests []struct { + ID uint64 `json:"tcId"` + Message hexEncodedByteString `json:"message"` + MU hexEncodedByteString `json:"mu"` + SK hexEncodedByteString `json:"sk"` + RND hexEncodedByteString `json:"rnd"` + Context hexEncodedByteString `json:"context"` + HashAlg string `json:"hashAlg"` + } +} + +type mlDsaSigGenTestGroupResponse struct { + ID uint64 `json:"tgId"` + Tests []mlDsaSigGenTestCaseResponse `json:"tests"` +} + +type mlDsaSigGenTestCaseResponse struct { + ID uint64 `json:"tcId"` + Signature hexEncodedByteString `json:"signature"` +} + +// Convert boolean to byte slice (using 1 for true, 0 for false) +func boolToBytes(b bool) []byte { + if b { + return []byte{1} + } + return []byte{0} +} + +func processMlDsaSigGen(vectors json.RawMessage, m Transactable) (interface{}, error) { + var groups []mlDsaSigGenTestGroup + + if err := json.Unmarshal(vectors, &groups); err != nil { + return nil, err + } + + var responses []mlDsaSigGenTestGroupResponse + + for _, group := range groups { + if !strings.EqualFold(group.Type, "AFT") { + return nil, fmt.Errorf("unsupported sigGen test type: %v", group.Type) + } + + response := mlDsaSigGenTestGroupResponse{ + ID: group.ID, + } + + for _, test := range group.Tests { + results, err := m.Transact("ML-DSA/"+group.ParameterSet+"/sigGen", + 1, test.SK, test.Message, test.MU, test.RND, boolToBytes(group.ExternalMu)) + if err != nil { + return nil, err + } + + signature := results[0] + + response.Tests = append(response.Tests, mlDsaSigGenTestCaseResponse{ + ID: test.ID, + Signature: signature, + }) + } + + responses = append(responses, response) + } + return responses, nil +} + +type mlDsaSigVerTestGroup struct { + ID uint64 `json:"tgId"` + Type string `json:"testType"` + ParameterSet string `json:"parameterSet"` + Deterministic bool `json:"deterministic"` + SignatureInterface string `json:"signatureInterface"` + ExternalMu bool `json:"externalMu` + Tests []struct { + ID uint64 `json:"tcId"` + PK hexEncodedByteString `json:"pk"` + Message hexEncodedByteString `json:"message"` + MU hexEncodedByteString `json:"mu"` + Signature hexEncodedByteString `json:"signature"` + Context hexEncodedByteString `json:"context"` + HashAlg string `json:"hashAlg"` + } +} + +type mlDsaSigVerTestGroupResponse struct { + ID uint64 `json:"tgId"` + Tests []mlDsaSigVerTestCaseResponse `json:"tests"` +} + +type mlDsaSigVerTestCaseResponse struct { + ID uint64 `json:"tcId"` + TestPassed *bool `json:"testPassed"` +} + +func processMlDsaSigVer(vectors json.RawMessage, m Transactable) (interface{}, error) { + var groups []mlDsaSigVerTestGroup + + if err := json.Unmarshal(vectors, &groups); err != nil { + return nil, err + } + + var responses []mlDsaSigVerTestGroupResponse + + for _, group := range groups { + if !strings.EqualFold(group.Type, "AFT") { + return nil, fmt.Errorf("unsupported sigVer test type: %v", group.Type) + } + + response := mlDsaSigVerTestGroupResponse{ + ID: group.ID, + } + + for _, test := range group.Tests { + results, err := m.Transact("ML-DSA/"+group.ParameterSet+"/sigVer", 1, + test.Signature, test.PK, test.Message, test.MU, boolToBytes(group.ExternalMu)) + if err != nil { + return nil, err + } + + var passed *bool + if len(results[0]) == 1 { + val := results[0][0] == 1 + passed = &val + } + + response.Tests = append(response.Tests, mlDsaSigVerTestCaseResponse{ + ID: test.ID, + TestPassed: passed, + }) + } + + responses = append(responses, response) + } + return responses, nil +} diff --git a/util/fipstools/acvp/acvptool/subprocess/subprocess.go b/util/fipstools/acvp/acvptool/subprocess/subprocess.go index dc60c3050a..4825a8218c 100644 --- a/util/fipstools/acvp/acvptool/subprocess/subprocess.go +++ b/util/fipstools/acvp/acvptool/subprocess/subprocess.go @@ -155,6 +155,7 @@ func NewWithIO(cmd *exec.Cmd, in io.WriteCloser, out io.ReadCloser) *Subprocess "PBKDF": &pbkdf{}, "ML-KEM": &mlKem{}, "EDDSA": &eddsa{}, + "ML-DSA": &mlDsa{}, } m.primitives["ECDSA"] = &ecdsa{"ECDSA", map[string]bool{"P-224": true, "P-256": true, "P-384": true, "P-521": true}, m.primitives} diff --git a/util/fipstools/acvp/acvptool/test/expected/ML-DSA.bz2 b/util/fipstools/acvp/acvptool/test/expected/ML-DSA.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..9f81f11c4d7d75058a8de927d385ea7a5b0b1e7a GIT binary patch literal 39397 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 z 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 BTH*iz literal 0 HcmV?d00001 diff --git a/util/fipstools/acvp/acvptool/test/tests.json b/util/fipstools/acvp/acvptool/test/tests.json index a011e2b388..d344f105d5 100644 --- a/util/fipstools/acvp/acvptool/test/tests.json +++ b/util/fipstools/acvp/acvptool/test/tests.json @@ -37,5 +37,6 @@ {"Wrapper": "modulewrapper", "In": "vectors/ML-KEM.bz2", "Out": "expected/ML-KEM.bz2"}, {"Wrapper": "modulewrapper", "In": "vectors/EDDSA.bz2", "Out": "expected/EDDSA.bz2"}, {"Wrapper": "modulewrapper", "In": "vectors/EDDSA-KeyGen.bz2"}, -{"Wrapper": "modulewrapper", "In": "vectors/EDDSA-SigGen.bz2"} +{"Wrapper": "modulewrapper", "In": "vectors/EDDSA-SigGen.bz2"}, +{"Wrapper": "modulewrapper", "In": "vectors/ML-DSA.bz2", "Out": "expected/ML-DSA.bz2"} ] diff --git a/util/fipstools/acvp/acvptool/test/vectors/ML-DSA.bz2 b/util/fipstools/acvp/acvptool/test/vectors/ML-DSA.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..e9020f994b61b218d4bf19303e6af380ab1edd1c GIT binary patch literal 90520 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 args[], "curve": ["ED-25519"], "pure": true, "preHash": false + },)" + R"({ + "algorithm": "ML-DSA", + "mode": "keyGen", + "revision": "FIPS204", + "parameterSets": ["ML-DSA-44", "ML-DSA-65", "ML-DSA-87"] + },{ + "algorithm": "ML-DSA", + "mode": "sigGen", + "revision": "FIPS204", + "capabilities": [ + { + "parameterSets": [ + "ML-DSA-44", + "ML-DSA-65", + "ML-DSA-87" + ], + "messageLength": [ + { + "min": 8, + "max": 65536, + "increment": 8 + } + ] + } + ], + "deterministic": [false], + "externalMu": [ + true, + false + ], + "signatureInterfaces": ["internal"] + },{ + "algorithm": "ML-DSA", + "mode": "sigVer", + "revision": "FIPS204", + "capabilities": [ + { + "parameterSets": [ + "ML-DSA-44", + "ML-DSA-65", + "ML-DSA-87" + ], + "messageLength": [ + { + "min": 8, + "max": 65536, + "increment": 8 + } + ] + } + ], + "deterministic": [false], + "externalMu": [ + true, + false + ], + "signatureInterfaces": ["internal"] }])"; return write_reply({Span( reinterpret_cast(kConfig), sizeof(kConfig) - 1)}); @@ -3072,6 +3132,171 @@ static bool ED25519SigVer(const Span args[], return write_reply({Span(reply)}); } +template +static bool ML_DSA_KEYGEN(const Span args[], + ReplyCallback write_reply) { + const Span seed = args[0]; + + //init params of the correct size based on provided nid + ml_dsa_params params; + if (nid == NID_MLDSA44) { + ml_dsa_44_params_init(¶ms); + } + else if (nid == NID_MLDSA65) { + ml_dsa_65_params_init(¶ms); + } + else if (nid == NID_MLDSA87) { + ml_dsa_87_params_init(¶ms); + } + + // create public and private key buffers + std::vector public_key(params.public_key_bytes); + std::vector private_key(params.secret_key_bytes); + + // generate the keys + if (nid == NID_MLDSA44) { + if (!ml_dsa_44_keypair_internal(public_key.data(), private_key.data(), seed.data())) { + return false; + } + } + else if (nid == NID_MLDSA65) { + if (!ml_dsa_65_keypair_internal(public_key.data(), private_key.data(), seed.data())) { + return false; + } + } + else if (nid == NID_MLDSA87) { + if (!ml_dsa_87_keypair_internal(public_key.data(), private_key.data(), seed.data())) { + return false; + } + } + return write_reply({Span(public_key.data(), public_key.size()), + Span(private_key.data(), private_key.size())}); +} + +template +static bool ML_DSA_SIGGEN(const Span args[], + ReplyCallback write_reply) { + const Span sk = args[0]; + const Span msg = args[1]; + const Span mu = args[2]; + const Span rnd = args[3]; + const Span extmu = args[4]; + + ml_dsa_params params; + if (nid == NID_MLDSA44) { + ml_dsa_44_params_init(¶ms); + } + else if (nid == NID_MLDSA65) { + ml_dsa_65_params_init(¶ms); + } + else if (nid == NID_MLDSA87) { + ml_dsa_87_params_init(¶ms); + } + + size_t signature_len = params.bytes; + std::vector signature(signature_len); + + // generate the signatures raw sign mode + if (extmu.data()[0] == 0) { + if (nid == NID_MLDSA44) { + if (!ml_dsa_44_sign_internal(sk.data(), signature.data(), &signature_len, + msg.data(), msg.size(), nullptr, 0, rnd.data())) { + return false; + } + } + else if (nid == NID_MLDSA65) { + if (!ml_dsa_65_sign_internal(sk.data(), signature.data(), &signature_len, + msg.data(), msg.size(), nullptr, 0, rnd.data())) { + return false; + } + } + else if (nid == NID_MLDSA87) { + if (!ml_dsa_87_sign_internal(sk.data(), signature.data(), &signature_len, + msg.data(), msg.size(), nullptr, 0, rnd.data())) { + return false; + } + } + } + // generate the signatures digest sign mode (externalmu) + else { + if (nid == NID_MLDSA44) { + if (!ml_dsa_extmu_44_sign_internal(sk.data(), signature.data(), &signature_len, + mu.data(), mu.size(), nullptr, 0, rnd.data())) { + return false; + } + } + else if (nid == NID_MLDSA65) { + if (!ml_dsa_extmu_65_sign_internal(sk.data(), signature.data(), &signature_len, + mu.data(), mu.size(), nullptr, 0, rnd.data())) { + return false; + } + } + else if (nid == NID_MLDSA87) { + if (!ml_dsa_extmu_87_sign_internal(sk.data(), signature.data(), &signature_len, + mu.data(), mu.size(), nullptr, 0, rnd.data())) { + return false; + } + } + } + + return write_reply({Span(signature)}); +} + +template +static bool ML_DSA_SIGVER(const Span args[], ReplyCallback write_reply) { + const Span sig = args[0]; + const Span pk = args[1]; + const Span msg = args[2]; + const Span mu = args[3]; + const Span extmu = args[4]; + + uint8_t reply[1] = {0}; + + // verify the signatures raw sign mode + if (extmu.data()[0] == 0) { + if (nid == NID_MLDSA44) { + if (ml_dsa_44_verify_internal(pk.data(), sig.data(), sig.size(), msg.data(), + msg.size(), nullptr, 0)) { + reply[0] = 1; + } + } + else if (nid == NID_MLDSA65) { + if (ml_dsa_65_verify_internal(pk.data(), sig.data(), sig.size(), msg.data(), + msg.size(), nullptr, 0)) { + reply[0] = 1; + } + } + else if (nid == NID_MLDSA87) { + if (ml_dsa_87_verify_internal(pk.data(), sig.data(), sig.size(), msg.data(), + msg.size(), nullptr, 0)) { + reply[0] = 1; + } + } + } + // verify the signatures digest sign mode (externalmu) + else{ + if (nid == NID_MLDSA44) { + if (ml_dsa_extmu_44_verify_internal(pk.data(), sig.data(), sig.size(), mu.data(), + mu.size(), nullptr, 0)) { + reply[0] = 1; + } + } + else if (nid == NID_MLDSA65) { + if (ml_dsa_extmu_65_verify_internal(pk.data(), sig.data(), sig.size(), mu.data(), + mu.size(), nullptr, 0)) { + reply[0] = 1; + } + } + else if (nid == NID_MLDSA87) { + if (ml_dsa_extmu_87_verify_internal(pk.data(), sig.data(), sig.size(), mu.data(), + mu.size(), nullptr, 0)) { + reply[0] = 1; + } + } + } + return write_reply({Span(reply)}); +} + static struct { char name[kMaxNameLength + 1]; uint8_t num_expected_args; @@ -3320,7 +3545,16 @@ static struct { {"EDDSA/ED-25519/keyGen", 0, ED25519KeyGen}, {"EDDSA/ED-25519/keyVer", 1, ED25519KeyVer}, {"EDDSA/ED-25519/sigGen", 2, ED25519SigGen}, - {"EDDSA/ED-25519/sigVer", 3, ED25519SigVer}}; + {"EDDSA/ED-25519/sigVer", 3, ED25519SigVer}, + {"ML-DSA/ML-DSA-44/keyGen", 1, ML_DSA_KEYGEN}, + {"ML-DSA/ML-DSA-65/keyGen", 1, ML_DSA_KEYGEN}, + {"ML-DSA/ML-DSA-87/keyGen", 1, ML_DSA_KEYGEN}, + {"ML-DSA/ML-DSA-44/sigGen", 5, ML_DSA_SIGGEN}, + {"ML-DSA/ML-DSA-65/sigGen", 5, ML_DSA_SIGGEN}, + {"ML-DSA/ML-DSA-87/sigGen", 5, ML_DSA_SIGGEN}, + {"ML-DSA/ML-DSA-44/sigVer", 5, ML_DSA_SIGVER}, + {"ML-DSA/ML-DSA-65/sigVer", 5, ML_DSA_SIGVER}, + {"ML-DSA/ML-DSA-87/sigVer", 5, ML_DSA_SIGVER}}; Handler FindHandler(Span> args) { const bssl::Span algorithm = args[0];