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.
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
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 >
305305This specification defines several cryptographic suites for the purposes of
306306creating and verifying proofs for Post-Quantum signatures, in conformance with
@@ -309,8 +309,11 @@ <h2>Introduction</h2>
309309 < p >
310310This 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>
329332A < dfn > conforming proof</ dfn > is any concrete expression of the data model
330333that complies with the normative statements in this specification. Specifically,
331334all 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 >
369367These 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 >
478471A 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
620613Canonicalization Algorithm [[RDF-CANON]], `rdfc` and JSON Canonicalization
621614Scheme [[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 >
918908This 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 >
931921If |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 >
937928Set |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 >
954932Set |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 >
964941Set |cryptosuite|.|createProof| to the algorithm in Section
965- [[[#create-proof-experimental-shs-2025 ]]].
942+ [[[#create-proof-slh-dsa ]]].
966943 </ li >
967944 < li >
968945Set |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 >
978954Set |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 >
992967Set |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 >
1010985The Module-Lattice-Based Digital Signature Standard defined in [[[FIPS-204]]] [[FIPS-204]]
1011986defines parameter sets for three different claimed security strengths. The
@@ -1108,8 +1083,8 @@ <h4>Create Proof (ML-DSA)</h4>
11081083
11091084 < p >
11101085The 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
11141089in 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>
11831158removed.
11841159 </ li >
11851160 < li >
1186- Set |cyphersuiteName | to |securedDocument|.|proof|.|cyphersuite |,
1161+ Set |cryptosuiteName | to |securedDocument|.|proof|.|cryptosuite |,
11871162which 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|,
11891164and |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 >
12351210The Stateless Hash-Based Digital Signature Standard defined in [[FIPS-205]]
12361211defines parameter sets for three different claimed security strengths,
@@ -1336,8 +1311,8 @@ <h4>Create Proof (SLH-DSA)</h4>
13361311
13371312 < p >
13381313The 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
13421317use 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>
14111386removed.
14121387 </ li >
14131388 < li >
1414- Set |cyphersuiteName | to |securedDocument|.|proof|.|cypnersuite|,
1389+ Set |cryptosuiteName | to |securedDocument|.|proof|.|cypnersuite|,
14151390it 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|,
14171392and |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 >
19761951The Proof Configuration algorithm output is dependent on the specific < em > proof
19771952options</ 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 >
20462021The < em > Hashing</ em > algorithm takes as inputs the results of the < em > Proof
20472022Configuration</ 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 ">
20532028The 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
20682043outputs 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 ">
20732048The output of the < em > Proof Serialization</ em > common algorithm is not given
20742049separately since it is contained in the `proofValue` attribute in the following
20752050examples 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