Skip to content

Commit c9db5b0

Browse files
Wind4GregTallTed
andauthored
Editorial fixes and Updates and Add Greg as Editor/Author (#13)
* Update to consistently use the term "cryptosuite" rather than "cyphersuite". * Added myself, Greg Bernstein, as author and editor. * Update instantiate cryptosuite section for new parameterized create proof, verify proof for ML-DSA and SLH-DSA. * Update introduction. * Editorial fixes and Updates: Wording improvements. Co-authored-by: Ted Thibodeau Jr <tthibodeau@openlinksw.com> --------- Co-authored-by: Ted Thibodeau Jr <tthibodeau@openlinksw.com>
1 parent a93a5f3 commit c9db5b0

1 file changed

Lines changed: 45 additions & 70 deletions

File tree

index.html

Lines changed: 45 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,9 @@
6666
company: "Digital Bazaar",
6767
companyURL: "https://digitalbazaar.com/",
6868
w3cid: 41758
69+
}, {
70+
name: "Greg Bernstein", url: "https://www.grotto-networking.com/",
71+
company: "Invited Expert", w3cid: 140479
6972
}],
7073

7174
// authors, add as many as you like.
@@ -100,6 +103,9 @@
100103
company: "Digital Bazaar",
101104
companyURL: "https://digitalbazaar.com/",
102105
w3cid: 41758
106+
}, {
107+
name: "Greg Bernstein", url: "https://www.grotto-networking.com/",
108+
company: "Invited Expert", w3cid: 140479
103109
}],
104110

105111
// extend the bibliography entries
@@ -295,12 +301,6 @@
295301

296302
<section>
297303
<h2>Introduction</h2>
298-
<p class="ednote">
299-
Need to update to include high level descriptions of signature suites, their
300-
supported "flavors" (parameter sets), security categories, and corresponding
301-
hash functions. As in other VC DI cryptosuite specifications, this draft
302-
considers both RDF canonicalization and JCS canonicalization where appropriate.
303-
</p>
304304
<p>
305305
This specification defines several cryptographic suites for the purposes of
306306
creating and verifying proofs for Post-Quantum signatures, in conformance with
@@ -309,8 +309,11 @@ <h2>Introduction</h2>
309309
<p>
310310
This specification uses either the RDF Dataset Canonicalization Algorithm
311311
[[RDF-CANON]] or the JSON Canonicalization Scheme [[RFC8785]] to transform the
312-
input document into its canonical form. It uses SHA-256 [[RFC6234]] as the
313-
message digest algorithm and ML-DSA-44 as the signature algorithm.
312+
input document into its canonical form. It uses a hash based on SHA-2 [[RFC6234]]
313+
and appropriate to the security category as the message digest, and supports a
314+
number of different Post-Quantum signature algorithms with varying properties
315+
such as public key size, signature size, and computational and implementational
316+
complexity.
314317
</p>
315318

316319
<section id="terminology">
@@ -329,7 +332,7 @@ <h3>Terminology</h3>
329332
A <dfn>conforming proof</dfn> is any concrete expression of the data model
330333
that complies with the normative statements in this specification. Specifically,
331334
all relevant normative statements in Sections [[[#data-model]]] and
332-
[[[#algorithms]]] of this document MUST be enforced.
335+
[[[#Algorithms]]] of this document MUST be enforced.
333336
</p>
334337

335338
<p>
@@ -360,11 +363,6 @@ <h2>Data Model</h2>
360363

361364
<section id="VerificationMethods">
362365
<h3>Verification Methods</h3>
363-
<p class="ednote">
364-
This section defines the general approach to `publicKeyMultibase` format for
365-
quantum safe algorithms in this specification with details for each signature
366-
suite given by a table entry.
367-
</p>
368366
<p>
369367
These verification methods are used to verify Data Integrity Proofs
370368
[[VC-DATA-INTEGRITY]] produced using the cryptographic key material for the
@@ -469,11 +467,6 @@ <h3>Proof Representations</h3>
469467

470468
<section id="DataIntegrityProof">
471469
<h4>DataIntegrityProof</h4>
472-
<p class="ednote">
473-
This section gives general information on cryptosuites and `proofValue` with
474-
specifics given in a table. Additional suites are easily added via additional
475-
table entries (and corresponding algorithms sections).
476-
</p>
477470
<p>
478471
A proof contains the attributes specified in the
479472
<a href="https://www.w3.org/TR/vc-data-integrity/#proofs">Proofs section</a>
@@ -616,7 +609,7 @@ <h2>Algorithms</h2>
616609
</tbody>
617610
</table>
618611
<p>
619-
This specification supports cyphersuites based on both the Universal RDF Dataset
612+
This specification supports cryptosuites based on both the Universal RDF Dataset
620613
Canonicalization Algorithm [[RDF-CANON]], `rdfc` and JSON Canonicalization
621614
Scheme [[RFC8785]], `jcs`. When the RDF Dataset Canonicalization Algorithm
622615
[[RDF-CANON]] is used with the [[[#ProofConfigurationAlg]]] and [[[#TransformationAlg]]]
@@ -911,9 +904,6 @@ <h4>Proof Verification</h4>
911904
</section>
912905
<section id="InstantiateCryptosuite">
913906
<h3>Instantiate Cryptosuite</h3>
914-
<p class="ednote">
915-
To do: update to deal with all the cryptosuite flavors.
916-
</p>
917907
<p>
918908
This algorithm is used to configure a cryptographic suite to be used by the
919909
<a data-cite="VC-DATA-INTEGRITY#add-proof">Add Proof</a> and
@@ -930,49 +920,35 @@ <h3>Instantiate Cryptosuite</h3>
930920
<li>
931921
If |options|.|type| does not equal `DataIntegrityProof`, return |cryptosuite|.
932922
</li>
923+
933924
<li>
934-
If |options|.|cryptosuite| is `experimental-mldsa44-2024` then:
925+
If |options|.|cryptosuite| is `mldsa44-rdfc-2024` or `mldsa44-jcs-2024` then:
935926
<ol class="algorithm">
936927
<li>
937928
Set |cryptosuite|.|createProof| to the algorithm in Section
938-
[[[#create-proof-experimental-mldsa44-2024]]].
939-
</li>
940-
<li>
941-
Set |cryptosuite|.|verifyProof| to the algorithm in Section
942-
[[[#proof-verification-experimental-mldsa44-2024]]].
943-
</li>
944-
</ol>
945-
</li>
946-
<li>
947-
If |options|.|cryptosuite| is `experimental-mldsa-2024` then:
948-
<ol class="algorithm">
949-
<li>
950-
Set |cryptosuite|.|createProof| to the result of running the algorithm in Section
951-
[[[#create-proof-experimental-mldsa44-2024]]].
929+
[[[#create-proof-ml-dsa]]].
952930
</li>
953931
<li>
954932
Set |cryptosuite|.|verifyProof| to the algorithm in Section
955-
[[[#proof-verification-experimental-mldsa44-2024]]].
933+
[[[#verify-proof-ml-dsa]]].
956934
</li>
957935
</ol>
958936
</li>
959937
<li>
960-
<li>
961-
If |options|.|cryptosuite| is `experimental-shs-2025` then:
938+
If |options|.|cryptosuite| is `slhdsa128-rdfc-2024` or `slhdsa128-jcs-2024` then:
962939
<ol class="algorithm">
963940
<li>
964941
Set |cryptosuite|.|createProof| to the algorithm in Section
965-
[[[#create-proof-experimental-shs-2025]]].
942+
[[[#create-proof-slh-dsa]]].
966943
</li>
967944
<li>
968945
Set |cryptosuite|.|verifyProof| to the algorithm in Section
969-
[[[#proof-verification-experimental-shs-2025]]].
946+
[[[#verify-proof-slh-dsa]]].
970947
</li>
971948
</ol>
972949
</li>
973950
<li>
974-
<li>
975-
If |options|.|cryptosuite| is `experimental-falcon-2025` then:
951+
If |options|.|cryptosuite| is `experimental-falcon-2025` then:
976952
<ol class="algorithm">
977953
<li>
978954
Set |cryptosuite|.|createProof| to the algorithm in Section
@@ -985,8 +961,7 @@ <h3>Instantiate Cryptosuite</h3>
985961
</ol>
986962
</li>
987963
<li>
988-
<li>
989-
If |options|.|cryptosuite| is `experimental-sqi-2025` then:
964+
If |options|.|cryptosuite| is `experimental-sqi-2025` then:
990965
<ol class="algorithm">
991966
<li>
992967
Set |cryptosuite|.|createProof| to the algorithm in Section
@@ -1005,7 +980,7 @@ <h3>Instantiate Cryptosuite</h3>
1005980

1006981
</section>
1007982
<section id="MLDSA_Cypthersuites">
1008-
<h3>ML-DSA Cyphersuites</h3>
983+
<h3>ML-DSA Cryptosuites</h3>
1009984
<p>
1010985
The Module-Lattice-Based Digital Signature Standard defined in [[[FIPS-204]]] [[FIPS-204]]
1011986
defines parameter sets for three different claimed security strengths. The
@@ -1108,8 +1083,8 @@ <h4>Create Proof (ML-DSA)</h4>
11081083

11091084
<p>
11101085
The following algorithm specifies how to create a [=data integrity proof=] given
1111-
an <a>unsecured data document</a> and an ML-DSA cyphersuite chosen from
1112-
[[[#MLSuitesTable]]]. The choice of cyphersuite sets the values of |canonScheme|,
1086+
an <a>unsecured data document</a> and an ML-DSA cryptosuite chosen from
1087+
[[[#MLSuitesTable]]]. The choice of cryptosuite sets the values of |canonScheme|,
11131088
|hashName|, |sigFunc|, and |verifyFunc| per [[[#MLSuitesTable]]], which are used
11141089
in the algorithm below. Additional required inputs are an
11151090
<a>unsecured data document</a> ([=map=] |unsecuredDocument|), and a set of proof
@@ -1183,9 +1158,9 @@ <h4>Verify Proof (ML-DSA)</h4>
11831158
removed.
11841159
</li>
11851160
<li>
1186-
Set |cyphersuiteName| to |securedDocument|.|proof|.|cyphersuite|,
1161+
Set |cryptosuiteName| to |securedDocument|.|proof|.|cryptosuite|,
11871162
which must be one of those listed in [[[#MLSuitesTable]]].
1188-
From |cyphersuiteName|, set the values of |canonScheme|, |hashName|,
1163+
From |cryptosuiteName|, set the values of |canonScheme|, |hashName|,
11891164
and |verifyFunc|, as found in [[[#MLSuitesTable]]].
11901165
</li>
11911166
<li>
@@ -1229,8 +1204,8 @@ <h4>Verify Proof (ML-DSA)</h4>
12291204
</section>
12301205

12311206
</section>
1232-
<section id="SLHDSA_Cyphersuites">
1233-
<h3>SLH-DSA Cyphersuites</h3>
1207+
<section id="SLHDSA_Cryptosuites">
1208+
<h3>SLH-DSA Cryptosuites</h3>
12341209
<p>
12351210
The Stateless Hash-Based Digital Signature Standard defined in [[FIPS-205]]
12361211
defines parameter sets for three different claimed security strengths,
@@ -1336,8 +1311,8 @@ <h4>Create Proof (SLH-DSA)</h4>
13361311

13371312
<p>
13381313
The following algorithm specifies how to create a [=data integrity proof=] given
1339-
an <a>unsecured data document</a> and an SLH-DSA cyphersuite chosen from
1340-
[[[#SLHSuiteTable]]]. The choice of cyphersuite sets the values of |canonScheme|,
1314+
an <a>unsecured data document</a> and an SLH-DSA cryptosuite chosen from
1315+
[[[#SLHSuiteTable]]]. The choice of cryptosuite sets the values of |canonScheme|,
13411316
|hashName|, |sigFunc|, and |verifyFunc| as found in [[[#SLHSuiteTable]]], for
13421317
use in the algorithm below. Additional required inputs are an
13431318
<a>unsecured data document</a> ([=map=] |unsecuredDocument|), and a set of proof
@@ -1411,9 +1386,9 @@ <h4>Verify Proof (SLH-DSA)</h4>
14111386
removed.
14121387
</li>
14131388
<li>
1414-
Set |cyphersuiteName| to |securedDocument|.|proof|.|cypnersuite|,
1389+
Set |cryptosuiteName| to |securedDocument|.|proof|.|cypnersuite|,
14151390
it must be one of those listed in [[[#SLHSuiteTable]]].
1416-
From |cyphersuiteName| set the values of |canonScheme|, |hashName|,
1391+
From |cryptosuiteName| set the values of |canonScheme|, |hashName|,
14171392
and |verifyFunc| per [[[#SLHSuiteTable]]].
14181393
</li>
14191394
<li>
@@ -1458,7 +1433,7 @@ <h4>Verify Proof (SLH-DSA)</h4>
14581433
</section>
14591434
</section>
14601435

1461-
<section id="Falcon_Cyphersuites">
1436+
<section id="Falcon_Cryptosuites">
14621437
<h3>experimental-falcon-2025</h3>
14631438
<!-- **TODO**: Update and broaden, Maybe wait for FIPS-206 to come out
14641439
Want this to deal with a "Group" of cryptosuites based on FALCON at three
@@ -1669,7 +1644,7 @@ <h4>Proof Verification (experimental-falcon-2025)</h4>
16691644
</section>
16701645

16711646

1672-
<section id="SQISign_Cyphersuites">
1647+
<section id="SQISign_Cryptosuites">
16731648
<h3>experimental-sqi-2025</h3>
16741649

16751650
<p>
@@ -1975,7 +1950,7 @@ <h4>Common Algorithms: Proof Configuration</h4>
19751950
<p>
19761951
The Proof Configuration algorithm output is dependent on the specific <em>proof
19771952
options</em> as well as the parameters, hence an output test vector for Proof
1978-
Configuration is given for each supported `cyphersuite`.
1953+
Configuration is given for each supported `cryptosuite`.
19791954
</p>
19801955
<section>
19811956
<h5>Proof Configuration (`rdfc`, `sha-256`)</h5>
@@ -2045,9 +2020,9 @@ <h4>Common Algorithms: Hashing</h4>
20452020
<p>
20462021
The <em>Hashing</em> algorithm takes as inputs the results of the <em>Proof
20472022
Configuration</em> and <em>Transformation</em> algorithms. Since the <em>Proof
2048-
Configuration</em> algorithm output is cyphersuite specific the <em>Hashing</em>
2049-
algorithm output is given for each cyphersuite test case. The <em>Hashing</em>
2050-
output for each cyphersuite test case is given in hexadecimal format below.
2023+
Configuration</em> algorithm output is cryptosuite specific the <em>Hashing</em>
2024+
algorithm output is given for each cryptosuite test case. The <em>Hashing</em>
2025+
output for each cryptosuite test case is given in hexadecimal format below.
20512026
</p>
20522027
<p class="note">
20532028
The first half of the hexadecimal <em>Hashing</em> result is the hash of the
@@ -2064,39 +2039,39 @@ <h4>Common Algorithms: Hashing</h4>
20642039
<section id="TV-Create-Proof">
20652040
<h4>Create Proof</h4>
20662041
<p>
2067-
The <em>Create Proof</em> algorithm output is cyphersuite specific and uses the
2042+
The <em>Create Proof</em> algorithm output is cryptosuite specific and uses the
20682043
outputs of the <em>Proof Configuration</em>, <em>Transformation</em>,
20692044
<em>Hashing</em>, and <em>Proof Serialization</em> algorithms. The output for
2070-
each cyphersuite test case is given below.
2045+
each cryptosuite test case is given below.
20712046
</p>
20722047
<p class="note">
20732048
The output of the <em>Proof Serialization</em> common algorithm is not given
20742049
separately since it is contained in the `proofValue` attribute in the following
20752050
examples and can be quite lengthy for some quantum safe signature algorithms.
20762051
</p>
20772052
<section>
2078-
<h5>Cyphersuite `mldsa44-rdfc-2024`</h5>
2053+
<h5>Cryptosuite `mldsa44-rdfc-2024`</h5>
20792054
<pre class="example nohighlight" title="Signed credential `mldsa44-rdfc-2024`"
20802055
data-include="testVectors/mldsa44-rdfc-2024/signed-mldsa44-rdfc-2024.json"
20812056
data-include-format="text">
20822057
</pre>
20832058
</section>
20842059
<section>
2085-
<h5>Cyphersuite `mldsa44-jcs-2024`</h5>
2060+
<h5>Cryptosuite `mldsa44-jcs-2024`</h5>
20862061
<pre class="example nohighlight" title="Signed credential `mldsa44-jcs-2024`"
20872062
data-include="testVectors/mldsa44-jcs-2024/signed-mldsa44-jcs-2024.json"
20882063
data-include-format="text">
20892064
</pre>
20902065
</section>
20912066
<section>
2092-
<h5>Cyphersuite `slhdsa128-rdfc-2024`</h5>
2067+
<h5>Cryptosuite `slhdsa128-rdfc-2024`</h5>
20932068
<pre class="example nohighlight" title="Signed credential `slhdsa128-rdfc-2024`"
20942069
data-include="testVectors/slhdsa128-rdfc-2024/signed-slhdsa128-rdfc-2024.json"
20952070
data-include-format="text">
20962071
</pre>
20972072
</section>
20982073
<section>
2099-
<h5>Cyphersuite `slhdsa128-jcs-2024`</h5>
2074+
<h5>Cryptosuite `slhdsa128-jcs-2024`</h5>
21002075
<pre class="example nohighlight" title="Signed credential `slhdsa128-jcs-2024`"
21012076
data-include="testVectors/slhdsa128-jcs-2024/signed-slhdsa128-jcs-2024.json"
21022077
data-include-format="text">

0 commit comments

Comments
 (0)