Skip to content

Commit 0541138

Browse files
authored
Merge pull request #306 from decentralized-identity/vasilis/h2c-rfc
Reference h2c as an RFC
2 parents cd87c8d + 0b78cae commit 0541138

File tree

1 file changed

+18
-18
lines changed

1 file changed

+18
-18
lines changed

draft-irtf-cfrg-bbs-signatures.md

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -211,7 +211,7 @@ Identity\_G1, Identity\_G2, Identity\_GT
211211
: The identity element for the G1, G2, and GT subgroups respectively.
212212

213213
hash\_to\_curve\_g1(ostr, dst) -> P
214-
: A cryptographic hash function that takes an arbitrary octet string as input and returns a point in G1, using the hash\_to\_curve operation defined in [@!I-D.irtf-cfrg-hash-to-curve] and the inputted dst as the domain separation tag for that operation (more specifically, the inputted dst will become the DST parameter for the hash\_to\_field operation, called by hash\_to\_curve).
214+
: A cryptographic hash function that takes an arbitrary octet string as input and returns a point in G1, using the hash\_to\_curve operation defined in [@!RFC9380] and the inputted dst as the domain separation tag for that operation (more specifically, the inputted dst will become the DST parameter for the hash\_to\_field operation, called by hash\_to\_curve).
215215

216216
point\_to\_octets\_E1(P) -> ostr, point\_to\_octets\_E2(P) -> ostr
217217
: returns the canonical representation of the point P of the elliptic curve E1 or E2 as an octet string. This operation is also known as serialization. Note that we assume that when the point is valid, all the serialization operations will always succeed to return the octet string representation of the point.
@@ -251,7 +251,7 @@ The schemes operations defined in this section depend on the following parameter
251251

252252
* A pairing-friendly elliptic curve, plus associated functionality given in (#notation).
253253

254-
* A hash-to-curve suite as defined in [@!I-D.irtf-cfrg-hash-to-curve], using the aforementioned pairing-friendly curve. This defines the hash\_to\_curve and expand\_message operations, used by this document.
254+
* A hash-to-curve suite as defined in [@!RFC9380], using the aforementioned pairing-friendly curve. This defines the hash\_to\_curve and expand\_message operations, used by this document.
255255

256256
* get\_random(n): returns a random octet string with a length of n bytes, sampled uniformly at random using a cryptographically secure pseudo-random number generator (CSPRNG) or a pseudo random function. See [@!RFC4086] for recommendations and requirements on the generation of random numbers.
257257

@@ -1140,7 +1140,7 @@ It is RECOMMENDED that the `create_generators` and `messages_to_scalars` operati
11401140

11411141
### Generators Calculation
11421142

1143-
The `create_generators` procedure defines how to create a set of randomly sampled points from the G1 subgroup, called the generators. It makes use of the primitives defined in [@!I-D.irtf-cfrg-hash-to-curve] (more specifically of `hash_to_curve` and `expand_message`) to hash a seed to a set of generators. Those primitives are implicitly defined by the ciphersuite, through the choice of a hash-to-curve suite (see the `hash_to_curve_suite` parameter in (#ciphersuite-format)).
1143+
The `create_generators` procedure defines how to create a set of randomly sampled points from the G1 subgroup, called the generators. It makes use of the primitives defined in [@!RFC9380] (more specifically of `hash_to_curve` and `expand_message`) to hash a seed to a set of generators. Those primitives are implicitly defined by the ciphersuite, through the choice of a hash-to-curve suite (see the `hash_to_curve_suite` parameter in (#ciphersuite-format)).
11441144

11451145
Since `create_generators` generates constant points, as an optimization, implementations MAY cache its result for a specific `count` (which can be arbitrarily large, depending on the application). Care must be taken, to guarantee that the generators will be fetched from the cache in the same order they had when they where created (i.e., an application should not short or in any way rearrange the cached generators).
11461146

@@ -1322,9 +1322,9 @@ Procedure:
13221322

13231323
This operation describes how to hash an arbitrary octet string to a scalar values in the multiplicative group of integers mod r (i.e., values in the range from 1 to r - 1). This procedure acts as a helper function, used internally in various places within the operations described in the spec.
13241324

1325-
The operation takes as input an octet string representing the octet string to hash (`msg`) and a domain separation tag (`dst`). The length of the dst MUST be less than 255 octets. See section 5.3.3 of [@!I-D.irtf-cfrg-hash-to-curve] for guidance on using larger dst values.
1325+
The operation takes as input an octet string representing the octet string to hash (`msg`) and a domain separation tag (`dst`). The length of the dst MUST be less than 255 octets. See section 5.3.3 of [@!RFC9380] for guidance on using larger dst values.
13261326

1327-
**Note** This operation makes use of `expand_message` defined in [@!I-D.irtf-cfrg-hash-to-curve]. The operation `expand_message` may fail (abort). In that case, `hash_to_scalar` MUST also ABORT.
1327+
**Note** This operation makes use of `expand_message` defined in [@!RFC9380]. The operation `expand_message` may fail (abort). In that case, `hash_to_scalar` MUST also ABORT.
13281328

13291329
```
13301330
hashed_scalar = hash_to_scalar(msg_octets, dst)
@@ -1690,7 +1690,7 @@ The signature proofs of knowledge generated in this specification are created us
16901690

16911691
## Implementing hash\_to\_curve\_g1
16921692

1693-
The security analysis models hash\_to\_curve\_g1 as random oracles. It is crucial that these functions are implemented using a cryptographically secure hash function. For this purpose, implementations MUST meet the requirements of [@!I-D.irtf-cfrg-hash-to-curve].
1693+
The security analysis models hash\_to\_curve\_g1 as random oracles. It is crucial that these functions are implemented using a cryptographically secure hash function. For this purpose, implementations MUST meet the requirements of [@!RFC9380].
16941694

16951695
In addition, ciphersuites MUST specify unique domain separation tags for hash\_to\_curve. Some guidance around defining this can be found in (#ciphersuites).
16961696

@@ -1765,9 +1765,9 @@ The parameters that each ciphersuite needs to define are generally divided into
17651765

17661766
- octet\_point\_length: Number of bytes to represent a point encoded as an octet string outputted by the `point_to_octets_E*` function.
17671767

1768-
- hash\_to\_curve\_suite: The hash-to-curve ciphersuite id, in the form defined in [@!I-D.irtf-cfrg-hash-to-curve]. This defines the hash\_to\_curve\_g1 (the hash\_to\_curve operation for the G1 subgroup, see the Notation defined in (#notation)) and the expand\_message (either expand\_message\_xmd or expand\_message\_xof) operations used in this document.
1768+
- hash\_to\_curve\_suite: The hash-to-curve ciphersuite id, in the form defined in [@!RFC9380]. This defines the hash\_to\_curve\_g1 (the hash\_to\_curve operation for the G1 subgroup, see the Notation defined in (#notation)) and the expand\_message (either expand\_message\_xmd or expand\_message\_xof) operations used in this document.
17691769

1770-
- expand\_len: Must be defined to be at least `ceil((ceil(log2(r))+k)/8)`, where `log2(r)` and `k` are defined by each ciphersuite (see Section 5 in [@!I-D.irtf-cfrg-hash-to-curve] for a more detailed explanation of this definition).
1770+
- expand\_len: Must be defined to be at least `ceil((ceil(log2(r))+k)/8)`, where `log2(r)` and `k` are defined by each ciphersuite (see Section 5 in [@!RFC9380] for a more detailed explanation of this definition).
17711771

17721772
- P1: A fixed point in the G1 subgroup, different from the point BP1 (i.e., the base point of G1, see (#terminology)). This leaves the base point "free", to be used with other protocols, like key commitment and proof of possession schemes (for example, like the one described in Section 3.3 of [@I-D.irtf-cfrg-bls-signature]).
17731773

@@ -1793,7 +1793,7 @@ The following two ciphersuites are based on the BLS12-381 elliptic curves define
17931793

17941794
The first ciphersuite uses the hash-to-curve suite `BLS12381G1_XOF:SHAKE-256_SSWU_RO_`, defined by this document in [Appendix A.1](#bls12-381-hash_to_curve-def), which is based on the SHAKE-256 extendable output function, as defined in Section 6.2 of [@!SHA3].
17951795

1796-
The second ciphersuite uses the hash-to-curve suite `BLS12381G1_XMD:SHA-256_SSWU_RO_`, defined in Section 8.8.1 of the [@!I-D.irtf-cfrg-hash-to-curve] document, which is based on the SHA-256, as defined in Section 6.2 of [@!SHA2] .
1796+
The second ciphersuite uses the hash-to-curve suite `BLS12381G1_XMD:SHA-256_SSWU_RO_`, defined in Section 8.8.1 of the [@!RFC9380] document, which is based on the SHA-256, as defined in Section 6.2 of [@!SHA2] .
17971797

17981798
For both ciphersuites defined in this section, the fixed point `P1` of G1 is defined as the output of the `create_generators` procedure defined in (#generators-calculation) instantiated with the parameters defined by each ciphersuite, with the inputs `count = 1`, not supplying an `api_id` value and making use of the following "Definitions" for the `seed_dst`, `generator_dst` and `generator_seed` variables;
17991799

@@ -1854,7 +1854,7 @@ Note that these two ciphersuites differ only in the hash-to-curve suites used. T
18541854
18551855
- octet\_point\_length: 48, based on the RECOMMENDED approach of `ceil(log2(p)/8)`.
18561856
1857-
- hash\_to\_curve\_suite: "BLS12381G1\_XMD:SHA-256\_SSWU\_RO\_" as defined in Section 8.8.1 of the [@!I-D.irtf-cfrg-hash-to-curve] for the G1 subgroup.
1857+
- hash\_to\_curve\_suite: "BLS12381G1\_XMD:SHA-256\_SSWU\_RO\_" as defined in Section 8.8.1 of the [@!RFC9380] for the G1 subgroup.
18581858
18591859
- expand\_len: 48 ( `= ceil((ceil(log2(r))+k)/8)`)
18601860
@@ -2468,17 +2468,17 @@ Additionally, the authors would like to acknoledge Jacques Traore and Antoine Du
24682468
24692469
# BLS12-381 hash\_to\_curve Definition Using SHAKE-256
24702470
2471-
The following defines a hash\_to\_curve suite [@!I-D.irtf-cfrg-hash-to-curve] for the BLS12-381 curve for both the G1 and G2 subgroups using the extendable output function (xof) of SHAKE-256 as per the guidance defined in section 8.9 of [@!I-D.irtf-cfrg-hash-to-curve].
2471+
The following defines a hash\_to\_curve suite [@!RFC9380] for the BLS12-381 curve for both the G1 and G2 subgroups using the extendable output function (xof) of SHAKE-256 as per the guidance defined in section 8.9 of [@!RFC9380].
24722472
2473-
Note the notation used in the below definitions is sourced from [@!I-D.irtf-cfrg-hash-to-curve].
2473+
Note the notation used in the below definitions is sourced from [@!RFC9380].
24742474
24752475
## BLS12-381 G1
24762476
24772477
The suite of `BLS12381G1_XOF:SHAKE-256_SSWU_RO_` is defined as follows:
24782478
24792479
```
24802480
* encoding type: hash_to_curve (Section 3 of
2481-
[@!I-D.irtf-cfrg-hash-to-curve])
2481+
[@!RFC9380])
24822482

24832483
* E: y^2 = x^3 + 4
24842484

@@ -2492,14 +2492,14 @@ The suite of `BLS12381G1_XOF:SHAKE-256_SSWU_RO_` is defined as follows:
24922492
* k: 128
24932493

24942494
* expand_message: expand_message_xof (Section 5.3.2 of
2495-
[@!I-D.irtf-cfrg-hash-to-curve])
2495+
[@!RFC9380])
24962496

24972497
* hash: SHAKE-256
24982498

24992499
* L: 64
25002500

25012501
* f: Simplified SWU for AB == 0 (Section 6.6.3 of
2502-
[@!I-D.irtf-cfrg-hash-to-curve])
2502+
[@!RFC9380])
25032503

25042504
* Z: 11
25052505

@@ -2512,14 +2512,14 @@ The suite of `BLS12381G1_XOF:SHAKE-256_SSWU_RO_` is defined as follows:
25122512
cef35ef55a23215a316ceaa5d1cc48e98e172be0
25132513

25142514
* iso_map: the 11-isogeny map from E' to E given in Appendix E.2 of
2515-
[@!I-D.irtf-cfrg-hash-to-curve]
2515+
[@!RFC9380]
25162516

25172517
* h_eff: 0xd201000000010001
25182518
```
25192519
2520-
Note that the h_eff values for this suite are copied from that defined for the `BLS12381G1_XMD:SHA-256_SSWU_RO_` suite defined in section 8.8.1 of [@!I-D.irtf-cfrg-hash-to-curve].
2520+
Note that the `h_eff` values for this suite are copied from that defined for the `BLS12381G1_XMD:SHA-256_SSWU_RO_` suite defined in section 8.8.1 of [@!RFC9380].
25212521
2522-
An optimized example implementation of the Simplified SWU mapping to the curve E' isogenous to BLS12-381 G1 is given in Appendix F.2 [@!I-D.irtf-cfrg-hash-to-curve].
2522+
An optimized example implementation of the Simplified SWU mapping to the curve E' isogenous to BLS12-381 G1 is given in Appendix F.2 [@!RFC9380].
25232523
25242524
# The BLS12-381 Curve
25252525

0 commit comments

Comments
 (0)