Skip to content

Commit c4bd521

Browse files
authored
Merge pull request usnistgov#1504 from usnistgov/AddMLAlgs
Add ML Algs
2 parents cce70d9 + 80758fd commit c4bd521

34 files changed

+1265
-37
lines changed

README.md

+17-6
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# ACVP
22
The [Automated Cryptographic Validation Protocol](https://pages.nist.gov/ACVP/draft-fussell-acvp-spec.html) (ACVP) is a protocol to support a new National Voluntary Laboratory Accreditation Program (NVLAP) testing scope at the [National Institute of Standards and Technology (NIST)](https://www.nist.gov).
33

4-
The new testing scope, 17ACVT, is available, and defined in [NIST Handbook 150-17](https://www.nist.gov/system/files/documents/2020/05/12/NIST-HB-150-17-2020.pdf).
4+
The new testing scope, 17ACVT, is available, and defined in [NIST Handbook 150-17](https://nvlpubs.nist.gov/nistpubs/hb/2021/NIST.HB.150-17-2021.pdf).
55

66
All current information about ACVP protocol may be found within this Github project at https://github.com/usnistgov/ACVP. View the protocol documents at https://pages.nist.gov/ACVP/.
77

@@ -25,6 +25,7 @@ For issues regarding the actual ACVP Server implementation, as well as pre-relea
2525
* [Safe Primes](#safe-primes)
2626
* [Conditioning Components](#conditioning-components)
2727
* [Stateful Hash-Based Signatures](#stateful-hash-based-signatures)
28+
* [Module-Lattice Algorithms](#module-lattice-algorithms)
2829
* [Accessing the Server](#accessing-the-demo-server)
2930
* [Contribution Guidelines](contribution-guidelines)
3031
* [Related Projects](#related-projects)
@@ -340,9 +341,16 @@ Standalone KDA testing from SP800-56Cr1 or SP800-56Cr2. Can be used in conjuncti
340341
* [LMS sigGen](https://pages.nist.gov/ACVP/draft-celi-acvp-lms.txt) - [HTML](https://pages.nist.gov/ACVP/draft-celi-acvp-lms.html)
341342
* [LMS sigVer](https://pages.nist.gov/ACVP/draft-celi-acvp-lms.txt) - [HTML](https://pages.nist.gov/ACVP/draft-celi-acvp-lms.html)
342343

343-
The prod server supports all of the above except for AES-FF3-1, and AES-GCM-SIV. Some of these algorithms have NIST SP800 series drafts in progress and will be available on the prod server when the draft becomes a standard.
344+
### Module-Lattice Algorithms
345+
* [ML-DSA keyGen](https://pages.nist.gov/ACVP/draft-celi-acvp-ml-dsa.txt) - [HTML](https://pages.nist.gov/ACVP/draft-celi-acvp-ml-dsa.html)
346+
* [ML-DSA sigGen](https://pages.nist.gov/ACVP/draft-celi-acvp-ml-dsa.txt) - [HTML](https://pages.nist.gov/ACVP/draft-celi-acvp-ml-dsa.html)
347+
* [ML-DSA sigVer](https://pages.nist.gov/ACVP/draft-celi-acvp-ml-dsa.txt) - [HTML](https://pages.nist.gov/ACVP/draft-celi-acvp-ml-dsa.html)
348+
* [ML-KEM keyGen](https://pages.nist.gov/ACVP/draft-celi-acvp-ml-kem.txt) - [HTML](https://pages.nist.gov/ACVP/draft-celi-acvp-ml-kem.html)
349+
* [ML-KEM encapDecap](https://pages.nist.gov/ACVP/draft-celi-acvp-ml-kem.txt) - [HTML](https://pages.nist.gov/ACVP/draft-celi-acvp-ml-kem.html)
344350

345-
# Accessing the Server
351+
See [the algorithm endpoint](https://pages.nist.gov/ACVP/draft-fussell-acvp-spec.html#name-algorithms) to learn which algorithms are available on a given ACVP server.
352+
353+
# Accessing the Demo Server
346354

347355
To access the demo server one needs a TLS credential **and** a one-time password (OTP). The [protocol specification](https://pages.nist.gov/ACVP/draft-fussell-acvp-spec.html) and other development information are available in this repository. You may want to use the companion [ACVP client](https://github.com/cisco/libacvp) to jump-start your work.
348356

@@ -352,7 +360,7 @@ To access the prod server, first you must demonstrate compentency on the demo se
352360

353361
## Obtaining TLS credentials
354362

355-
To access the [demo environment](https://demo.acvts.nist.gov/acvp/home) you will need to send your CSR to us. Please use a 2048-bit RSA key pair and sign using at least a SHA-256 hash. Please send a request to [email protected] with 'CSR REQUEST FOR ACCESS TO DEMO' in the subject line. You will receive instructions for how to upload your CSR.
363+
To access the demo environment you will need to send your CSR to NIST. Please use a 2048-bit RSA key pair and sign using at least a SHA-256 hash. Please send the request to [email protected] with 'CSR REQUEST FOR ACCESS TO DEMO' in the subject line. You will receive instructions for how to upload your CSR.
356364

357365
You are expected to protect the key pair from unauthorized use and to notify NIST in the event the keypair becomes compromised. Also, since we do not have a formal login page the following notice applies when accessing the ACVP system:
358366

@@ -366,6 +374,10 @@ You are accessing a U.S. Government information system, which includes: 1) this
366374

367375
TOTP has been configured on all servers. See details [here](https://github.com/usnistgov/ACVP/wiki#second-factor-authentication-and-authorization-schema-for-accessing-and-working-with-the-nist-automated-cryptographic-validation-services).
368376

377+
## Renewing TLS credentials
378+
379+
Credentials are valid for a period of two years and will then expire. To renew your credentials, please send an email to [email protected] with the subject 'ACVTS DEMO CREDENTIAL RENEWAL REQUEST' in the subject line. You will receive further instructions via email regarding the renewal process.
380+
369381
# Contribution Guidelines
370382

371383
If you want to contribute, please follow the simple rules below and send us pull requests.
@@ -375,8 +387,7 @@ If you want to contribute, please follow the simple rules below and send us pull
375387
- Create a Pull Request with the updated ADOC files. GitHub Actions will verify the files can compile.
376388
- Once approved by a NIST member, GitHub Actions will rebuild the `nist-pages` branch to be reflected on https://pages.nist.gov/ACVP
377389

378-
If you would like to talk to our developers, you may want to send email to our mailing list [email protected]. You may also report bugs or request new tests.
379-
390+
If you would like to talk to our developers, you may want to send email to our mailing list cavp (at) nist.gov. You may also report bugs or request new tests.
380391

381392
# Related Projects
382393
- [ACVP Server](https://github.com/usnistgov/ACVP-Server/) (Release/Issue tracking for NIST's implementation of the ACVP protocol)

index.html

+24-12
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
function gtag(){dataLayer.push(arguments);}
1313
gtag('js', new Date());
1414

15-
gtag('config', 381374812');
15+
gtag('config', '381374812');
1616
</script>
1717

1818
<script async type="text/javascript" id="_fed_an_ua_tag" src="https://dap.digitalgov.gov/Universal-Federated-Analytics-Min.js?agency=NIST&subagency=github&pua=UA-66610693-1&yt=true&exts=ppsx,pps,f90,sch,rtf,wrl,txz,m1v,xlsm,msi,xsd,f,tif,eps,mpg,xml,pl,xlt,c"></script>
@@ -57,7 +57,7 @@ <h1 id="acvp">ACVP</h1>
5757
<p>
5858
The <a href="https://pages.nist.gov/ACVP/draft-fussell-acvp-spec.html">Automated Cryptographic Validation Protocol</a> (ACVP) is a protocol to support a new National Voluntary Laboratory Accreditation Program (NVLAP) testing scope at the <a href="https://www.nist.gov">National Institute of Standards and Technology (NIST)</a>.
5959

60-
The new testing scope, 17ACVT, is available, and defined in <a href="https://www.nist.gov/system/files/documents/2020/05/12/NIST-HB-150-17-2020.pdf">NIST Handbook 150-17</a>.
60+
The new testing scope, 17ACVT, is available, and defined in <a href="https://nvlpubs.nist.gov/nistpubs/hb/2021/NIST.HB.150-17-2021.pdf">NIST Handbook 150-17</a>.
6161

6262
All current information about ACVP protocol may be found within the Github project at <a href="https://github.com/usnistgov/ACVP">https://github.com/usnistgov/ACVP</a>. View the protocol documents at <a href="https://pages.nist.gov/ACVP/">https://pages.nist.gov/ACVP/</a>.
6363

@@ -85,9 +85,10 @@ <h1>Jump to</h1>
8585
<li><a href="#safe-primes">Safe Primes</a></li>
8686
<li><a href="#conditioning-components">Conditioning Components</a></li>
8787
<li><a href="#stateful-hash-based-signatures">Stateful Hash-Based Signatures</a></li>
88+
<li><a href="#module-lattice-algorithms">Module-Lattice Algorithms</a></li>
8889
</ul>
8990
</li>
90-
<li><a href="#access">Accessing the Server</a></li>
91+
<li><a href="#access">Accessing the Demo Server</a></li>
9192
<li><a href="#contribution">Contribution Guidelines</a></li>
9293
<li><a href="#related">Related Projects</a></li>
9394
<li><a href="#licensing">Licensing Terms</a></li>
@@ -120,16 +121,14 @@ <h1 id="metanorma">How to use Metanorma</h1>
120121
<p>You can switch between <code class="language-plaintext highlighter-rouge">-x html</code> and <code class="language-plaintext highlighter-rouge">-x txt</code> for different RFC output formats.</p>
121122

122123

123-
<p>If you make changes to a file that's referenced by a top level spec, run metanorma
124-
on the referenced file prior to running it on the top level file. E.g.,</p>
124+
<p>If you make changes to a file that's referenced by a top level spec, run metanorma on the referenced file prior to running it on the top level file. E.g.,</p>
125125

126-
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>
126+
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight">
127+
<code>
127128
metanorma compile -t ietf -x html symmetric/sections/04-testtypes.adoc<br>
128129
metanorma compile -t ietf -x html draft-celi-acvp-symmetric.adoc
129130
</code></pre></div></div>
130131

131-
132-
133132
<p>Or you can use the <code class="language-plaintext highlighter-rouge">Makefile</code> which is available.</p>
134133

135134
<p>To build all documents, html and txt</p>
@@ -427,9 +426,18 @@ <h2 id="stateful-hash-based-signatures">Stateful Hash-Based Signatures</h2>
427426
<li><a href="https://pages.nist.gov/ACVP/draft-celi-acvp-lms.txt">LMS sigVer</a> - <a href="https://pages.nist.gov/ACVP/draft-celi-acvp-lms.html">HTML</a></li>
428427
</ul>
429428

430-
<p>The prod server supports all of the above except for, AES-FF3-1, and AES-GCM-SIV. Some of these algorithms have NIST SP800 series drafts in progress and will be available on the prod server when the draft becomes a standard.</p>
429+
<h2 id="module-lattice-algorithms">Module-Lattice Algorithms</h2>
430+
<ul>
431+
<li><a href="https://pages.nist.gov/ACVP/draft-celi-acvp-ml-dsa.txt">ML-DSA keyGen</a> - <a href="https://pages.nist.gov/ACVP/draft-celi-acvp-ml-dsa.html">HTML</a></li>
432+
<li><a href="https://pages.nist.gov/ACVP/draft-celi-acvp-ml-dsa.txt">ML-DSA sigGen</a> - <a href="https://pages.nist.gov/ACVP/draft-celi-acvp-ml-dsa.html">HTML</a></li>
433+
<li><a href="https://pages.nist.gov/ACVP/draft-celi-acvp-ml-dsa.txt">ML-DSA sigVer</a> - <a href="https://pages.nist.gov/ACVP/draft-celi-acvp-ml-dsa.html">HTML</a></li>
434+
<li><a href="https://pages.nist.gov/ACVP/draft-celi-acvp-ml-kem.txt">ML-KEM keyGen</a> - <a href="https://pages.nist.gov/ACVP/draft-celi-acvp-ml-kem.html">HTML</a></li>
435+
<li><a href="https://pages.nist.gov/ACVP/draft-celi-acvp-ml-kem.txt">ML-KEM encapsulation and decapsulation</a> - <a href="https://pages.nist.gov/ACVP/draft-celi-acvp-ml-kem.html">HTML</a></li>
436+
</ul>
431437

432-
<h1 id="access">Accessing the Server</h1>
438+
<p>See <a href="https://pages.nist.gov/ACVP/draft-fussell-acvp-spec.html#name-algorithms">the algorithm endpoint</a> to learn which algorithms are available on a given ACVP server.</p>
439+
440+
<h1 id="access">Accessing the Demo Server</h1>
433441
<p>To access the demo server one needs a TLS credential <strong>and</strong> a one-time password (OTP). The <a href="https://pages.nist.gov/ACVP/draft-fussell-acvp-spec.html">protocol specification</a> and other development information are available in this repository. You may want to use the companion <a href="https://github.com/cisco/libacvp">ACVP client</a> to jump-start your work.</p>
434442

435443
<p>To set expectations, since this is a demo system, it will be in a state of flux and any all data on the system is considered temporary and may be reset to accommodate development of the Automated Cryptographic Validation Protocol (ACVP) service. We will try to keep the demo service relatively stable, but we plan to update it as we continue to add new algorithms and capabilities.</p>
@@ -438,7 +446,7 @@ <h1 id="access">Accessing the Server</h1>
438446

439447
<h2 id="obtaining-tls-credentials">Obtaining TLS credentials</h2>
440448

441-
<p>To access the <a href="https://demo.acvts.nist.gov/acvp/home">demo environment</a> you will need to send your CSR to us. Please use a 2048-bit RSA key pair and sign using at least a SHA-256 hash. Please send a request to <a href="mailto:[email protected]">[email protected]</a> with 'CSR REQUEST FOR ACCESS TO DEMO' in the subject line. You will receive instructions for how to upload your CSR.</p>
449+
<p>To access the demo environment you will need to send your CSR to us. Please use a 2048-bit RSA key pair and sign using at least a SHA-256 hash. Please send a request to <a href="mailto:[email protected]">[email protected]</a> with 'CSR REQUEST FOR ACCESS TO DEMO' in the subject line. You will receive instructions for how to upload your CSR.</p>
442450

443451
<p>You are expected to protect the key pair from unauthorized use and to notify NIST in the event the keypair becomes compromised. Also, since we do not have a formal login page the following notice applies when accessing the ACVP system:</p>
444452

@@ -450,6 +458,10 @@ <h2 id="configuring-and-using-one-time-passwords-otp">Configuring and using One-
450458

451459
<p>TOTP has been configured on all servers. See details <a href="https://github.com/usnistgov/ACVP/wiki#second-factor-authentication-and-authorization-schema-for-accessing-and-working-with-the-nist-automated-cryptographic-validation-services">on the GitHub Wiki here</a>.</p>
452460

461+
<h2 id="renewing-tls-credentials">Renewing TLS credentials</h2>
462+
463+
<p>Credentials are valid for a period of two years and will then expire. To renew your credentials, please send an email to [email protected] with the subject 'ACVTS DEMO CREDENTIAL RENEWAL REQUEST' in the subject line. You will receive further instructions via email regarding the renewal process.</p>
464+
453465
<h1 id="contribution">Contribution Guidelines</h1>
454466

455467
<p>If you want to contribute, please follow the simple rules below and send us pull requests.</p>
@@ -461,7 +473,7 @@ <h1 id="contribution">Contribution Guidelines</h1>
461473
<li>Once approved by a NIST member, GitHub Actions will rebuild the <code class="language-plaintext highlighter-rouge">nist-pages</code> branch to be reflected on <a href="https://pages.nist.gov/ACVP">https://pages.nist.gov/ACVP</a></li>
462474
</ul>
463475

464-
<p>If you would like to talk to our developers, you may want to send email to our mailing list algotest@list.nist.gov. You may also report bugs or request new tests.</p>
476+
<p>If you would like to talk to our developers, you may want to send email to our mailing list cavp (at) nist.gov. You may also report bugs or request new tests.</p>
465477

466478
<h1 id="related">Related Projects</h1>
467479
<ul>

src/Makefile

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ update:
1010
bundle install
1111

1212
clean:
13-
rm -rf *.err *.html *.xml *.txt documents/
13+
rm -rf *.err *.html *.xml *.txt *.abort documents/
1414

1515
%.html %.txt: %.adoc
1616
bundle exec metanorma compile $<

src/draft-celi-acvp-ml-dsa.adoc

+78
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
= ACVP ML-DSA JSON Specification
2+
:doctype: internet-draft
3+
:docname: acvp-ml
4+
:docnumber: draft-celi-acvp-ml-dsa-01
5+
:abbrev: ACVP ML-DSA
6+
:ipr: trust200902
7+
:submission-type: independent
8+
:area: Internet
9+
:intended-series: informational
10+
:revdate: 2024-04-01
11+
:forename_initials: C.C.
12+
:lastname: Celi
13+
:fullname: Christopher Celi
14+
:organization: National Institute of Standards and Technology
15+
:street: 100 Bureau Drive
16+
:city: Gaithersburg
17+
:code: 20899
18+
:country: United States of America
19+
20+
:role: editor
21+
:docfile: draft-celi-acvp-ml-dsa.adoc
22+
:mn-document-class: ietf
23+
:mn-output-extensions: xml,rfc,txt,html
24+
:area: General
25+
:keyword: acvp, crypto
26+
27+
// Singular name of the algorithm
28+
:spec-algorithm: Module Lattice-based Digital Signature Algorithm (ML-DSA)
29+
:algo-short-name: ML-DSA
30+
31+
include::common/common-sections/00-abstract.adoc[]
32+
33+
include::common/common-sections/01-intro.adoc[]
34+
35+
include::common/common-sections/02-conventions.adoc[]
36+
37+
include::ml-dsa/sections/03-supported.adoc[]
38+
39+
include::ml-dsa/sections/04-testtypes.adoc[]
40+
41+
include::common/common-sections/05-capabilities-description.adoc[]
42+
43+
include::common/common-sections/051-prerequisites.adoc[]
44+
45+
include::ml-dsa/sections/05-capabilities.adoc[]
46+
47+
include::ml-dsa/sections/05-ml-dsa-keygen-capabilities.adoc[]
48+
49+
include::ml-dsa/sections/05-ml-dsa-siggen-capabilities.adoc[]
50+
51+
include::ml-dsa/sections/05-ml-dsa-sigver-capabilities.adoc[]
52+
53+
include::common/common-sections/06-test-vector-intro.adoc[]
54+
55+
include::ml-dsa/sections/06-test-vectors.adoc[]
56+
57+
include::ml-dsa/sections/06-ml-dsa-keygen-test-vectors.adoc[]
58+
59+
include::ml-dsa/sections/06-ml-dsa-siggen-test-vectors.adoc[]
60+
61+
include::ml-dsa/sections/06-ml-dsa-sigver-test-vectors.adoc[]
62+
63+
include::ml-dsa/sections/07-responses.adoc[]
64+
65+
include::ml-dsa/sections/07-ml-dsa-keygen-responses.adoc[]
66+
67+
include::ml-dsa/sections/07-ml-dsa-siggen-responses.adoc[]
68+
69+
include::ml-dsa/sections/07-ml-dsa-sigver-responses.adoc[]
70+
71+
include::common/common-sections/10-security.adoc[]
72+
73+
include::common/common-sections/11-iana.adoc[]
74+
75+
include::common/common-sections/99-acknowledgements.adoc[]
76+
77+
// References must be given before appendixes
78+
include::ml-dsa/sections/98-references.adoc[]

src/draft-celi-acvp-ml-kem.adoc

+72
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
= ACVP ML-KEM JSON Specification
2+
:doctype: internet-draft
3+
:docname: acvp-ml
4+
:docnumber: draft-celi-acvp-ml-kem-01
5+
:abbrev: ACVP ML-KEM
6+
:ipr: trust200902
7+
:submission-type: independent
8+
:area: Internet
9+
:intended-series: informational
10+
:revdate: 2024-04-01
11+
:forename_initials: C.C.
12+
:lastname: Celi
13+
:fullname: Christopher Celi
14+
:organization: National Institute of Standards and Technology
15+
:street: 100 Bureau Drive
16+
:city: Gaithersburg
17+
:code: 20899
18+
:country: United States of America
19+
20+
:role: editor
21+
:docfile: draft-celi-acvp-ml-kem.adoc
22+
:mn-document-class: ietf
23+
:mn-output-extensions: xml,rfc,txt,html
24+
:area: General
25+
:keyword: acvp, crypto
26+
27+
// Singular name of the algorithm
28+
:spec-algorithm: Module Lattice-based Key Encapsulation Mechanism (ML-KEM)
29+
:algo-short-name: ML-KEM
30+
31+
include::common/common-sections/00-abstract.adoc[]
32+
33+
include::common/common-sections/01-intro.adoc[]
34+
35+
include::common/common-sections/02-conventions.adoc[]
36+
37+
include::ml-kem/sections/03-supported.adoc[]
38+
39+
include::ml-kem/sections/04-testtypes.adoc[]
40+
41+
include::common/common-sections/05-capabilities-description.adoc[]
42+
43+
include::common/common-sections/051-prerequisites.adoc[]
44+
45+
include::ml-kem/sections/05-capabilities.adoc[]
46+
47+
include::ml-kem/sections/05-ml-kem-keygen-capabilities.adoc[]
48+
49+
include::ml-kem/sections/05-ml-kem-encapdecap-capabilities.adoc[]
50+
51+
include::common/common-sections/06-test-vector-intro.adoc[]
52+
53+
include::ml-kem/sections/06-test-vectors.adoc[]
54+
55+
include::ml-kem/sections/06-ml-kem-keygen-test-vectors.adoc[]
56+
57+
include::ml-kem/sections/06-ml-kem-encapdecap-test-vectors.adoc[]
58+
59+
include::ml-kem/sections/07-responses.adoc[]
60+
61+
include::ml-kem/sections/07-ml-kem-keygen-responses.adoc[]
62+
63+
include::ml-kem/sections/07-ml-kem-encapdecap-responses.adoc[]
64+
65+
include::common/common-sections/10-security.adoc[]
66+
67+
include::common/common-sections/11-iana.adoc[]
68+
69+
include::common/common-sections/99-acknowledgements.adoc[]
70+
71+
// References must be given before appendixes
72+
include::ml-kem/sections/98-references.adoc[]

src/lms/sections/05-capabilities.adoc

-2
Original file line numberDiff line numberDiff line change
@@ -105,5 +105,3 @@ The following LMOTS Modes *MAY* be registerd by the module.
105105
* LMOTS_SHAKE_N32_W2
106106
* LMOTS_SHAKE_N32_W4
107107
* LMOTS_SHAKE_N32_W8
108-
109-
Test.

src/ml-dsa/sections/03-supported.adoc

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
2+
[#supported]
3+
== Supported ML-DSA Algorithms
4+
5+
The following ML-DSA algorithms *MAY* be advertised by the ACVP compliant cryptographic module. The list is in the form "algorithm / mode / revision".
6+
7+
* ML-DSA / keyGen / FIPS204
8+
* ML-DSA / sigGen / FIPS204
9+
* ML-DSA / sigVer / FIPS204

0 commit comments

Comments
 (0)