| rfc9474.original.xml | rfc9474.xml | |||
|---|---|---|---|---|
| <?xml version='1.0' encoding='utf-8'?> | <?xml version="1.0" encoding="UTF-8"?> | |||
| <!DOCTYPE rfc [ | <!DOCTYPE rfc [ | |||
| <!ENTITY nbsp " "> | <!ENTITY nbsp " "> | |||
| <!ENTITY zwsp "​"> | <!ENTITY zwsp "​"> | |||
| <!ENTITY nbhy "‑"> | <!ENTITY nbhy "‑"> | |||
| <!ENTITY wj "⁠"> | <!ENTITY wj "⁠"> | |||
| ]> | ]> | |||
| <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?> | ||||
| <!-- generated by https://github.com/cabo/kramdown-rfc version 1.6.36 (Ruby 3.2. 2) --> | <!-- generated by https://github.com/cabo/kramdown-rfc version 1.6.36 (Ruby 3.2. 2) --> | |||
| <rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft | ||||
| -irtf-cfrg-rsa-blind-signatures-14" category="info" tocInclude="true" sortRefs=" | <rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft | |||
| true" symRefs="true" version="3"> | -irtf-cfrg-rsa-blind-signatures-14" number="9474" submissionType="IRTF" category | |||
| ="info" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" update | ||||
| s="" obsoletes="" xml:lang="en" version="3"> | ||||
| <!-- xml2rfc v2v3 conversion 3.17.4 --> | <!-- xml2rfc v2v3 conversion 3.17.4 --> | |||
| <front> | <front> | |||
| <title abbrev="RSA Blind Signatures">RSA Blind Signatures</title> | <title abbrev="RSA Blind Signatures">RSA Blind Signatures</title> | |||
| <seriesInfo name="Internet-Draft" value="draft-irtf-cfrg-rsa-blind-signature s-14"/> | <seriesInfo name="RFC" value="9474"/> | |||
| <author initials="F." surname="Denis" fullname="Frank Denis"> | <author initials="F." surname="Denis" fullname="Frank Denis"> | |||
| <organization>Fastly Inc.</organization> | <organization>Fastly Inc.</organization> | |||
| <address> | <address> | |||
| <email>fd@00f.net</email> | <email>fd@00f.net</email> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <author initials="F." surname="Jacobs" fullname="Frederic Jacobs"> | <author initials="F." surname="Jacobs" fullname="Frederic Jacobs"> | |||
| <organization>Apple Inc.</organization> | <organization>Apple Inc.</organization> | |||
| <address> | <address> | |||
| <email>frederic.jacobs@apple.com</email> | <email>frederic.jacobs@apple.com</email> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <author initials="C. A." surname="Wood" fullname="Christopher A. Wood"> | <author initials="C. A." surname="Wood" fullname="Christopher A. Wood"> | |||
| <organization>Cloudflare</organization> | <organization>Cloudflare</organization> | |||
| <address> | <address> | |||
| <email>caw@heapingbits.net</email> | <email>caw@heapingbits.net</email> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <date year="2023" month="July" day="10"/> | <date year="2023" month="October"/> | |||
| <keyword>Internet-Draft</keyword> | <workgroup>Crypto Forum</workgroup> | |||
| <keyword>RSABSSA</keyword> | ||||
| <keyword>RSA</keyword> | ||||
| <keyword>blind signature</keyword> | ||||
| <abstract> | <abstract> | |||
| <?line 139?> | ||||
| <t>This document specifies an RSA-based blind signature protocol. RSA blind sign atures were first | <t>This document specifies an RSA-based blind signature protocol. RSA blind sign atures were first | |||
| introduced by Chaum for untraceable payments. A signature that is output from th is | introduced by Chaum for untraceable payments. A signature that is output from th is | |||
| protocol can be verified as an RSA-PSS signature.</t> | protocol can be verified as an RSA-PSS signature.</t> | |||
| <t>This document is a product of the Crypto Forum Research Group (CFRG) in the IRTF.</t> | <t>This document is a product of the Crypto Forum Research Group (CFRG) in the IRTF.</t> | |||
| </abstract> | </abstract> | |||
| <note removeInRFC="true"> | ||||
| <name>Discussion Venues</name> | ||||
| <t>Source for this draft and an issue tracker can be found at | ||||
| <eref target="https://github.com/chris-wood/draft-wood-cfrg-blind-signatures"/ | ||||
| >.</t> | ||||
| </note> | ||||
| </front> | </front> | |||
| <middle> | <middle> | |||
| <?line 147?> | ||||
| <section anchor="introduction"> | <section anchor="introduction"> | |||
| <name>Introduction</name> | <name>Introduction</name> | |||
| <t>Originally introduced in the context of digital cash systems by Chaum | <t>Originally introduced in the context of digital cash systems by Chaum | |||
| for untraceable payments <xref target="Chaum83"/>, RSA blind signatures turned o ut to have | for untraceable payments <xref target="Chaum83"/>, RSA blind signatures turned o ut to have | |||
| a wide range of applications ranging from privacy-preserving digital payments to | a wide range of applications ranging from privacy-preserving digital payments to | |||
| authentication mechanisms <xref target="GoogleVPN"/> <xref target="ApplePrivateR elay"/> <xref target="PrettyGoodPhonePrivacy"/>.</t> | authentication mechanisms <xref target="GoogleVPN"/> <xref target="ApplePrivateR elay"/> <xref target="PrettyGoodPhonePrivacy"/>.</t> | |||
| <t>Recently, interest in blind signatures has grown to address operational shortcomings from applications | <t>Recently, interest in blind signatures has grown to address operational shortcomings from applications | |||
| that use Verifiable Oblivious Pseudorandom Functions (VOPRFs) <xref target="VOPR | that use Verifiable Oblivious Pseudorandom Functions (VOPRFs) <xref target="I-D. | |||
| F"/>, such | irtf-cfrg-voprf"/>, such | |||
| as Privacy Pass <xref target="PRIVACY-PASS"/>. Specifically, VOPRFs are not nece | as Privacy Pass <xref target="I-D.ietf-privacypass-protocol"/>. Specifically, VO | |||
| ssarily | PRFs are not necessarily | |||
| publicly verifiable, meaning that a verifier needs access to the VOPRF private k ey to verify | publicly verifiable, meaning that a verifier needs access to the VOPRF private k ey to verify | |||
| that the output of a VOPRF protocol is valid for a given input. This limitation complicates | that the output of a VOPRF protocol is valid for a given input. This limitation complicates | |||
| deployments where it is not desirable to distribute private keys to entities per forming verification. | deployments where it is not desirable to distribute private keys to entities per forming verification. | |||
| Additionally, if the private key is kept in a Hardware Security Module, the numb er of operations | Additionally, if the private key is kept in a Hardware Security Module, the numb er of operations | |||
| on the key is doubled compared to a scheme where only the public key is required for verification.</t> | on the key is doubled compared to a scheme where only the public key is required for verification.</t> | |||
| <t>In contrast, digital signatures provide a primitive that is publicly ve rifiable and does not | <t>In contrast, digital signatures provide a primitive that is publicly ve rifiable and does not | |||
| require access to the private key for verification. Moreover, <xref target="JKK1 4"/> shows that one can realize | require access to the private key for verification. Moreover, <xref target="JKK1 4"/> shows that one can realize | |||
| a VOPRF in the Random Oracle Model by hashing a signature-message pair, where th e signature is | a VOPRF in the random oracle model by hashing a (message, signature) pair, where the signature is | |||
| computed using a deterministic blind signature protocol.</t> | computed using a deterministic blind signature protocol.</t> | |||
| <t>This document specifies a protocol for computing RSA blind signatures u | <t>This document specifies (1) a protocol for computing RSA blind signatur | |||
| sing RSA-PSS encoding, | es using RSA-PSS encoding | |||
| and a family of variants for this protocol, denoted RSABSSA (RSA Blind Signature | and (2) a family of variants (<xref target="rsabssa"/>) for this protocol, | |||
| with Appendix). | denoted RSABSSA (RSA Blind Signature with Appendix). | |||
| In order to facilitate deployment, it is defined in such a way that the resultin g (unblinded) | In order to facilitate deployment, it is defined in such a way that the resultin g (unblinded) | |||
| signature can be verified with a standard RSA-PSS library.</t> | signature can be verified with a standard RSA-PSS library.</t> | |||
| <t>This document represents the consensus of the Crypto Forum Research Gro up (CFRG). It is | <t>This document represents the consensus of the Crypto Forum Research Gro up (CFRG). It is | |||
| not an IETF product and is not a standard.</t> | not an IETF product and is not a standard.</t> | |||
| </section> | </section> | |||
| <section anchor="requirements-notation"> | <section anchor="requirements-notation"> | |||
| <name>Requirements Notation</name> | <name>Requirements Notation</name> | |||
| <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL | <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", | |||
| NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", | "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", | |||
| "MAY", and "OPTIONAL" in this document are to be interpreted as | "<bcp14>SHALL NOT</bcp14>", "<bcp14>SHOULD</bcp14>", | |||
| described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and | "<bcp14>SHOULD NOT</bcp14>", | |||
| only when, they | "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", | |||
| appear in all capitals, as shown here. | "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document | |||
| <?line -6?> | are to be interpreted as described in BCP 14 | |||
| </t> | <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only | |||
| when, they appear in all capitals, as shown here.</t> | ||||
| </section> | </section> | |||
| <section anchor="notation"> | <section anchor="notation"> | |||
| <name>Notation</name> | <name>Notation</name> | |||
| <t>The following terms are used throughout this document to describe the p | <t>The following terms, which describe different protocol operations, are | |||
| rotocol operations | used throughout this document:</t> | |||
| in this document:</t> | <dl spacing="normal"> | |||
| <ul spacing="normal"> | <dt>bytes_to_int and int_to_bytes:</dt><dd>Convert a byte string to and | |||
| <li>bytes_to_int and int_to_bytes: Convert a byte string to and from a n | from a non-negative integer. bytes_to_int and int_to_bytes are implemented | |||
| on-negative integer. | as OS2IP and I2OSP -- as described in | |||
| bytes_to_int and int_to_bytes are implemented as OS2IP and I2OSP as described in | <xref target="RFC8017"/> -- respectively. Note that these functions operate on b | |||
| <xref target="RFC8017"/>, respectively. Note that these functions operate on byt | yte strings | |||
| e strings | in big-endian byte order.</dd> | |||
| in big-endian byte order.</li> | <dt>random_integer_uniform(M, N):</dt><dd>Generate a random, uniformly d | |||
| <li>random_integer_uniform(M, N): Generate a random, uniformly distribut | istributed integer R | |||
| ed integer R | between M inclusive and N exclusive, i.e., M <= R < N.</dd> | |||
| between M inclusive and N exclusive, i.e., M <= R < N.</li> | <dt>bit_len(n):</dt><dd>Compute the minimum number of bits needed to rep | |||
| <li>bit_len(n): Compute the minimum number of bits needed to represent t | resent the positive integer n.</dd> | |||
| he positive integer n.</li> | <dt>inverse_mod(x, n):</dt><dd>Compute the multiplicative inverse of x m | |||
| <li>inverse_mod(x, n): Compute the multiplicative inverse of x mod n or | od n or fail if x and n are not co-prime.</dd> | |||
| fail if x and n are not co-prime.</li> | <dt>is_coprime(x, n):</dt><dd>Return true if x and n are co-prime, and f | |||
| <li>is_coprime(x, n): Return true if x and n are co-prime, and false oth | alse otherwise.</dd> | |||
| erwise.</li> | <dt>len(s):</dt><dd>The length of a byte string, in bytes.</dd> | |||
| <li>len(s): The length of a byte string, in bytes.</li> | <dt>random(n):</dt><dd>Generate n random bytes using a cryptographically | |||
| <li>random(n): Generate n random bytes using a cryptographically-secure | secure random number generator.</dd> | |||
| random number generator.</li> | <dt>concat(x0, ..., xN):</dt><dd>Concatenation of byte strings. For exam | |||
| <li>concat(x0, ..., xN): Concatenation of byte strings. For example, | ple, | |||
| concat(0x01, 0x0203, 0x040506) = 0x010203040506.</li> | concat(0x01, 0x0203, 0x040506) = 0x010203040506.</dd> | |||
| <li>slice(x, i, j): Return bytes in the byte string <tt>x</tt> starting | <dt>slice(x, i, j):</dt><dd>Return bytes in the byte string <tt>x</tt> s | |||
| from offset <tt>i</tt> and ending at | tarting from offset <tt>i</tt> and ending at | |||
| offset <tt>j</tt>, inclusive. For example, slice(0x010203040506, 1, 5) = 0x02030 | offset <tt>j</tt>, inclusive. For example, slice(0x010203040506, 1, 5) = 0x02030 | |||
| 40506.</li> | 40506.</dd> | |||
| </ul> | </dl> | |||
| </section> | </section> | |||
| <section anchor="core-protocol"> | <section anchor="core-protocol"> | |||
| <name>Blind Signature Protocol</name> | <name>Blind Signature Protocol</name> | |||
| <t>The RSA Blind Signature Protocol is a two-party protocol between a clie nt and server | <t>The RSA Blind Signature Protocol is a two-party protocol between a clie nt and server | |||
| where they interact to compute <tt>sig = Sign(sk, input_msg)</tt>, where <tt>inp ut_msg = Prepare(msg)</tt> | where they interact to compute <tt>sig = Sign(sk, input_msg)</tt>, where <tt>inp ut_msg = Prepare(msg)</tt> | |||
| is a prepared version of the private message <tt>msg</tt> provided by the client , and <tt>sk</tt> is the | is a prepared version of the private message <tt>msg</tt> provided by the client , and <tt>sk</tt> is the | |||
| private signing key provided by the server. See <xref target="cert-oid"/> for de tails on how <tt>sk</tt> is generated | private signing key provided by the server. See <xref target="cert-oid"/> for de tails on how <tt>sk</tt> is generated | |||
| and used in this protocol. Upon completion of this protocol, the server learns n othing, | and used in this protocol. Upon completion of this protocol, the server learns n othing, | |||
| whereas the client learns <tt>sig</tt>. In particular, this means the server lea rns nothing of <tt>msg</tt> | whereas the client learns <tt>sig</tt>. In particular, this means the server lea rns nothing of <tt>msg</tt> | |||
| or <tt>input_msg</tt> and the client learns nothing of <tt>sk</tt>.</t> | or <tt>input_msg</tt> and the client learns nothing of <tt>sk</tt>.</t> | |||
| <t>The protocol consists of four functions -- Prepare, Blind, BlindSign, a nd Finalize -- and requires | <t>The protocol consists of four functions -- Prepare, Blind, BlindSign, a nd Finalize -- and requires | |||
| one round of interaction between client and server. Let <tt>msg</tt> be the clie nt's private input | one round of interaction between client and server. Let <tt>msg</tt> be the clie nt's private input | |||
| message, and <tt>(sk, pk)</tt> be the server's private and public key pair.</t> | message, and let <tt>(sk, pk)</tt> be the server's private and public key pair.< /t> | |||
| <t>The protocol begins by the client preparing the message to be signed by computing:</t> | <t>The protocol begins by the client preparing the message to be signed by computing:</t> | |||
| <artwork><![CDATA[ | <artwork><![CDATA[ | |||
| input_msg = Prepare(msg) | input_msg = Prepare(msg) | |||
| ]]></artwork> | ]]></artwork> | |||
| <t>The client then initiates the blind signature protocol by computing:</t > | <t>The client then initiates the blind signature protocol by computing:</t > | |||
| <artwork><![CDATA[ | <artwork><![CDATA[ | |||
| blinded_msg, inv = Blind(pk, input_msg) | blinded_msg, inv = Blind(pk, input_msg) | |||
| ]]></artwork> | ]]></artwork> | |||
| <t>The client then sends <tt>blinded_msg</tt> to the server, which then pr ocesses the message | <t>The client then sends <tt>blinded_msg</tt> to the server, which then pr ocesses the message | |||
| by computing:</t> | by computing:</t> | |||
| skipping to change at line 143 ¶ | skipping to change at line 143 ¶ | |||
| ]]></artwork> | ]]></artwork> | |||
| <t>The server then sends <tt>blind_sig</tt> to the client, which then fina lizes the protocol by computing:</t> | <t>The server then sends <tt>blind_sig</tt> to the client, which then fina lizes the protocol by computing:</t> | |||
| <artwork><![CDATA[ | <artwork><![CDATA[ | |||
| sig = Finalize(pk, input_msg, blind_sig, inv) | sig = Finalize(pk, input_msg, blind_sig, inv) | |||
| ]]></artwork> | ]]></artwork> | |||
| <t>The output of the protocol is <tt>input_msg</tt> and <tt>sig</tt>. Upon completion, correctness requires that | <t>The output of the protocol is <tt>input_msg</tt> and <tt>sig</tt>. Upon completion, correctness requires that | |||
| clients can verify signature <tt>sig</tt> over the prepared message <tt>input_ms g</tt> using the server | clients can verify signature <tt>sig</tt> over the prepared message <tt>input_ms g</tt> using the server | |||
| public key <tt>pk</tt> by invoking the RSASSA-PSS-VERIFY routine defined in | public key <tt>pk</tt> by invoking the RSASSA-PSS-VERIFY routine defined in | |||
| <xref section="8.1.2" sectionFormat="of" target="RFC8017"/>. The Finalize functi on performs this check before returning the signature. | <xref section="8.1.2" sectionFormat="of" target="RFC8017"/>. The Finalize functi on performs this check before returning the signature. | |||
| See <xref target="verification"/> for more details about verifying signatures pr oduced through this protocol.</t> | See <xref target="verification"/> for more details about verifying signatures pr oduced through this protocol.</t> | |||
| <t>In pictures, the protocol runs as follows:</t> | <t>Shown graphically, the protocol runs as follows:</t> | |||
| <artwork><![CDATA[ | <artwork><![CDATA[ | |||
| Client(pk, msg) Server(sk, pk) | Client(pk, msg) Server(sk, pk) | |||
| ----------------------------------------------------- | ----------------------------------------------------- | |||
| input_msg = Prepare(msg) | input_msg = Prepare(msg) | |||
| blinded_msg, inv = Blind(pk, input_msg) | blinded_msg, inv = Blind(pk, input_msg) | |||
| blinded_msg | blinded_msg | |||
| ----------> | ----------> | |||
| blind_sig = BlindSign(sk, blinded_msg) | blind_sig = BlindSign(sk, blinded_msg) | |||
| skipping to change at line 166 ¶ | skipping to change at line 166 ¶ | |||
| <---------- | <---------- | |||
| sig = Finalize(pk, input_msg, blind_sig, inv) | sig = Finalize(pk, input_msg, blind_sig, inv) | |||
| ]]></artwork> | ]]></artwork> | |||
| <t>In the remainder of this section, we specify the Prepare, Blind, BlindS ign, and Finalize | <t>In the remainder of this section, we specify the Prepare, Blind, BlindS ign, and Finalize | |||
| functions that are used in this protocol.</t> | functions that are used in this protocol.</t> | |||
| <section anchor="randomization"> | <section anchor="randomization"> | |||
| <name>Prepare</name> | <name>Prepare</name> | |||
| <t>Message preparation, denoted by the Prepare function, is the process by which the message | <t>Message preparation, denoted by the Prepare function, is the process by which the message | |||
| to be signed and verified is prepared for input to the blind signing protocol. | to be signed and verified is prepared for input to the blind signing protocol. | |||
| There are two types of preparation functions: an identity preparation function, | There are two types of preparation functions: an identity preparation function | |||
| and a randomized preparation function. The identity preparation function returns | and a randomized preparation function. The identity preparation function returns | |||
| the input message without transformation, i.e., <tt>msg = PrepareIdentity(msg)</ tt>.</t> | the input message without transformation, i.e., <tt>msg = PrepareIdentity(msg)</ tt>.</t> | |||
| <t>The randomized preparation function augments the input message with f resh randomness. | <t>The randomized preparation function augments the input message with f resh randomness. | |||
| We denote this process by the function <tt>PrepareRandomize(msg)</tt>, which tak es as input a message | We denote this process by the function <tt>PrepareRandomize(msg)</tt>, which tak es as input a message | |||
| <tt>msg</tt> and produces a randomized message <tt>input_msg</tt>. Its implement ation is shown below.</t> | <tt>msg</tt> and produces a randomized message <tt>input_msg</tt>. Its implement ation is shown below.</t> | |||
| <artwork><![CDATA[ | <sourcecode name="" type="pseudocode"><![CDATA[ | |||
| PrepareRandomize(msg) | PrepareRandomize(msg) | |||
| Inputs: | Inputs: | |||
| - msg, message to be signed, a byte string | - msg, message to be signed, a byte string | |||
| Outputs: | Outputs: | |||
| - input_msg, a byte string that is 32 bytes longer than msg | - input_msg, a byte string that is 32 bytes longer than msg | |||
| Steps: | Steps: | |||
| 1. msg_prefix = random(32) | 1. msg_prefix = random(32) | |||
| 2. input_msg = concat(msg_prefix, msg) | 2. input_msg = concat(msg_prefix, msg) | |||
| 3. output input_msg | 3. output input_msg | |||
| ]]></artwork> | ]]></sourcecode> | |||
| </section> | </section> | |||
| <section anchor="blind"> | <section anchor="blind"> | |||
| <name>Blind</name> | <name>Blind</name> | |||
| <t>The Blind function encodes an input message and blinds it with the se rver's public | <t>The Blind function encodes an input message and blinds it with the se rver's public | |||
| key. It outputs the blinded message to be sent to the server, encoded as a byte string, | key. It outputs the blinded message to be sent to the server, encoded as a byte string, | |||
| and the corresponding inverse, an integer. RSAVP1 and EMSA-PSS-ENCODE are as def ined in | and the corresponding inverse, an integer. RSAVP1 and EMSA-PSS-ENCODE are as def ined in | |||
| Sections <xref target="RFC8017" section="5.2.2" sectionFormat="bare"/> and <xref | Sections <xref target="RFC8017" section="5.2.2" sectionFormat="bare"/> and | |||
| target="RFC8017" section="9.1.1" sectionFormat="bare"/> of <xref target="RFC801 | <xref target="RFC8017" section="9.1.1" sectionFormat="bare"/> of <xref target="R | |||
| 7"/>, respectively.</t> | FC8017"/>, respectively.</t> | |||
| <t>If this function fails with an "blinding error" error, implementation | <t>If this function fails with a "blinding error" error, implementations | |||
| s SHOULD retry | <bcp14>SHOULD</bcp14> try | |||
| the function again. The probability of one or more such errors in sequence is ne gligible. | the function again. The probability of one or more such errors in sequence is ne gligible. | |||
| This function can also fail with an "invalid input" error, which indicates that one of | This function can also fail with an "invalid input" error, which indicates that one of | |||
| the inputs (likely the public key) was invalid. Implementations SHOULD update th e public | the inputs (likely the public key) was invalid. Implementations <bcp14>SHOULD</b cp14> update the public | |||
| key before calling this function again. See <xref target="errors"/> for more inf ormation about | key before calling this function again. See <xref target="errors"/> for more inf ormation about | |||
| dealing with such errors.</t> | dealing with such errors.</t> | |||
| <t>Note that this function invokes RSAVP1, which is defined to throw an optional error | <t>Note that this function invokes RSAVP1, which is defined to throw an optional error | |||
| for invalid inputs. However, this error cannot occur based on how RSAVP1 is invo ked, | for invalid inputs. However, this error cannot occur based on how RSAVP1 is invo ked, | |||
| so this error is not included in the list of errors for Blind.</t> | so this error is not included in the list of errors for Blind.</t> | |||
| <artwork><![CDATA[ | <sourcecode name="" type="pseudocode"><![CDATA[ | |||
| Blind(pk, msg) | Blind(pk, msg) | |||
| Parameters: | Parameters: | |||
| - modulus_len, the length in bytes of the RSA modulus n | - modulus_len, the length in bytes of the RSA modulus n | |||
| - Hash, the hash function used to hash the message | - Hash, the hash function used to hash the message | |||
| - MGF, the mask generation function | - MGF, the mask generation function | |||
| - salt_len, the length in bytes of the salt (denoted sLen in RFC8017) | - salt_len, the length in bytes of the salt (denoted sLen | |||
| in RFC 8017) | ||||
| Inputs: | Inputs: | |||
| - pk, server public key (n, e) | - pk, server public key (n, e) | |||
| - msg, message to be signed, a byte string | - msg, message to be signed, a byte string | |||
| Outputs: | Outputs: | |||
| - blinded_msg, a byte string of length modulus_len | - blinded_msg, a byte string of length modulus_len | |||
| - inv, an integer used to unblind the signature in Finalize | - inv, an integer used to unblind the signature in Finalize | |||
| Errors: | Errors: | |||
| - "message too long": Raised when the input message is too long (raised by EMSA- | - "message too long": Raised when the input message is too long | |||
| PSS-ENCODE). | (raised by EMSA-PSS-ENCODE) | |||
| - "encoding error": Raised when the input message fails encoding (raised by EMSA | - "encoding error": Raised when the input message fails encoding | |||
| -PSS-ENCODE). | (raised by EMSA-PSS-ENCODE) | |||
| - "blinding error": Raised when the inverse of r cannot be found. | - "blinding error": Raised when the inverse of r cannot be found | |||
| - "invalid input": Raised when the message is not co-prime with n. | - "invalid input": Raised when the message is not co-prime with n | |||
| "invalid input": Raised when the message is not co-prime with <span class="inse rt">n</span> | ||||
| Steps: | Steps: | |||
| 1. encoded_msg = EMSA-PSS-ENCODE(msg, bit_len(n)) | 1. encoded_msg = EMSA-PSS-ENCODE(msg, bit_len(n)) | |||
| with Hash, MGF, and salt_len as defined in the parameters | with Hash, MGF, and salt_len as defined in the parameters | |||
| 2. If EMSA-PSS-ENCODE raises an error, raise the error and stop | 2. If EMSA-PSS-ENCODE raises an error, re-raise the error and stop | |||
| 3. m = bytes_to_int(encoded_msg) | 3. m = bytes_to_int(encoded_msg) | |||
| 4. c = is_coprime(m, n) | 4. c = is_coprime(m, n) | |||
| 5. If c is false, raise an "invalid input" error | 5. If c is false, raise an "invalid input" error and stop | |||
| and stop | ||||
| 6. r = random_integer_uniform(1, n) | 6. r = random_integer_uniform(1, n) | |||
| 7. inv = inverse_mod(r, n) | 7. inv = inverse_mod(r, n) | |||
| 8. If inverse_mod fails, raise an "blinding error" error | 8. If inverse_mod fails, raise a "blinding error" error and stop | |||
| and stop | ||||
| 9. x = RSAVP1(pk, r) | 9. x = RSAVP1(pk, r) | |||
| 10. z = (m * x) mod n | 10. z = (m * x) mod n | |||
| 11. blinded_msg = int_to_bytes(z, modulus_len) | 11. blinded_msg = int_to_bytes(z, modulus_len) | |||
| 12. output blinded_msg, inv | 12. output blinded_msg, inv | |||
| ]]></artwork> | ]]></sourcecode> | |||
| <t>The blinding factor r MUST be randomly chosen from a uniform distribu | <t>The blinding factor r <bcp14>MUST</bcp14> be randomly chosen from a u | |||
| tion. | niform distribution. | |||
| This is typically done via rejection sampling.</t> | This is typically done via rejection sampling.</t> | |||
| </section> | </section> | |||
| <section anchor="blindsign"> | <section anchor="blindsign"> | |||
| <name>BlindSign</name> | <name>BlindSign</name> | |||
| <t>BlindSign performs the RSA private key operation on the client's | <t>BlindSign performs the RSA private key operation on the client's | |||
| blinded message input and returns the output encoded as a byte string. | blinded message input and returns the output encoded as a byte string. | |||
| RSASP1 is as defined in <xref section="5.2.1" sectionFormat="of" target="RFC8017 "/>.</t> | RSASP1 is as defined in <xref section="5.2.1" sectionFormat="of" target="RFC8017 "/>.</t> | |||
| <artwork><![CDATA[ | <sourcecode name="" type="pseudocode"><![CDATA[ | |||
| BlindSign(sk, blinded_msg) | BlindSign(sk, blinded_msg) | |||
| Parameters: | Parameters: | |||
| - modulus_len, the length in bytes of the RSA modulus n | - modulus_len, the length in bytes of the RSA modulus n | |||
| Inputs: | Inputs: | |||
| - sk, server private key | - sk, server private key | |||
| - blinded_msg, encoded and blinded message to be signed, a | - blinded_msg, encoded and blinded message to be signed, a | |||
| byte string | byte string | |||
| Outputs: | Outputs: | |||
| - blind_sig, a byte string of length modulus_len | - blind_sig, a byte string of length modulus_len | |||
| Errors: | Errors: | |||
| - "signing failure": Raised when the signing operation fails | - "signing failure": Raised when the signing operation fails | |||
| - "message representative out of range": Raised when the message representative | - "message representative out of range": Raised when the | |||
| to sign is not an integer between 0 and n - 1 (raised by RSASP1) | message representative to sign is not an integer between 0 | |||
| and n - 1 (raised by RSASP1) | ||||
| Steps: | Steps: | |||
| 1. m = bytes_to_int(blinded_msg) | 1. m = bytes_to_int(blinded_msg) | |||
| 2. s = RSASP1(sk, m) | 2. s = RSASP1(sk, m) | |||
| 3. m' = RSAVP1(pk, s) | 3. m' = RSAVP1(pk, s) | |||
| 4. If m != m', raise "signing failure" and stop | 4. If m != m', raise a "signing failure" error and stop | |||
| 5. blind_sig = int_to_bytes(s, modulus_len) | 5. blind_sig = int_to_bytes(s, modulus_len) | |||
| 6. output blind_sig | 6. output blind_sig | |||
| ]]></artwork> | ]]></sourcecode> | |||
| </section> | </section> | |||
| <section anchor="finalize"> | <section anchor="finalize"> | |||
| <name>Finalize</name> | <name>Finalize</name> | |||
| <t>Finalize validates the server's response, unblinds the message | <t>Finalize validates the server's response, unblinds the message | |||
| to produce a signature, verifies it for correctness, and outputs the signature | to produce a signature, verifies it for correctness, and outputs the signature | |||
| upon success. Note that this function will internally hash the input message | upon success. Note that this function will internally hash the input message | |||
| as is done in Blind.</t> | as is done in Blind.</t> | |||
| <artwork><![CDATA[ | <sourcecode name="" type="pseudocode"><![CDATA[ | |||
| Finalize(pk, msg, blind_sig, inv) | Finalize(pk, msg, blind_sig, inv) | |||
| Parameters: | Parameters: | |||
| - modulus_len, the length in bytes of the RSA modulus n | - modulus_len, the length in bytes of the RSA modulus n | |||
| - Hash, the hash function used to hash the message | - Hash, the hash function used to hash the message | |||
| - MGF, the mask generation function | - MGF, the mask generation function | |||
| - salt_len, the length in bytes of the salt (denoted sLen in RFC8017) | - salt_len, the length in bytes of the salt (denoted sLen | |||
| in RFC 8017) | ||||
| Inputs: | Inputs: | |||
| - pk, server public key (n, e) | - pk, server public key (n, e) | |||
| - msg, message to be signed, a byte string | - msg, message to be signed, a byte string | |||
| - blind_sig, signed and blinded element, a byte string of | - blind_sig, signed and blinded element, a byte string of | |||
| length modulus_len | length modulus_len | |||
| - inv, inverse of the blind, an integer | - inv, inverse of the blind, an integer | |||
| Outputs: | Outputs: | |||
| - sig, a byte string of length modulus_len | - sig, a byte string of length modulus_len | |||
| Errors: | Errors: | |||
| - "invalid signature": Raised when the signature is invalid | - "invalid signature": Raised when the signature is invalid | |||
| - "unexpected input size": Raised when a byte string input doesn't | - "unexpected input size": Raised when a byte string input doesn't | |||
| have the expected length. | have the expected length | |||
| Steps: | Steps: | |||
| 1. If len(blind_sig) != modulus_len, raise "unexpected input size" and stop | 1. If len(blind_sig) != modulus_len, raise an "unexpected input size" | |||
| error and stop | ||||
| 2. z = bytes_to_int(blind_sig) | 2. z = bytes_to_int(blind_sig) | |||
| 3. s = (z * inv) mod n | 3. s = (z * inv) mod n | |||
| 4. sig = int_to_bytes(s, modulus_len) | 4. sig = int_to_bytes(s, modulus_len) | |||
| 5. result = RSASSA-PSS-VERIFY(pk, msg, sig) with | 5. result = RSASSA-PSS-VERIFY(pk, msg, sig) with | |||
| Hash, MGF, and salt_len as defined in the parameters | Hash, MGF, and salt_len as defined in the parameters | |||
| 6. If result = "valid signature", output sig, else | 6. If result = "valid signature", output sig, else | |||
| raise "invalid signature" and stop | raise an "invalid signature" error and stop | |||
| ]]></artwork> | ]]></sourcecode> | |||
| </section> | </section> | |||
| <section anchor="verification"> | <section anchor="verification"> | |||
| <name>Verification</name> | <name>Verification</name> | |||
| <t>As described in <xref target="core-protocol"/>, the output of the pro tocol is the prepared | <t>As described in <xref target="core-protocol"/>, the output of the pro tocol is the prepared | |||
| message <tt>input_msg</tt> and the signature <tt>sig</tt>. The message that appl ications | message <tt>input_msg</tt> and the signature <tt>sig</tt>. The message that appl ications | |||
| consume is <tt>msg</tt>, from which <tt>input_msg</tt> is derived. Clients verif y the | consume is <tt>msg</tt>, from which <tt>input_msg</tt> is derived. Clients verif y the | |||
| <tt>msg</tt> signature using the server's public key <tt>pk</tt> by invoking the | <tt>msg</tt> signature using the server's public key <tt>pk</tt> by invoking the | |||
| RSASSA-PSS-VERIFY routine defined in <xref section="8.1.2" sectionFormat="of" ta rget="RFC8017"/> | RSASSA-PSS-VERIFY routine defined in <xref section="8.1.2" sectionFormat="of" ta rget="RFC8017"/> | |||
| with <tt>(n, e)</tt> as <tt>pk</tt>, M as <tt>input_msg</tt>, and <tt>S</tt> as <tt>sig</tt>.</t> | with <tt>(n, e)</tt> as <tt>pk</tt>, M as <tt>input_msg</tt>, and <tt>S</tt> as <tt>sig</tt>.</t> | |||
| <t>Verification and the message that applications consume therefore depe nds on | <t>Verification and the message that applications consume therefore depe nd on | |||
| which preparation function is used. In particular, if the PrepareIdentity | which preparation function is used. In particular, if the PrepareIdentity | |||
| function is used, then the application message is <tt>input_msg</tt>. | function is used, then the application message is <tt>input_msg</tt>. | |||
| In contrast, if the PrepareRandomize function is used, then the application | In contrast, if the PrepareRandomize function is used, then the application | |||
| message is <tt>slice(input_msg, 32, len(input_msg))</tt>, i.e., the prepared mes sage | message is <tt>slice(input_msg, 32, len(input_msg))</tt>, i.e., the prepared mes sage | |||
| with the random prefix removed.</t> | with the message randomizer prefix removed.</t> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="rsabssa"> | <section anchor="rsabssa"> | |||
| <name>RSABSSA Variants</name> | <name>RSABSSA Variants</name> | |||
| <t>In this section we define different named variants of RSABSSA. Each var | <t>In this section, we define different named variants of RSABSSA. Each va | |||
| iant specifies | riant specifies | |||
| RSASSA-PSS parameters as defined in <xref section="9.1.1" sectionFormat="of" tar | EMSA-PSS options Hash, MGF, and sLen as defined in <xref section="9.1.1" section | |||
| get="RFC8017"/> and | Format="of" target="RFC8017"/>, as well as | |||
| the type of message preparation function applied (as described in <xref target=" randomization"/>). | the type of message preparation function applied (as described in <xref target=" randomization"/>). | |||
| Each variant uses the MGF1 Mask Generation Function defined in <xref section="B. 2.1." sectionFormat="of" target="RFC8017"/>. | Each variant uses the mask generation function 1 (MGF1) defined in <xref section ="B.2.1." sectionFormat="of" target="RFC8017"/>. | |||
| Future specifications can introduce other variants as desired. The named variant s are as follows:</t> | Future specifications can introduce other variants as desired. The named variant s are as follows:</t> | |||
| <ol spacing="normal" type="1"><li>RSABSSA-SHA384-PSS-Randomized: This name | <dl spacing="normal"><dt>RSABSSA-SHA384-PSS-Randomized:</dt><dd>This named | |||
| d variant uses SHA-384 as the hash function, | variant uses SHA-384 as the EMSA-PSS Hash option, | |||
| MGF1 with SHA-384 as the PSS mask generation function, a 48-byte salt length, an | MGF1 with SHA-384 as the EMSA-PSS MGF option, and 48 as the EMSA-PSS sLen option | |||
| d uses | (48-byte salt length); it also uses | |||
| the randomized preparation function (PrepareRandomize).</li> | the randomized preparation function (PrepareRandomize).</dd> | |||
| <li>RSABSSA-SHA384-PSSZERO-Randomized: This named variant uses SHA-384 a | <dt>RSABSSA-SHA384-PSSZERO-Randomized:</dt><dd>This named variant uses S | |||
| s the hash function, | HA-384 as the EMSA-PSS Hash option, | |||
| MGF1 with SHA-384 as the PSS mask generation function, an empty PSS salt, and us | MGF1 with SHA-384 as the EMSA-PSS MGF option, and 0 as the EMSA-PSS sLen option | |||
| es | (0-byte salt length); it also uses | |||
| the randomized preparation function (PrepareRandomize).</li> | the randomized preparation function (PrepareRandomize).</dd> | |||
| <li>RSABSSA-SHA384-PSS-Deterministic: This named variant uses SHA-384 as | <dt>RSABSSA-SHA384-PSS-Deterministic:</dt><dd>This named variant uses SH | |||
| the hash function, | A-384 as the EMSA-PSS Hash option, | |||
| MGF1 with SHA-384 as the PSS mask generation function, 48-byte salt length, and | MGF1 with SHA-384 as the EMSA-PSS MGF option, and 48 as the EMSA-PSS sLen option | |||
| uses | (48-byte salt length); it also uses | |||
| the identity preparation function (PrepareIdentity).</li> | the identity preparation function (PrepareIdentity).</dd> | |||
| <li>RSABSSA-SHA384-PSSZERO-Deterministic: This named variant uses SHA-38 | <dt>RSABSSA-SHA384-PSSZERO-Deterministic:</dt><dd>This named variant use | |||
| 4 as the hash function, | s SHA-384 as the EMSA-PSS Hash option, | |||
| MGF1 with SHA-384 as the PSS mask generation function, an empty PSS salt, and us | MGF1 with SHA-384 as the EMSA-PSS MGF option, and 0 as the EMSA-PSS sLen option | |||
| es | (0-byte salt length); it also uses | |||
| the identity preparation function (PrepareIdentity). This is the only variant th at | the identity preparation function (PrepareIdentity). This is the only variant th at | |||
| produces deterministic signatures over the client's input message <tt>msg</tt>.< | produces deterministic signatures over the client's input message <tt>msg</tt>.< | |||
| /li> | /dd> | |||
| </ol> | </dl> | |||
| <t>The RECOMMENDED variants are RSABSSA-SHA384-PSS-Randomized or RSABSSA-S | <t>The <bcp14>RECOMMENDED</bcp14> variants are RSABSSA-SHA384-PSS-Randomiz | |||
| HA384-PSSZERO-Randomized.</t> | ed or RSABSSA-SHA384-PSSZERO-Randomized.</t> | |||
| <t>Not all named variants can be used interchangeably. In particular, appl ications that provide | <t>Not all named variants can be used interchangeably. In particular, appl ications that provide | |||
| high-entropy input messages can safely use named variants without randomized mes sage preparation, | high-entropy input messages can safely use named variants without randomized mes sage preparation, | |||
| as the additional message randomization does not offer security advantages. See <xref target="Lys22"/> and | as the additional message randomization does not offer security advantages. See <xref target="Lys22"/> and | |||
| <xref target="message-entropy"/> for more information. For all other application s, the variants that use the | <xref target="message-entropy"/> for more information. For all other application s, the variants that use the | |||
| randomized preparation function protect clients from malicious signers. A | randomized preparation function protect clients from malicious signers. A | |||
| verifier that accepts randomized messages needs to remove the random component f rom the signed | verifier that accepts randomized messages needs to remove the random component f rom the signed | |||
| part of messages before processing.</t> | part of messages before processing.</t> | |||
| <t>Applications that require deterministic signatures can use the RSABSSA- SHA384-PSSZERO-Deterministic | <t>Applications that require deterministic signatures can use the RSABSSA- SHA384-PSSZERO-Deterministic | |||
| variant, but only if their input messages have high entropy. Applications that u se | variant, but only if their input messages have high entropy. Applications that u se | |||
| RSABSSA-SHA384-PSSZERO-Deterministic SHOULD carefully analyze the security impli cations, | RSABSSA-SHA384-PSSZERO-Deterministic <bcp14>SHOULD</bcp14> carefully analyze the security implications, | |||
| taking into account the possibility of adversarially generated signer keys as de scribed in | taking into account the possibility of adversarially generated signer keys as de scribed in | |||
| <xref target="message-entropy"/>. When it is not clear whether an application re quires deterministic or | <xref target="message-entropy"/>. When it is not clear whether an application re quires deterministic or | |||
| randomized signatures, applications SHOULD use one of the variants with randomiz ed message preparation.</t> | randomized signatures, applications <bcp14>SHOULD</bcp14> use one of the variant s with randomized message preparation.</t> | |||
| </section> | </section> | |||
| <section anchor="implementation-and-usage-considerations"> | <section anchor="implementation-and-usage-considerations"> | |||
| <name>Implementation and Usage Considerations</name> | <name>Implementation and Usage Considerations</name> | |||
| <t>This section documents considerations for interfaces to implementations of the protocol | <t>This section documents considerations for interfaces to implementations of the protocol defined | |||
| in this document. This includes error handling and API considerations.</t> | in this document. This includes error handling and API considerations.</t> | |||
| <section anchor="errors"> | <section anchor="errors"> | |||
| <name>Errors</name> | <name>Errors</name> | |||
| <t>The high-level functions specified in <xref target="core-protocol"/> are all fallible. The explicit errors | <t>The high-level functions specified in <xref target="core-protocol"/> are all fallible. The explicit errors | |||
| generated throughout this specification, along with the conditions that lead to each error, | generated throughout this specification, along with the conditions that lead to each error, | |||
| are listed in the definitions for Blind, BlindSign, and Finalize. | are listed in the definitions for Blind, BlindSign, and Finalize. | |||
| These errors are meant as a guide for implementors. They are not an exhaustive l ist of all | These errors are meant as a guide for implementors. They are not an exhaustive l ist of all | |||
| the errors an implementation might emit. For example, implementations might run out of memory.</t> | the errors an implementation might emit. For example, implementations might run out of memory.</t> | |||
| <t>Moreover, implementations can handle errors as needed or desired. Whe re applicable, this document | <t>Moreover, implementations can handle errors as needed or desired. Whe re applicable, this document | |||
| provides guidance for how to deal with explicit errors that are generated in the protocol. For | provides guidance for how to deal with explicit errors that are generated in the protocol. For | |||
| example, "blinding error" is generated in Blind when the client produces a prime | example, a "blinding error" error is generated in Blind when the client produces | |||
| factor of | a prime factor of | |||
| the server's public key. <xref target="blind"/> indicates that implementations S | the server's public key. <xref target="blind"/> indicates that implementations < | |||
| HOULD | bcp14>SHOULD</bcp14> | |||
| retry the Blind function when this error occurs, but an implementation could als o handle this | retry the Blind function when this error occurs, but an implementation could als o handle this | |||
| exceptional event differently, e.g., by informing the server that the key has be en factored.</t> | exceptional event differently, e.g., by informing the server that the key has be en factored.</t> | |||
| </section> | </section> | |||
| <section anchor="cert-oid"> | <section anchor="cert-oid"> | |||
| <name>Signing Key Generation and Usage</name> | <name>Signing Key Generation and Usage</name> | |||
| <t>The RECOMMENDED method for generating the server signing key pair is as specified in FIPS 186-4 | <t>The <bcp14>RECOMMENDED</bcp14> method for generating the server signi ng key pair is as specified in FIPS 186-5 | |||
| <xref target="DSS"/>.</t> | <xref target="DSS"/>.</t> | |||
| <t>A server signing key MUST NOT be reused for any other protocol beyond | <t>A server signing key <bcp14>MUST NOT</bcp14> be reused for any other | |||
| RSABSSA. Moreover, a | protocol beyond RSABSSA. Moreover, a | |||
| server signing key MUST NOT be reused for different RSABSSA encoding options. Th | server signing key <bcp14>MUST NOT</bcp14> be reused for different RSABSSA encod | |||
| at is, | ing options. That is, | |||
| if a server supports two different encoding options, then it MUST have a distinc | if a server supports two different encoding options, then it <bcp14>MUST</bcp14> | |||
| t key | have a distinct key | |||
| pair for each option.</t> | pair for each option.</t> | |||
| <t>If the server public key is carried in an X.509 certificate, it MUST | <t>If the server public key is carried in an X.509 certificate, it <bcp1 | |||
| use the RSASSA-PSS | 4>MUST</bcp14> use the id-RSASSA-PSS | |||
| OID <xref target="RFC5756"/>. It MUST NOT use the rsaEncryption OID <xref target | OID <xref target="RFC5756"/>. It <bcp14>MUST NOT</bcp14> use the rsaEncryption O | |||
| ="RFC5280"/>.</t> | ID <xref target="RFC5280"/>.</t> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="sec-considerations"> | <section anchor="sec-considerations"> | |||
| <name>Security Considerations</name> | <name>Security Considerations</name> | |||
| <t>Lysyanskaya proved one-more-forgery polynomial security of RSABSSA vari ants in the random | <t>Lysyanskaya proved one-more-forgery polynomial security of RSABSSA vari ants in the random | |||
| oracle model under the one-more-RSA assumption in <xref target="Lys22"/>. This m eans the adversary | oracle model under the one-more-RSA assumption; see <xref target="Lys22"/>. This means the adversary | |||
| cannot output n+1 valid message and signature tuples, where all messages are dis tinct, after | cannot output n+1 valid message and signature tuples, where all messages are dis tinct, after | |||
| interacting with the server (signer) as a client only n times, for some n which is polynomial | interacting with the server (signer) as a client only n times, for some n that i s polynomial | |||
| in the protocol's security parameter. | in the protocol's security parameter. | |||
| Lysyanskaya also proved that the RSABSSA variants which use the PrepareRandomize | Lysyanskaya also proved that the RSABSSA variants, which use the PrepareRandomiz | |||
| function | e function, | |||
| achieve blindness in <xref target="Lys22"/>. Blindness means that the malicious | achieve blindness (see version B of the protocol and related proofs in <xref tar | |||
| signer learns nothing | get="Lys22"/>). Blindness means that the malicious signer learns nothing | |||
| about the client input and output after the protocol execution. However, additio nal assumptions on the message | about the client input and output after the protocol execution. However, additio nal assumptions on the message | |||
| inputs are required for blindness to hold for RSABSSA variants that use the Prep areIdentity | inputs are required for blindness to hold for RSABSSA variants that use the Prep areIdentity | |||
| function; see <xref target="message-entropy"/> for more discussion on those resu lts.</t> | function; see <xref target="message-entropy"/> for more discussion on those resu lts.</t> | |||
| <section anchor="timing-side-channels-and-fault-attacks"> | <section anchor="timing-side-channels-and-fault-attacks"> | |||
| <name>Timing Side Channels and Fault Attacks</name> | <name>Timing Side Channels and Fault Attacks</name> | |||
| <t>BlindSign is functionally a remote procedure call for applying the RS A private | <t>BlindSign is functionally a remote procedure call for applying the RS A private | |||
| key operation. As such, side channel resistance is paramount to protect the priv | key operation. As such, side-channel resistance is paramount to protect the priv | |||
| ate key | ate key | |||
| from exposure <xref target="RemoteTimingAttacks"/>. Implementations SHOULD imple | from exposure <xref target="RemoteTimingAttacks"/>. Implementations <bcp14>SHOUL | |||
| ment some form of | D</bcp14> implement some form of | |||
| side channel attack mitigation, such as RSA blinding as described in Section 10 | side-channel attack mitigation, such as RSA blinding as described in Section 10 | |||
| of | of | |||
| <xref target="TimingAttacks"/>. Failure to apply such mitigations can | <xref target="TimingAttacks"/>. Failure to apply such mitigations can | |||
| lead to side channel attacks that leak the private signing key.</t> | lead to side-channel attacks that leak the private signing key.</t> | |||
| <t>Moreover, we assume that the server does not initiate the protocol an d therefore has | <t>Moreover, we assume that the server does not initiate the protocol an d therefore has | |||
| no knowledge of when the Prepare and Blind operations take place. If this were n ot the | no knowledge of when the Prepare and Blind operations take place. If this were n ot the | |||
| case, additional side-channel mitigations might be required to prevent timing si de | case, additional side-channel mitigations might be required to prevent timing si de | |||
| channels through Prepare and Blind.</t> | channels through Prepare and Blind.</t> | |||
| <t>Beyond timing side channels, <xref target="FAULTS"/> describes the im portance | <t>Beyond timing side channels, <xref target="FAULTS"/> describes the im portance | |||
| of implementation safeguards that protect against fault attacks that can also le ak the | of implementation safeguards that protect against fault attacks that can also le ak the | |||
| private signing key. These safeguards require that implementations check that th e result | private signing key. These safeguards require that implementations check that th e result | |||
| of the private key operation when signing is correct, i.e., given s = RSASP1(sk, m), | of the private key operation when signing is correct, i.e., given s = RSASP1(sk, m), | |||
| verify that m = RSAVP1(pk, s), as is required by BlindSign. Applying this (or eq uivalent) | verify that m = RSAVP1(pk, s), as is required by BlindSign. Applying this (or an equivalent) | |||
| safeguard is necessary to mitigate fault attacks, even for implementations that are not | safeguard is necessary to mitigate fault attacks, even for implementations that are not | |||
| based on the Chinese remainder theorem.</t> | based on the Chinese remainder theorem.</t> | |||
| </section> | </section> | |||
| <section anchor="message-robustness"> | <section anchor="message-robustness"> | |||
| <name>Message Robustness</name> | <name>Message Robustness</name> | |||
| <t>An essential property of blind signature protocols is that the signer learns nothing of the message | <t>An essential property of blind signature protocols is that the signer learns nothing of the message | |||
| being signed. In some circumstances, this may raise concerns of arbitrary signin g oracles. Applications | being signed. In some circumstances, this may raise concerns regarding arbitrary signing oracles. Applications | |||
| using blind signature protocols should take precautions to ensure that such orac les do not cause | using blind signature protocols should take precautions to ensure that such orac les do not cause | |||
| cross-protocol attacks. Ensuring that the signing key used for RSABSSA is distin ct from other protocols | cross-protocol attacks. Ensuring that the signing key used for RSABSSA is distin ct from other protocols | |||
| prevents such cross-protocol attacks.</t> | prevents such cross-protocol attacks.</t> | |||
| <t>An alternative solution to this problem of message blindness is to gi ve signers proof that the | <t>An alternative solution to this problem of message blindness is to gi ve signers proof that the | |||
| message being signed is well-structured. Depending on the application, zero know | message being signed is well structured. Depending on the application, | |||
| ledge proofs | zero-knowledge proofs | |||
| could be useful for this purpose. Defining such a proof is out of scope for this | could be useful for this purpose. Defining such proofs is out of scope for this | |||
| document.</t> | document.</t> | |||
| <t>Verifiers should check that, in addition to signature validity, the s igned message is | <t>Verifiers should check that, in addition to signature validity, the s igned message is | |||
| well-structured for the relevant application. For example, if an application of this protocol | well structured for the relevant application. For example, if an application of this protocol | |||
| requires messages to be structures of a particular form, then verifiers should c heck that | requires messages to be structures of a particular form, then verifiers should c heck that | |||
| messages adhere to this form.</t> | messages adhere to this form.</t> | |||
| </section> | </section> | |||
| <section anchor="message-entropy"> | <section anchor="message-entropy"> | |||
| <name>Message Entropy</name> | <name>Message Entropy</name> | |||
| <t>As discussed in <xref target="Lys22"/>, a malicious signer can constr uct an invalid public key and use | <t>As discussed in <xref target="Lys22"/>, a malicious signer can constr uct an invalid public key and use | |||
| it to learn information about low-entropy input messages. Note that some invalid public | it to learn information about low-entropy input messages. Note that some invalid public | |||
| keys may not yield valid signatures when run with the protocol, e.g., because th e signature | keys may not yield valid signatures when run with the protocol, e.g., because th e signature | |||
| fails to verify. However, if an attacker can coerce the client to use these inva lid public | fails to verify. However, if an attacker can coerce the client to use these inva lid public | |||
| keys with low-entropy inputs, they can learn information about the client inputs before | keys with low-entropy inputs, they can learn information about the client inputs before | |||
| the protocol completes.</t> | the protocol completes.</t> | |||
| <t>A client that uses this protocol might be vulnerable to attack from a malicious signer | <t>A client that uses this protocol might be vulnerable to attack from a malicious signer | |||
| unless it is able to ensure that either:</t> | unless it is able to ensure that one of the following conditions is satisfied:</ | |||
| <ol spacing="normal" type="1"><li>The client has proof that the signer's | t> | |||
| public key is honestly generated. <xref target="GRSB19"/> presents | <ol spacing="normal" type="(%d)"><li>The client has proof that the signe | |||
| r's public key is honestly generated. <xref target="GRSB19"/> presents | ||||
| some (non-interactive) honest-verifier zero-knowledge proofs of various statem ents about the | some (non-interactive) honest-verifier zero-knowledge proofs of various statem ents about the | |||
| public key.</li> | public key.</li> | |||
| <li>The input message has a value that the signer is unable to guess. That is, the client has | <li>The input message has a value that the signer is unable to guess. That is, the client has | |||
| added a high-entropy component that was not available to the signer prior to t hem choosing | added a high-entropy component that was not available to the signer prior to t hem choosing | |||
| their signing key.</li> | their signing key.</li> | |||
| </ol> | </ol> | |||
| <t>The named variants that use the PrepareRandomize function -- RSABSSA- SHA384-PSS-Randomized and | <t>The named variants that use the PrepareRandomize function -- RSABSSA- SHA384-PSS-Randomized and | |||
| RSABSSA-SHA384-PSSZERO-Randomized -- explicitly inject fresh entropy alongside e ach message | RSABSSA-SHA384-PSSZERO-Randomized -- explicitly inject fresh entropy alongside e ach message | |||
| to satisfy condition (2). As such, these variants are safe for all application u se cases.</t> | to satisfy condition (2). As such, these variants are safe for all application u se cases. In contrast, the named variants that use the PrepareIdentity function do not inject fresh entropy and therefore could be a problem with low-entropy in puts.</t> | |||
| <t>Note that these variants effectively mean that the resulting signatur e is always randomized. | <t>Note that these variants effectively mean that the resulting signatur e is always randomized. | |||
| As such, this interface is not suitable for applications that require determinis tic signatures.</t> | As such, this interface is not suitable for applications that require determinis tic signatures.</t> | |||
| </section> | </section> | |||
| <section anchor="randomness-generation"> | <section anchor="randomness-generation"> | |||
| <name>Randomness Generation</name> | <name>Randomness Generation</name> | |||
| <t>All random values in the protocol, including the salt, message random | <t>All random values in the protocol, including the salt, message random | |||
| izer prefix, and random blind | izer prefix (msg_prefix; see <xref target="test-vectors"/>), and random blind | |||
| value in <tt>Blind</tt>, MUST be generated from a cryptographically secure rando | value in <tt>Blind</tt>, <bcp14>MUST</bcp14> be generated from a cryptographical | |||
| m number generator <xref target="RFC4086"/>. | ly secure random number generator <xref target="RFC4086"/>. | |||
| If these values are not generated randomly, or are otherwise constructed malicio | If these values are not generated randomly or are otherwise constructed maliciou | |||
| usly, it might be | sly, it might be | |||
| possible for them to encode information that is not present in the signed messag e. For example, | possible for them to encode information that is not present in the signed messag e. For example, | |||
| the PSS salt might be maliciously constructed to encode the local IP address of the client. As a result, | the PSS salt might be maliciously constructed to encode the local IP address of the client. As a result, | |||
| implementations SHOULD NOT allow clients to provide these values directly.</t> | implementations <bcp14>SHOULD NOT</bcp14> allow clients to provide these values directly.</t> | |||
| <t>Note that malicious implementations could also encode client informat ion in the message being signed, | <t>Note that malicious implementations could also encode client informat ion in the message being signed, | |||
| but since clients can verify the resulting message signature using the public ke y this can be detected.</t> | but since clients can verify the resulting message signature using the public ke y, this can be detected.</t> | |||
| </section> | </section> | |||
| <section anchor="key-substitution-attacks"> | <section anchor="key-substitution-attacks"> | |||
| <name>Key Substitution Attacks</name> | <name>Key Substitution Attacks</name> | |||
| <t>RSA is well known to permit key substitution attacks, wherein an atta cker generates a key pair | <t>RSA is well known for permitting key substitution attacks, wherein an attacker generates a key pair | |||
| (skA, pkA) that verifies some known (message, signature) pair produced under a d ifferent (sk, pk) | (skA, pkA) that verifies some known (message, signature) pair produced under a d ifferent (sk, pk) | |||
| key pair <xref target="WM99"/>. This means it may be possible for an attacker to use a (message, signature) pair | key pair <xref target="WM99"/>. This means it may be possible for an attacker to use a (message, signature) pair | |||
| from one context in another. Entities that verify signatures must take care to e nsure a | from one context in another. Entities that verify signatures must take care to e nsure that a | |||
| (message, signature) pair verifies with a valid public key from the expected iss uer.</t> | (message, signature) pair verifies with a valid public key from the expected iss uer.</t> | |||
| </section> | </section> | |||
| <section anchor="alternative-rsa-encoding-functions"> | <section anchor="alternative-rsa-encoding-functions"> | |||
| <name>Alternative RSA Encoding Functions</name> | <name>Alternative RSA Encoding Functions</name> | |||
| <t>This document document uses PSS encoding as specified in <xref target ="RFC8017"/> for a number of | <t>This document uses PSS encoding as specified in <xref target="RFC8017 "/> for a number of | |||
| reasons. First, it is recommended in recent standards, including TLS 1.3 <xref t arget="RFC8446"/>, | reasons. First, it is recommended in recent standards, including TLS 1.3 <xref t arget="RFC8446"/>, | |||
| X.509v3 <xref target="RFC4055"/>, and even PKCS#1 itself. According to <xref tar | X.509 <xref target="RFC4055"/>, and even PKCS #1 itself. According to <xref targ | |||
| get="RFC8017"/>, "Although no | et="RFC8017"/>, | |||
| attacks are known against RSASSA-PKCS#1 v1.5, in the interest of increased robus | "Although no attacks are known against RSASSA-PKCS1-v1_5, in the interest of inc | |||
| tness, | reased robustness, RSASSA-PSS is <bcp14>REQUIRED</bcp14> in new applications." W | |||
| RSA-PSS <xref target="RFC8017"/> is recommended for eventual adoption in new app | hile RSA-PSS is | |||
| lications." While RSA-PSS is | more complex than RSASSA-PKCS1-v1_5 encoding, ubiquity of RSA-PSS support influe | |||
| more complex than RSASSA-PKCS#1 v1.5 encoding, ubiquity of RSA-PSS support influ | nced | |||
| enced | the design decision in this document, despite PKCS #1 v1.5 having equivalent sec | |||
| the design decision in this draft, despite PKCS#1 v1.5 having equivalent securit | urity | |||
| y | ||||
| properties for digital signatures <xref target="JKM18"/>.</t> | properties for digital signatures <xref target="JKM18"/>.</t> | |||
| <t>Full Domain Hash (FDH) <xref target="RSA-FDH"/> encoding is also poss | <t>Full Domain Hash (FDH) encoding <xref target="RSA-FDH"/> is also poss | |||
| ible, and this variant has | ible. This variant provides | |||
| equivalent security to PSS <xref target="KK18"/>. However, FDH is | security equivalent to that of PSS <xref target="KK18"/>. However, FDH is | |||
| less standard and not used widely in related technologies. Moreover, FDH is | less standard and is not used widely in related technologies. Moreover, FDH is | |||
| deterministic, whereas PSS supports deterministic and probabilistic encodings.</ t> | deterministic, whereas PSS supports deterministic and probabilistic encodings.</ t> | |||
| </section> | </section> | |||
| <section anchor="post-quantum-readiness"> | <section anchor="post-quantum-readiness"> | |||
| <name>Post-Quantum Readiness</name> | <name>Post-Quantum Readiness</name> | |||
| <t>The blind signature protocol specified in this document is not post-q uantum ready since it | <t>The blind signature protocol specified in this document is not post-q uantum ready, since it | |||
| is based on RSA. Shor's polynomial-time factorization algorithm readily applies. </t> | is based on RSA. Shor's polynomial-time factorization algorithm readily applies. </t> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="iana-considerations"> | <section anchor="iana-considerations"> | |||
| <name>IANA Considerations</name> | <name>IANA Considerations</name> | |||
| <t>This document makes no IANA requests.</t> | <t>This document has no IANA actions.</t> | |||
| </section> | </section> | |||
| </middle> | </middle> | |||
| <back> | <back> | |||
| <displayreference target="I-D.irtf-cfrg-voprf" to="VOPRF"/> | ||||
| <displayreference target="I-D.ietf-privacypass-protocol" to="PRIVACY-PASS"/> | ||||
| <references> | <references> | |||
| <name>References</name> | <name>References</name> | |||
| <references> | <references> | |||
| <name>Normative References</name> | <name>Normative References</name> | |||
| <reference anchor="RFC2119"> | ||||
| <front> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.21 | |||
| <title>Key words for use in RFCs to Indicate Requirement Levels</tit | 19.xml"/> | |||
| le> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.81 | |||
| <author fullname="S. Bradner" initials="S." surname="Bradner"/> | 74.xml"/> | |||
| <date month="March" year="1997"/> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.80 | |||
| <abstract> | 17.xml"/> | |||
| <t>In many standards track documents several words are used to sig | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.57 | |||
| nify the requirements in the specification. These words are often capitalized. T | 56.xml"/> | |||
| his document defines these words as they should be interpreted in IETF documents | ||||
| . This document specifies an Internet Best Current Practices for the Internet Co | ||||
| mmunity, and requests discussion and suggestions for improvements.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="BCP" value="14"/> | ||||
| <seriesInfo name="RFC" value="2119"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC2119"/> | ||||
| </reference> | ||||
| <reference anchor="RFC8174"> | ||||
| <front> | ||||
| <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</ti | ||||
| tle> | ||||
| <author fullname="B. Leiba" initials="B." surname="Leiba"/> | ||||
| <date month="May" year="2017"/> | ||||
| <abstract> | ||||
| <t>RFC 2119 specifies common key words that may be used in protoco | ||||
| l specifications. This document aims to reduce the ambiguity by clarifying that | ||||
| only UPPERCASE usage of the key words have the defined special meanings.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="BCP" value="14"/> | ||||
| <seriesInfo name="RFC" value="8174"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC8174"/> | ||||
| </reference> | ||||
| <reference anchor="RFC8017"> | ||||
| <front> | ||||
| <title>PKCS #1: RSA Cryptography Specifications Version 2.2</title> | ||||
| <author fullname="K. Moriarty" initials="K." role="editor" surname=" | ||||
| Moriarty"/> | ||||
| <author fullname="B. Kaliski" initials="B." surname="Kaliski"/> | ||||
| <author fullname="J. Jonsson" initials="J." surname="Jonsson"/> | ||||
| <author fullname="A. Rusch" initials="A." surname="Rusch"/> | ||||
| <date month="November" year="2016"/> | ||||
| <abstract> | ||||
| <t>This document provides recommendations for the implementation o | ||||
| f public-key cryptography based on the RSA algorithm, covering cryptographic pri | ||||
| mitives, encryption schemes, signature schemes with appendix, and ASN.1 syntax f | ||||
| or representing keys and for identifying the schemes.</t> | ||||
| <t>This document represents a republication of PKCS #1 v2.2 from R | ||||
| SA Laboratories' Public-Key Cryptography Standards (PKCS) series. By publishing | ||||
| this RFC, change control is transferred to the IETF.</t> | ||||
| <t>This document also obsoletes RFC 3447.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="8017"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC8017"/> | ||||
| </reference> | ||||
| <reference anchor="RFC5756"> | ||||
| <front> | ||||
| <title>Updates for RSAES-OAEP and RSASSA-PSS Algorithm Parameters</t | ||||
| itle> | ||||
| <author fullname="S. Turner" initials="S." surname="Turner"/> | ||||
| <author fullname="D. Brown" initials="D." surname="Brown"/> | ||||
| <author fullname="K. Yiu" initials="K." surname="Yiu"/> | ||||
| <author fullname="R. Housley" initials="R." surname="Housley"/> | ||||
| <author fullname="T. Polk" initials="T." surname="Polk"/> | ||||
| <date month="January" year="2010"/> | ||||
| <abstract> | ||||
| <t>This document updates RFC 4055. It updates the conventions for | ||||
| using the RSA Encryption Scheme - Optimal Asymmetric Encryption Padding (RSAES-O | ||||
| AEP) key transport algorithm in the Internet X.509 Public Key Infrastructure (PK | ||||
| I). Specifically, it updates the conventions for algorithm parameters in an X.50 | ||||
| 9 certificate's subjectPublicKeyInfo field. [STANDARDS-TRACK]</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="5756"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC5756"/> | ||||
| </reference> | ||||
| </references> | </references> | |||
| <references> | <references> | |||
| <name>Informative References</name> | <name>Informative References</name> | |||
| <reference anchor="GoogleVPN" target="https://one.google.com/about/vpn/h owitworks"> | <reference anchor="GoogleVPN" target="https://one.google.com/about/vpn/h owitworks"> | |||
| <front> | <front> | |||
| <title>VPN by Google One White Paper</title> | <title>VPN by Google One, explained</title> | |||
| <author> | <author> | |||
| <organization/> | <organization/> | |||
| </author> | </author> | |||
| <date>n.d.</date> | ||||
| </front> | </front> | |||
| </reference> | </reference> | |||
| <reference anchor="ApplePrivateRelay" target="https://www.apple.com/iclo ud/docs/iCloud_Private_Relay_Overview_Dec2021.pdf"> | <reference anchor="ApplePrivateRelay" target="https://www.apple.com/iclo ud/docs/iCloud_Private_Relay_Overview_Dec2021.pdf"> | |||
| <front> | <front> | |||
| <title>iCloud Private Relay Overview</title> | <title>iCloud Private Relay Overview</title> | |||
| <author> | <author> | |||
| <organization/> | <organization/> | |||
| </author> | </author> | |||
| <date>n.d.</date> | <date month="December" year="2021"/> | |||
| </front> | </front> | |||
| </reference> | </reference> | |||
| <reference anchor="PrettyGoodPhonePrivacy" target="https://www.usenix.or g/conference/usenixsecurity21/presentation/schmitt"> | <reference anchor="PrettyGoodPhonePrivacy" target="https://www.usenix.or g/conference/usenixsecurity21/presentation/schmitt"> | |||
| <front> | <front> | |||
| <title>Pretty Good Phone Privacy</title> | <title>Pretty Good Phone Privacy</title> | |||
| <author initials="P." surname="Schmitt"> | <author initials="P." surname="Schmitt"> | |||
| <organization/> | <organization/> | |||
| </author> | </author> | |||
| <author initials="B." surname="Raghavan"> | <author initials="B." surname="Raghavan"> | |||
| <organization/> | <organization/> | |||
| </author> | </author> | |||
| <date>n.d.</date> | <date month="August" year="2021"/> | |||
| </front> | </front> | |||
| <refcontent>Proceedings of the 30th USENIX Security Symposium</refcon tent> | ||||
| </reference> | </reference> | |||
| <reference anchor="WM99"> | ||||
| <reference anchor="WM99" target="https://link.springer.com/chapter/10.10 | ||||
| 07/3-540-49162-7_12"> | ||||
| <front> | <front> | |||
| <title>Unknown key-share attacks on the station-to-station (STS) pro tocol</title> | <title>Unknown Key-Share Attacks on the Station-to-Station (STS) Pro tocol</title> | |||
| <author initials="S." surname="Blake-Wilson"> | <author initials="S." surname="Blake-Wilson"> | |||
| <organization/> | <organization/> | |||
| </author> | </author> | |||
| <author initials="A." surname="Menezes"> | <author initials="A." surname="Menezes"> | |||
| <organization/> | <organization/> | |||
| </author> | </author> | |||
| <date year="1999" month="October"/> | <date year="1999" month="October"/> | |||
| </front> | </front> | |||
| <refcontent>International Workshop on Public Key Cryptography</refcont | <refcontent>International Workshop on Public Key Cryptography, PKC 199 | |||
| ent> | 9, pp. 154-170</refcontent> | |||
| </reference> | <seriesInfo name="DOI" value="10.1007/3-540-49162-7_12"/> | |||
| <reference anchor="KLRX20" target="https://eprint.iacr.org/2020/1071"> | ||||
| <front> | ||||
| <title>On Pairing-Free Blind Signature Schemes in the Algebraic Grou | ||||
| p Model</title> | ||||
| <author initials="J." surname="Kastner"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author initials="J." surname="Loss"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author initials="M." surname="Rosenberg"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author initials="J." surname="Xu"> | ||||
| <organization/> | ||||
| </author> | ||||
| <date year="2020" month="September"/> | ||||
| </front> | ||||
| </reference> | </reference> | |||
| <reference anchor="JKK14" target="https://eprint.iacr.org/2014/650"> | <reference anchor="JKK14" target="https://eprint.iacr.org/2014/650"> | |||
| <front> | <front> | |||
| <title>Round-Optimal Password-Protected Secret Sharing and T-PAKE in the Password-Only model</title> | <title>Round-Optimal Password-Protected Secret Sharing and T-PAKE in the Password-Only Model</title> | |||
| <author initials="S." surname="Jarecki"> | <author initials="S." surname="Jarecki"> | |||
| <organization>UC Irvine, CA, USA</organization> | <organization>UC Irvine, CA, USA</organization> | |||
| </author> | </author> | |||
| <author initials="A." surname="Kiayias"> | <author initials="A." surname="Kiayias"> | |||
| <organization>University of Athens, Greece</organization> | <organization>University of Athens, Greece</organization> | |||
| </author> | </author> | |||
| <author initials="H." surname="Krawczyk"> | <author initials="H." surname="Krawczyk"> | |||
| <organization>IBM Research, NY, USA</organization> | <organization>IBM Research, NY, USA</organization> | |||
| </author> | </author> | |||
| <date year="2014" month="August"/> | <date year="2014" month="August"/> | |||
| skipping to change at line 659 ¶ | skipping to change at line 602 ¶ | |||
| </author> | </author> | |||
| <author initials="A." surname="Kiayias"> | <author initials="A." surname="Kiayias"> | |||
| <organization>University of Athens, Greece</organization> | <organization>University of Athens, Greece</organization> | |||
| </author> | </author> | |||
| <author initials="H." surname="Krawczyk"> | <author initials="H." surname="Krawczyk"> | |||
| <organization>IBM Research, NY, USA</organization> | <organization>IBM Research, NY, USA</organization> | |||
| </author> | </author> | |||
| <date year="2014" month="August"/> | <date year="2014" month="August"/> | |||
| </front> | </front> | |||
| </reference> | </reference> | |||
| <reference anchor="Lys22" target="https://eprint.iacr.org/2022/895"> | <reference anchor="Lys22" target="https://eprint.iacr.org/2022/895"> | |||
| <front> | <front> | |||
| <title>Security Analysis of RSA-BSSA</title> | <title>Security Analysis of RSA-BSSA</title> | |||
| <author initials="A." surname="Lysyanskaya"> | <author initials="A." surname="Lysyanskaya"> | |||
| <organization/> | <organization/> | |||
| </author> | </author> | |||
| <date>n.d.</date> | <date month="March" year="2023"/> | |||
| </front> | ||||
| </reference> | ||||
| <reference anchor="BLS-Proposal" target="https://mailarchive.ietf.org/ar | ||||
| ch/msg/privacy-pass/BDOOhSLwB3uUJcfBiss6nUF5sUA/"> | ||||
| <front> | ||||
| <title>[Privacy-pass] External verifiability: a concrete proposal</t | ||||
| itle> | ||||
| <author initials="W." surname="Ladd"> | ||||
| <organization/> | ||||
| </author> | ||||
| <date year="2020" month="July"/> | ||||
| </front> | ||||
| </reference> | ||||
| <reference anchor="PolytimeROS" target="https://eprint.iacr.org/2020/945 | ||||
| "> | ||||
| <front> | ||||
| <title>On the (in)security of ROS</title> | ||||
| <author initials="F." surname="Benhamouda"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author initials="T." surname="Lepoint"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author initials="J." surname="Loss"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author initials="M." surname="Orru"> | ||||
| <organization/> | ||||
| </author> | ||||
| <author initials="M." surname="Raykova"> | ||||
| <organization/> | ||||
| </author> | ||||
| <date year="2020" month="July"/> | ||||
| </front> | </front> | |||
| </reference> | </reference> | |||
| <reference anchor="RSA-FDH" target="https://cseweb.ucsd.edu/~mihir/paper | ||||
| s/ro.pdf"> | <reference anchor="RSA-FDH" target="https://dl.acm.org/doi/abs/10.1145/1 | |||
| 68588.168596"> | ||||
| <front> | <front> | |||
| <title>Random Oracles are Practical: A Paradigm for Designing Effici ent Protocols</title> | <title>Random oracles are practical: a paradigm for designing effic ient protocols</title> | |||
| <author initials="M." surname="Bellare"> | <author initials="M." surname="Bellare"> | |||
| <organization/> | <organization/> | |||
| </author> | </author> | |||
| <author initials="P." surname="Rogaway"> | <author initials="P." surname="Rogaway"> | |||
| <organization/> | <organization/> | |||
| </author> | </author> | |||
| <date year="1995" month="October"/> | <date year="1993" month="December"/> | |||
| </front> | </front> | |||
| <refcontent>CCS '93: Proceedings of the 1st ACM conference on Computer | ||||
| and communications security, pp. 62-73</refcontent> | ||||
| <seriesInfo name="DOI" value="10.1145/168588.168596"/> | ||||
| </reference> | </reference> | |||
| <reference anchor="Chaum83" target="http://sceweb.sce.uhcl.edu/yang/teac hing/csci5234WebSecurityFall2011/Chaum-blind-signatures.PDF"> | <reference anchor="Chaum83" target="https://sceweb.sce.uhcl.edu/yang/tea ching/csci5234WebSecurityFall2011/Chaum-blind-signatures.PDF"> | |||
| <front> | <front> | |||
| <title>Blind Signatures for Untraceable Payments</title> | <title>Blind Signatures for Untraceable Payments</title> | |||
| <author initials="D." surname="Chaum"> | <author initials="D." surname="Chaum"> | |||
| <organization>University of California, Santa Barbara, USA</organi zation> | <organization>University of California, Santa Barbara, USA</organi zation> | |||
| </author> | </author> | |||
| <date year="1983"/> | <date year="1998"/> | |||
| </front> | </front> | |||
| <refcontent>Springer-Verlag</refcontent> | ||||
| </reference> | </reference> | |||
| <reference anchor="RemoteTimingAttacks" target="https://crypto.stanford. | ||||
| edu/~dabo/papers/ssl-timing.pdf"> | <reference anchor="RemoteTimingAttacks" target="https://www.usenix.org/l | |||
| egacy/events/sec03/tech/brumley/brumley.pdf"> | ||||
| <front> | <front> | |||
| <title>Remote Timing Attacks are Practical</title> | <title>Remote Timing Attacks are Practical</title> | |||
| <author initials="D." surname="Boneh"> | ||||
| <organization>Stanford University</organization> | ||||
| </author> | ||||
| <author initials="D." surname="Brumley"> | <author initials="D." surname="Brumley"> | |||
| <organization>Stanford University</organization> | <organization>Stanford University</organization> | |||
| </author> | </author> | |||
| <date year="2003" month="May"/> | <author initials="D." surname="Boneh"> | |||
| </front> | <organization>Stanford University</organization> | |||
| <refcontent>12th Usenix Security Symposium</refcontent> | ||||
| </reference> | ||||
| <reference anchor="TZ22" target="https://eprint.iacr.org/2022/047"> | ||||
| <front> | ||||
| <title>Short Pairing-Free Blind Signatures with Exponential Security | ||||
| </title> | ||||
| <author initials="S." surname="Tessaro"> | ||||
| <organization>University of Washington</organization> | ||||
| </author> | ||||
| <author initials="C." surname="Zhu"> | ||||
| <organization>University of Washington</organization> | ||||
| </author> | ||||
| <date year="2022" month="January"/> | ||||
| </front> | ||||
| </reference> | ||||
| <reference anchor="UProve" target="https://www.microsoft.com/en-us/resea | ||||
| rch/project/u-prove/"> | ||||
| <front> | ||||
| <title>U-Prove</title> | ||||
| <author initials="" surname="Microsoft"> | ||||
| <organization>Microsoft</organization> | ||||
| </author> | </author> | |||
| <date year="2012" month="February"/> | <date year="2003" month="August"/> | |||
| </front> | </front> | |||
| <refcontent>Proceedings of the 12th USENIX Security Symposium</refcont ent> | ||||
| </reference> | </reference> | |||
| <reference anchor="GRSB19" target="https://eprint.iacr.org/2018/057.pdf" > | <reference anchor="GRSB19" target="https://eprint.iacr.org/2018/057.pdf" > | |||
| <front> | <front> | |||
| <title>Efficient Noninteractive Certification of RSA Moduli and Beyo nd</title> | <title>Efficient Noninteractive Certification of RSA Moduli and Beyo nd</title> | |||
| <author initials="S." surname="Goldberg"> | <author initials="S." surname="Goldberg"> | |||
| <organization/> | <organization/> | |||
| </author> | </author> | |||
| <author initials="L." surname="Reyzin"> | <author initials="L." surname="Reyzin"> | |||
| <organization/> | <organization/> | |||
| </author> | </author> | |||
| <author initials="O." surname="Sagga"> | <author initials="O." surname="Sagga"> | |||
| <organization/> | <organization/> | |||
| </author> | </author> | |||
| <author initials="F." surname="Baldimtsi"> | <author initials="F." surname="Baldimtsi"> | |||
| <organization/> | <organization/> | |||
| </author> | </author> | |||
| <date year="2019" month="October"/> | <date year="2019" month="October"/> | |||
| </front> | </front> | |||
| </reference> | </reference> | |||
| <reference anchor="VOPRF"> | ||||
| <front> | ||||
| <title>Oblivious Pseudorandom Functions (OPRFs) using Prime-Order Gr | ||||
| oups</title> | ||||
| <author fullname="Alex Davidson" initials="A." surname="Davidson"> | ||||
| <organization>Brave Software</organization> | ||||
| </author> | ||||
| <author fullname="Armando Faz-Hernandez" initials="A." surname="Faz- | ||||
| Hernandez"> | ||||
| <organization>Cloudflare, Inc.</organization> | ||||
| </author> | ||||
| <author fullname="Nick Sullivan" initials="N." surname="Sullivan"> | ||||
| <organization>Cloudflare, Inc.</organization> | ||||
| </author> | ||||
| <author fullname="Christopher A. Wood" initials="C. A." surname="Woo | ||||
| d"> | ||||
| <organization>Cloudflare, Inc.</organization> | ||||
| </author> | ||||
| <date day="21" month="February" year="2023"/> | ||||
| <abstract> | ||||
| <t> An Oblivious Pseudorandom Function (OPRF) is a two-party pro | ||||
| tocol | ||||
| between client and server for computing the output of a Pseudorandom | ||||
| Function (PRF). The server provides the PRF private key, and the | ||||
| client provides the PRF input. At the end of the protocol, the | ||||
| client learns the PRF output without learning anything about the PRF | ||||
| private key, and the server learns neither the PRF input nor output. | ||||
| An OPRF can also satisfy a notion of 'verifiability', called a VOPRF. | ||||
| A VOPRF ensures clients can verify that the server used a specific | ||||
| private key during the execution of the protocol. A VOPRF can also | ||||
| be partially-oblivious, called a POPRF. A POPRF allows clients and | ||||
| servers to provide public input to the PRF computation. This | ||||
| document specifies an OPRF, VOPRF, and POPRF instantiated within | ||||
| standard prime-order groups, including elliptic curves. This | ||||
| document is a product of the Crypto Forum Research Group (CFRG) in | ||||
| the IRTF. | ||||
| </t> | <!-- draft-irtf-cfrg-voprf (RFC-EDITOR since 9/22/2023) --> | |||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="Internet-Draft" value="draft-irtf-cfrg-voprf-21"/> | ||||
| </reference> | ||||
| <reference anchor="PRIVACY-PASS"> | ||||
| <front> | ||||
| <title>Privacy Pass Issuance Protocol</title> | ||||
| <author fullname="Sofia Celi" initials="S." surname="Celi"> | ||||
| <organization>Brave Software</organization> | ||||
| </author> | ||||
| <author fullname="Alex Davidson" initials="A." surname="Davidson"> | ||||
| <organization>Brave Software</organization> | ||||
| </author> | ||||
| <author fullname="Steven Valdez" initials="S." surname="Valdez"> | ||||
| <organization>Google LLC</organization> | ||||
| </author> | ||||
| <author fullname="Christopher A. Wood" initials="C. A." surname="Woo | ||||
| d"> | ||||
| <organization>Cloudflare</organization> | ||||
| </author> | ||||
| <date day="26" month="June" year="2023"/> | ||||
| <abstract> | ||||
| <t> This document specifies two variants of the two-message issu | ||||
| ance | ||||
| protocol for Privacy Pass tokens: one that produces tokens that are | ||||
| privately verifiable using the issuance private key, and another that | ||||
| produces tokens that are publicly verifiable using the issuance | ||||
| public key. | ||||
| </t> | <xi:include href="https://datatracker.ietf.org/doc/bibxml3/reference.I-D.irtf-cf | |||
| </abstract> | rg-voprf.xml"/> | |||
| </front> | ||||
| <seriesInfo name="Internet-Draft" value="draft-ietf-privacypass-protoc | <!-- draft-ietf-privacypass-protocol (Submitted to IESG for Pub) --> | |||
| ol-11"/> | <xi:include href="https://datatracker.ietf.org/doc/bibxml3/reference.I-D.ietf-pr | |||
| </reference> | ivacypass-protocol.xml"/> | |||
| <reference anchor="DSS"> | ||||
| <reference anchor="DSS" target="https://doi.org/10.6028/NIST.FIPS.186-5" | ||||
| > | ||||
| <front> | <front> | |||
| <title>Digital Signature Standard (DSS)</title> | <title>Digital Signature Standard (DSS)</title> | |||
| <author> | <author> | |||
| <organization/> | <organization/> | |||
| </author> | </author> | |||
| <date month="July" year="2013"/> | <date month="February" year="2023"/> | |||
| </front> | ||||
| <seriesInfo name="National Institute of Standards and Technology" valu | ||||
| e="report"/> | ||||
| <seriesInfo name="DOI" value="10.6028/nist.fips.186-4"/> | ||||
| </reference> | ||||
| <reference anchor="RFC5280"> | ||||
| <front> | ||||
| <title>Internet X.509 Public Key Infrastructure Certificate and Cert | ||||
| ificate Revocation List (CRL) Profile</title> | ||||
| <author fullname="D. Cooper" initials="D." surname="Cooper"/> | ||||
| <author fullname="S. Santesson" initials="S." surname="Santesson"/> | ||||
| <author fullname="S. Farrell" initials="S." surname="Farrell"/> | ||||
| <author fullname="S. Boeyen" initials="S." surname="Boeyen"/> | ||||
| <author fullname="R. Housley" initials="R." surname="Housley"/> | ||||
| <author fullname="W. Polk" initials="W." surname="Polk"/> | ||||
| <date month="May" year="2008"/> | ||||
| <abstract> | ||||
| <t>This memo profiles the X.509 v3 certificate and X.509 v2 certif | ||||
| icate revocation list (CRL) for use in the Internet. An overview of this approac | ||||
| h and model is provided as an introduction. The X.509 v3 certificate format is d | ||||
| escribed in detail, with additional information regarding the format and semanti | ||||
| cs of Internet name forms. Standard certificate extensions are described and two | ||||
| Internet-specific extensions are defined. A set of required certificate extensi | ||||
| ons is specified. The X.509 v2 CRL format is described in detail along with stan | ||||
| dard and Internet-specific extensions. An algorithm for X.509 certification path | ||||
| validation is described. An ASN.1 module and examples are provided in the appen | ||||
| dices. [STANDARDS-TRACK]</t> | ||||
| </abstract> | ||||
| </front> | </front> | |||
| <seriesInfo name="RFC" value="5280"/> | <refcontent>National Institute of Standards and Technology report</ref | |||
| <seriesInfo name="DOI" value="10.17487/RFC5280"/> | content> | |||
| <seriesInfo name="DOI" value="10.6028/nist.fips.186-5"/> | ||||
| </reference> | </reference> | |||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5280.xml" | ||||
| /> | ||||
| <reference anchor="TimingAttacks"> | <reference anchor="TimingAttacks"> | |||
| <front> | <front> | |||
| <title>Timing Attacks on Implementations of Diffie-Hellman, RSA, DSS , and Other Systems</title> | <title>Timing Attacks on Implementations of Diffie-Hellman, RSA, DSS , and Other Systems</title> | |||
| <author fullname="Paul C. Kocher" initials="P." surname="Kocher"> | <author fullname="Paul C. Kocher" initials="P. C." surname="Kocher"> | |||
| <organization/> | <organization/> | |||
| </author> | </author> | |||
| <date year="1996"/> | <date year="1996"/> | |||
| </front> | </front> | |||
| <seriesInfo name="Advances in Cryptology - CRYPTO '96" value="pp. 104- 113"/> | <refcontent>Advances in Cryptology - CRYPTO '96, pp. 104-113</refconte nt> | |||
| <seriesInfo name="DOI" value="10.1007/3-540-68697-5_9"/> | <seriesInfo name="DOI" value="10.1007/3-540-68697-5_9"/> | |||
| </reference> | </reference> | |||
| <reference anchor="FAULTS"> | <reference anchor="FAULTS"> | |||
| <front> | <front> | |||
| <title>On the Importance of Checking Cryptographic Protocols for Fau lts</title> | <title>On the Importance of Checking Cryptographic Protocols for Fau lts</title> | |||
| <author fullname="Dan Boneh" initials="D." surname="Boneh"> | <author fullname="Dan Boneh" initials="D." surname="Boneh"> | |||
| <organization/> | <organization/> | |||
| </author> | </author> | |||
| <author fullname="Richard A. DeMillo" initials="R." surname="DeMillo "> | <author fullname="Richard A. DeMillo" initials="R. A." surname="DeMi llo"> | |||
| <organization/> | <organization/> | |||
| </author> | </author> | |||
| <author fullname="Richard J. Lipton" initials="R." surname="Lipton"> | <author fullname="Richard J. Lipton" initials="R. J." surname="Lipto n"> | |||
| <organization/> | <organization/> | |||
| </author> | </author> | |||
| <date year="1997"/> | <date year="1997"/> | |||
| </front> | </front> | |||
| <seriesInfo name="Advances in Cryptology - EUROCRYPT '97" value="pp. 3 7-51"/> | <refcontent>Advances in Cryptology - EUROCRYPT '97, pp. 37-51</refcont ent> | |||
| <seriesInfo name="DOI" value="10.1007/3-540-69053-0_4"/> | <seriesInfo name="DOI" value="10.1007/3-540-69053-0_4"/> | |||
| </reference> | </reference> | |||
| <reference anchor="RFC4086"> | ||||
| <front> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.40 | |||
| <title>Randomness Requirements for Security</title> | 86.xml"/> | |||
| <author fullname="D. Eastlake 3rd" initials="D." surname="Eastlake 3 | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.84 | |||
| rd"/> | 46.xml"/> | |||
| <author fullname="J. Schiller" initials="J." surname="Schiller"/> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.40 | |||
| <author fullname="S. Crocker" initials="S." surname="Crocker"/> | 55.xml"/> | |||
| <date month="June" year="2005"/> | ||||
| <abstract> | <reference anchor="JKM18" target="https://eprint.iacr.org/2018/855"> | |||
| <t>Security systems are built on strong cryptographic algorithms t | ||||
| hat foil pattern analysis attempts. However, the security of these systems is de | ||||
| pendent on generating secret quantities for passwords, cryptographic keys, and s | ||||
| imilar quantities. The use of pseudo-random processes to generate secret quantit | ||||
| ies can result in pseudo-security. A sophisticated attacker may find it easier t | ||||
| o reproduce the environment that produced the secret quantities and to search th | ||||
| e resulting small set of possibilities than to locate the quantities in the whol | ||||
| e of the potential number space.</t> | ||||
| <t>Choosing random quantities to foil a resourceful and motivated | ||||
| adversary is surprisingly difficult. This document points out many pitfalls in u | ||||
| sing poor entropy sources or traditional pseudo-random number generation techniq | ||||
| ues for generating such quantities. It recommends the use of truly random hardwa | ||||
| re techniques and shows that the existing hardware on many systems can be used f | ||||
| or this purpose. It provides suggestions to ameliorate the problem when a hardwa | ||||
| re solution is not available, and it gives examples of how large such quantities | ||||
| need to be for some applications. This document specifies an Internet Best Curr | ||||
| ent Practices for the Internet Community, and requests discussion and suggestion | ||||
| s for improvements.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="BCP" value="106"/> | ||||
| <seriesInfo name="RFC" value="4086"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC4086"/> | ||||
| </reference> | ||||
| <reference anchor="RFC8446"> | ||||
| <front> | ||||
| <title>The Transport Layer Security (TLS) Protocol Version 1.3</titl | ||||
| e> | ||||
| <author fullname="E. Rescorla" initials="E." surname="Rescorla"/> | ||||
| <date month="August" year="2018"/> | ||||
| <abstract> | ||||
| <t>This document specifies version 1.3 of the Transport Layer Secu | ||||
| rity (TLS) protocol. TLS allows client/server applications to communicate over t | ||||
| he Internet in a way that is designed to prevent eavesdropping, tampering, and m | ||||
| essage forgery.</t> | ||||
| <t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 50 | ||||
| 77, 5246, and 6961. This document also specifies new requirements for TLS 1.2 im | ||||
| plementations.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="8446"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC8446"/> | ||||
| </reference> | ||||
| <reference anchor="RFC4055"> | ||||
| <front> | ||||
| <title>Additional Algorithms and Identifiers for RSA Cryptography fo | ||||
| r use in the Internet X.509 Public Key Infrastructure Certificate and Certificat | ||||
| e Revocation List (CRL) Profile</title> | ||||
| <author fullname="J. Schaad" initials="J." surname="Schaad"/> | ||||
| <author fullname="B. Kaliski" initials="B." surname="Kaliski"/> | ||||
| <author fullname="R. Housley" initials="R." surname="Housley"/> | ||||
| <date month="June" year="2005"/> | ||||
| <abstract> | ||||
| <t>This document supplements RFC 3279. It describes the convention | ||||
| s for using the RSA Probabilistic Signature Scheme (RSASSA-PSS) signature algori | ||||
| thm, the RSA Encryption Scheme - Optimal Asymmetric Encryption Padding (RSAES-OA | ||||
| EP) key transport algorithm and additional one-way hash functions with the Publi | ||||
| c-Key Cryptography Standards (PKCS) #1 version 1.5 signature algorithm in the In | ||||
| ternet X.509 Public Key Infrastructure (PKI). Encoding formats, algorithm identi | ||||
| fiers, and parameter formats are specified. [STANDARDS-TRACK]</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="4055"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC4055"/> | ||||
| </reference> | ||||
| <reference anchor="JKM18"> | ||||
| <front> | <front> | |||
| <title>On the Security of the PKCS#1 v1.5 Signature Scheme</title> | <title>On the Security of the PKCS#1 v1.5 Signature Scheme</title> | |||
| <author fullname="Tibor Jager" initials="T." surname="Jager"> | <author fullname="Tibor Jager" initials="T." surname="Jager"> | |||
| <organization>Paderborn Uninversity, Paderborn, Germany</organizat ion> | <organization>Paderborn Uninversity, Paderborn, Germany</organizat ion> | |||
| </author> | </author> | |||
| <author fullname="Saqib A. Kakvi" initials="S." surname="Kakvi"> | <author fullname="Saqib A. Kakvi" initials="S. A." surname="Kakvi"> | |||
| <organization>Paderborn University, Paderborn, Germany</organizati on> | <organization>Paderborn University, Paderborn, Germany</organizati on> | |||
| </author> | </author> | |||
| <author fullname="Alexander May" initials="A." surname="May"> | <author fullname="Alexander May" initials="A." surname="May"> | |||
| <organization>Ruhr-University Bochum, Bochum, Germany</organizatio n> | <organization>Ruhr-University Bochum, Bochum, Germany</organizatio n> | |||
| </author> | </author> | |||
| <date month="October" year="2018"/> | <date month="September" year="2018"/> | |||
| </front> | </front> | |||
| <seriesInfo name="Proceedings of the 2018 ACM SIGSAC Conference on Com puter and Communications" value="Security"/> | <refcontent>Proceedings of the 2018 ACM SIGSAC Conference on Computer and Communications Security, pp. 1195-1208</refcontent> | |||
| <seriesInfo name="DOI" value="10.1145/3243734.3243798"/> | <seriesInfo name="DOI" value="10.1145/3243734.3243798"/> | |||
| </reference> | </reference> | |||
| <reference anchor="KK18"> | <reference anchor="KK18"> | |||
| <front> | <front> | |||
| <title>Optimal Security Proofs for Full Domain Hash, Revisited</titl e> | <title>Optimal Security Proofs for Full Domain Hash, Revisited</titl e> | |||
| <author fullname="Saqib A. Kakvi" initials="S." surname="Kakvi"> | <author fullname="Saqib A. Kakvi" initials="S. A." surname="Kakvi"> | |||
| <organization/> | <organization/> | |||
| </author> | </author> | |||
| <author fullname="Eike Kiltz" initials="E." surname="Kiltz"> | <author fullname="Eike Kiltz" initials="E." surname="Kiltz"> | |||
| <organization/> | <organization/> | |||
| </author> | </author> | |||
| <date month="April" year="2017"/> | <date month="April" year="2017"/> | |||
| </front> | </front> | |||
| <seriesInfo name="Journal of Cryptology" value="vol. 31, no. 1, pp. 27 6-306"/> | <refcontent>Journal of Cryptology, vol. 31, no. 1, pp. 276-306</refcon tent> | |||
| <seriesInfo name="DOI" value="10.1007/s00145-017-9257-9"/> | <seriesInfo name="DOI" value="10.1007/s00145-017-9257-9"/> | |||
| </reference> | </reference> | |||
| </references> | </references> | |||
| </references> | </references> | |||
| <?line 655?> | ||||
| <section anchor="test-vectors"> | <section anchor="test-vectors"> | |||
| <name>Test Vectors</name> | <name>Test Vectors</name> | |||
| <t>This section includes test vectors for the blind signature protocol def ined in <xref target="core-protocol"/>. | <t>This section includes test vectors for the blind signature protocol def ined in <xref target="core-protocol"/>. | |||
| The following parameters are specified for each test vector:</t> | The following parameters are specified for each test vector:</t> | |||
| <ul spacing="normal"> | <dl spacing="normal"> | |||
| <li>p, q, n, e, d: RSA private and public key (sk and pk) parameters, ea | <dt>p, q, n, e, d:</dt><dd>RSA private and public key (sk and pk) parame | |||
| ch encoded as a hexadecimal string.</li> | ters, each encoded as a hexadecimal string.</dd> | |||
| <li>msg: Input messsage being signed, encoded as a hexadecimal string. T | <dt>msg:</dt><dd>Input message being signed, encoded as a hexadecimal st | |||
| he hash is computed using SHA-384.</li> | ring. The hash is computed using SHA-384.</dd> | |||
| <li>msg_prefix: Message randomizer prefix, encoded as a hexadecimal stri | <dt>msg_prefix:</dt><dd>Message randomizer prefix, encoded as a hexadeci | |||
| ng. This is only present for variants | mal string. This is only present for variants | |||
| that use the randomization preparation function.</li> | that use the randomization preparation function.</dd> | |||
| <li>prepared_msg: The message actually signed. If the variant does not u | <dt>prepared_msg:</dt><dd>The message actually signed. If the variant do | |||
| se the randomization preparation | es not use the randomization preparation | |||
| function, this is equal to msg.</li> | function, this is equal to msg.</dd> | |||
| <li>salt: Randomly-generated salt used when computing the signature. The | <dt>salt:</dt><dd>Randomly generated salt used when computing the signat | |||
| length is either 48 or 0 bytes.</li> | ure. The length is either 48 or 0 bytes.</dd> | |||
| <li>encoded_msg: EMSA-PSS encoded message. The mask generation function | <dt>encoded_msg:</dt><dd>EMSA-PSS encoded message. The mask generation f | |||
| is MGF1 with SHA-384.</li> | unction is MGF1 with SHA-384.</dd> | |||
| <li>inv: The message blinding inverse, encoded as a hexadecimal string.< | <dt>inv:</dt><dd>The message blinding inverse, encoded as a hexadecimal | |||
| /li> | string.</dd> | |||
| <li>blinded_msg, blind_sig: The protocol values exchanged during the com | <dt>blinded_msg, blind_sig:</dt><dd>The protocol values exchanged during | |||
| putation, | the computation, | |||
| encoded as hexadecimal strings.</li> | encoded as hexadecimal strings.</dd> | |||
| <li>sig: The output message signature.</li> | <dt>sig:</dt><dd>The output message signature.</dd> | |||
| </ul> | </dl> | |||
| <section anchor="rsabssa-sha384-pss-randomized-test-vector"> | <section anchor="rsabssa-sha384-pss-randomized-test-vector"> | |||
| <name>RSABSSA-SHA384-PSS-Randomized Test Vector</name> | <name>RSABSSA-SHA384-PSS-Randomized Test Vector</name> | |||
| <artwork><![CDATA[ | ||||
| <sourcecode name="" type="test-vectors"><![CDATA[ | ||||
| p = e1f4d7a34802e27c7392a3cea32a262a34dc3691bd87f3f310dc756734889305 | p = e1f4d7a34802e27c7392a3cea32a262a34dc3691bd87f3f310dc756734889305 | |||
| 59c120fd0410194fb8a0da55bd0b81227e843fdca6692ae80e5a5d414116d4803fca | 59c120fd0410194fb8a0da55bd0b81227e843fdca6692ae80e5a5d414116d4803fca | |||
| 7d8c30eaaae57e44a1816ebb5c5b0606c536246c7f11985d731684150b63c9a3ad9e | 7d8c30eaaae57e44a1816ebb5c5b0606c536246c7f11985d731684150b63c9a3ad9e | |||
| 41b04c0b5b27cb188a692c84696b742a80d3cd00ab891f2457443dadfeba6d6daf10 | 41b04c0b5b27cb188a692c84696b742a80d3cd00ab891f2457443dadfeba6d6daf10 | |||
| 8602be26d7071803c67105a5426838e6889d77e8474b29244cefaf418e381b312048 | 8602be26d7071803c67105a5426838e6889d77e8474b29244cefaf418e381b312048 | |||
| b457d73419213063c60ee7b0d81820165864fef93523c9635c22210956e53a8d9632 | b457d73419213063c60ee7b0d81820165864fef93523c9635c22210956e53a8d9632 | |||
| 2493ffc58d845368e2416e078e5bcb5d2fd68ae6acfa54f9627c42e84a9d3f277401 | 2493ffc58d845368e2416e078e5bcb5d2fd68ae6acfa54f9627c42e84a9d3f277401 | |||
| 7e32ebca06308a12ecc290c7cd1156dcccfb2311 | 7e32ebca06308a12ecc290c7cd1156dcccfb2311 | |||
| q = c601a9caea66dc3835827b539db9df6f6f5ae77244692780cd334a006ab353c8 | q = c601a9caea66dc3835827b539db9df6f6f5ae77244692780cd334a006ab353c8 | |||
| 06426b60718c05245650821d39445d3ab591ed10a7339f15d83fe13f6a3dfb20b945 | 06426b60718c05245650821d39445d3ab591ed10a7339f15d83fe13f6a3dfb20b945 | |||
| skipping to change at line 1130 ¶ | skipping to change at line 921 ¶ | |||
| 1e2cfee2d8bef511412e93c859a13726d87c57d1bc4c2e68ab121562f839c3a3d233 | 1e2cfee2d8bef511412e93c859a13726d87c57d1bc4c2e68ab121562f839c3a3d233 | |||
| e87ed63c69b7e57525367753fbebcc2a9805a2802659f5888b2c69115bf865559f10 | e87ed63c69b7e57525367753fbebcc2a9805a2802659f5888b2c69115bf865559f10 | |||
| d906c09d048a0d71bfee4b33857393ec2b69e451433496d02c9a7910abb954317720 | d906c09d048a0d71bfee4b33857393ec2b69e451433496d02c9a7910abb954317720 | |||
| bbde9e69108eafc3e90bad3d5ca4066d7b1e49013fa04e948104a1dd82b12509ecb1 | bbde9e69108eafc3e90bad3d5ca4066d7b1e49013fa04e948104a1dd82b12509ecb1 | |||
| 46e948c54bd8bfb5e6d18127cd1f7a93c3cf9f2d869d5a78878c03fe808a0d799e91 | 46e948c54bd8bfb5e6d18127cd1f7a93c3cf9f2d869d5a78878c03fe808a0d799e91 | |||
| 0be6f26d18db61c485b303631d3568368fc41986d08a95ea6ac0592240c19d7b2241 | 0be6f26d18db61c485b303631d3568368fc41986d08a95ea6ac0592240c19d7b2241 | |||
| 6b9c82ae6241e211dd5610d0baaa9823158f9c32b66318f5529491b7eeadcaa71898 | 6b9c82ae6241e211dd5610d0baaa9823158f9c32b66318f5529491b7eeadcaa71898 | |||
| a63bac9d95f4aa548d5e97568d744fc429104e32edd9c87519892a198a30d333d427 | a63bac9d95f4aa548d5e97568d744fc429104e32edd9c87519892a198a30d333d427 | |||
| 739ffb9607b092e910ae37771abf2adb9f63bc058bf58062ad456cb934679795bbdf | 739ffb9607b092e910ae37771abf2adb9f63bc058bf58062ad456cb934679795bbdf | |||
| cdfad5e0f2 | cdfad5e0f2 | |||
| ]]></artwork> | ]]></sourcecode> | |||
| </section> | </section> | |||
| <section anchor="rsabssa-sha384-psszero-randomized-test-vector"> | <section anchor="rsabssa-sha384-psszero-randomized-test-vector"> | |||
| <name>RSABSSA-SHA384-PSSZERO-Randomized Test Vector</name> | <name>RSABSSA-SHA384-PSSZERO-Randomized Test Vector</name> | |||
| <artwork><![CDATA[ | <sourcecode name="" type="test-vectors"><![CDATA[ | |||
| p = e1f4d7a34802e27c7392a3cea32a262a34dc3691bd87f3f310dc756734889305 | p = e1f4d7a34802e27c7392a3cea32a262a34dc3691bd87f3f310dc756734889305 | |||
| 59c120fd0410194fb8a0da55bd0b81227e843fdca6692ae80e5a5d414116d4803fca | 59c120fd0410194fb8a0da55bd0b81227e843fdca6692ae80e5a5d414116d4803fca | |||
| 7d8c30eaaae57e44a1816ebb5c5b0606c536246c7f11985d731684150b63c9a3ad9e | 7d8c30eaaae57e44a1816ebb5c5b0606c536246c7f11985d731684150b63c9a3ad9e | |||
| 41b04c0b5b27cb188a692c84696b742a80d3cd00ab891f2457443dadfeba6d6daf10 | 41b04c0b5b27cb188a692c84696b742a80d3cd00ab891f2457443dadfeba6d6daf10 | |||
| 8602be26d7071803c67105a5426838e6889d77e8474b29244cefaf418e381b312048 | 8602be26d7071803c67105a5426838e6889d77e8474b29244cefaf418e381b312048 | |||
| b457d73419213063c60ee7b0d81820165864fef93523c9635c22210956e53a8d9632 | b457d73419213063c60ee7b0d81820165864fef93523c9635c22210956e53a8d9632 | |||
| 2493ffc58d845368e2416e078e5bcb5d2fd68ae6acfa54f9627c42e84a9d3f277401 | 2493ffc58d845368e2416e078e5bcb5d2fd68ae6acfa54f9627c42e84a9d3f277401 | |||
| 7e32ebca06308a12ecc290c7cd1156dcccfb2311 | 7e32ebca06308a12ecc290c7cd1156dcccfb2311 | |||
| q = c601a9caea66dc3835827b539db9df6f6f5ae77244692780cd334a006ab353c8 | q = c601a9caea66dc3835827b539db9df6f6f5ae77244692780cd334a006ab353c8 | |||
| 06426b60718c05245650821d39445d3ab591ed10a7339f15d83fe13f6a3dfb20b945 | 06426b60718c05245650821d39445d3ab591ed10a7339f15d83fe13f6a3dfb20b945 | |||
| skipping to change at line 1272 ¶ | skipping to change at line 1063 ¶ | |||
| e7b8016ca9ad11b835756df862c465c420535e25faa48bf341f7ee8192be47fa8757 | e7b8016ca9ad11b835756df862c465c420535e25faa48bf341f7ee8192be47fa8757 | |||
| 91f32f56d5e631d237060688f052426dee5b0b2b74ca5f830e82a453379eedb541fa | 91f32f56d5e631d237060688f052426dee5b0b2b74ca5f830e82a453379eedb541fa | |||
| 4fcdaa19dae6509401e3cdd4c40f5c9243db3f6d7115c4e8cd6db8290723ab01d9d0 | 4fcdaa19dae6509401e3cdd4c40f5c9243db3f6d7115c4e8cd6db8290723ab01d9d0 | |||
| d7e355a97a01547800e43f11736668c3f8908848d759c33a67a2f506abc3f6871cbe | d7e355a97a01547800e43f11736668c3f8908848d759c33a67a2f506abc3f6871cbe | |||
| 625b1bc71eb06d785a59501396712c581a60d6ccc450d2f4eb4cf08ae0dbfa45c286 | 625b1bc71eb06d785a59501396712c581a60d6ccc450d2f4eb4cf08ae0dbfa45c286 | |||
| 0425be90cc4cd4c989495bbd2963e19c59ae5d90d1ca884e80d654b5f2cd6a80c358 | 0425be90cc4cd4c989495bbd2963e19c59ae5d90d1ca884e80d654b5f2cd6a80c358 | |||
| 8b514ee91c802736f594c340397b316a97e9c70b0609955b6c3ee06f4760d9377f07 | 8b514ee91c802736f594c340397b316a97e9c70b0609955b6c3ee06f4760d9377f07 | |||
| 97a0411a244db395bb8b711ef79fbcb5589226174029be79a72dcd6f4ca566b7b1b9 | 97a0411a244db395bb8b711ef79fbcb5589226174029be79a72dcd6f4ca566b7b1b9 | |||
| a27e43b5c02a9a579d60bdda183398d66d76e0e8eceb1af2f27633589d043bcdc041 | a27e43b5c02a9a579d60bdda183398d66d76e0e8eceb1af2f27633589d043bcdc041 | |||
| 683b31f7f1 | 683b31f7f1 | |||
| ]]></artwork> | ]]></sourcecode> | |||
| </section> | </section> | |||
| <section anchor="rsabssa-sha384-pss-deterministic-test-vector"> | <section anchor="rsabssa-sha384-pss-deterministic-test-vector"> | |||
| <name>RSABSSA-SHA384-PSS-Deterministic Test Vector</name> | <name>RSABSSA-SHA384-PSS-Deterministic Test Vector</name> | |||
| <artwork><![CDATA[ | <sourcecode name="" type="test-vectors"><![CDATA[ | |||
| p = e1f4d7a34802e27c7392a3cea32a262a34dc3691bd87f3f310dc756734889305 | p = e1f4d7a34802e27c7392a3cea32a262a34dc3691bd87f3f310dc756734889305 | |||
| 59c120fd0410194fb8a0da55bd0b81227e843fdca6692ae80e5a5d414116d4803fca | 59c120fd0410194fb8a0da55bd0b81227e843fdca6692ae80e5a5d414116d4803fca | |||
| 7d8c30eaaae57e44a1816ebb5c5b0606c536246c7f11985d731684150b63c9a3ad9e | 7d8c30eaaae57e44a1816ebb5c5b0606c536246c7f11985d731684150b63c9a3ad9e | |||
| 41b04c0b5b27cb188a692c84696b742a80d3cd00ab891f2457443dadfeba6d6daf10 | 41b04c0b5b27cb188a692c84696b742a80d3cd00ab891f2457443dadfeba6d6daf10 | |||
| 8602be26d7071803c67105a5426838e6889d77e8474b29244cefaf418e381b312048 | 8602be26d7071803c67105a5426838e6889d77e8474b29244cefaf418e381b312048 | |||
| b457d73419213063c60ee7b0d81820165864fef93523c9635c22210956e53a8d9632 | b457d73419213063c60ee7b0d81820165864fef93523c9635c22210956e53a8d9632 | |||
| 2493ffc58d845368e2416e078e5bcb5d2fd68ae6acfa54f9627c42e84a9d3f277401 | 2493ffc58d845368e2416e078e5bcb5d2fd68ae6acfa54f9627c42e84a9d3f277401 | |||
| 7e32ebca06308a12ecc290c7cd1156dcccfb2311 | 7e32ebca06308a12ecc290c7cd1156dcccfb2311 | |||
| q = c601a9caea66dc3835827b539db9df6f6f5ae77244692780cd334a006ab353c8 | q = c601a9caea66dc3835827b539db9df6f6f5ae77244692780cd334a006ab353c8 | |||
| 06426b60718c05245650821d39445d3ab591ed10a7339f15d83fe13f6a3dfb20b945 | 06426b60718c05245650821d39445d3ab591ed10a7339f15d83fe13f6a3dfb20b945 | |||
| skipping to change at line 1413 ¶ | skipping to change at line 1204 ¶ | |||
| 7d9286f5c1d193f1454c9f868a57816bf5ff76c838a2eeb616a3fc9976f65d4371de | 7d9286f5c1d193f1454c9f868a57816bf5ff76c838a2eeb616a3fc9976f65d4371de | |||
| ecfbab29362caebdff69c635fe5a2113da4d4d8c24f0b16a0584fa05e80e607c5d9a | ecfbab29362caebdff69c635fe5a2113da4d4d8c24f0b16a0584fa05e80e607c5d9a | |||
| 2f765f1f069f8d4da21f27c2a3b5c984b4ab24899bef46c6d9323df4862fe51ce300 | 2f765f1f069f8d4da21f27c2a3b5c984b4ab24899bef46c6d9323df4862fe51ce300 | |||
| fca40fb539c3bb7fe2dcc9409e425f2d3b95e70e9c49c5feb6ecc9d43442c33d5000 | fca40fb539c3bb7fe2dcc9409e425f2d3b95e70e9c49c5feb6ecc9d43442c33d5000 | |||
| 3ee936845892fb8be475647da9a080f5bc7f8a716590b3745c2209fe05b17992830c | 3ee936845892fb8be475647da9a080f5bc7f8a716590b3745c2209fe05b17992830c | |||
| e15f32c7b22cde755c8a2fe50bd814a0434130b807dc1b7218d4e85342d70695a5d7 | e15f32c7b22cde755c8a2fe50bd814a0434130b807dc1b7218d4e85342d70695a5d7 | |||
| f29306f25623ad1e8aa08ef71b54b8ee447b5f64e73d09bdd6c3b7ca224058d7c67c | f29306f25623ad1e8aa08ef71b54b8ee447b5f64e73d09bdd6c3b7ca224058d7c67c | |||
| c7551e9241688ada12d859cb7646fbd3ed8b34312f3b49d69802f0eaa11bc4211c2f | c7551e9241688ada12d859cb7646fbd3ed8b34312f3b49d69802f0eaa11bc4211c2f | |||
| 7a29cd5c01ed01a39001c5856fab36228f5ee2f2e1110811872fe7c865c42ed59029 | 7a29cd5c01ed01a39001c5856fab36228f5ee2f2e1110811872fe7c865c42ed59029 | |||
| c706195d52 | c706195d52 | |||
| ]]></artwork> | ]]></sourcecode> | |||
| </section> | </section> | |||
| <section anchor="rsabssa-sha384-psszero-deterministic-test-vector"> | <section anchor="rsabssa-sha384-psszero-deterministic-test-vector"> | |||
| <name>RSABSSA-SHA384-PSSZERO-Deterministic Test Vector</name> | <name>RSABSSA-SHA384-PSSZERO-Deterministic Test Vector</name> | |||
| <artwork><![CDATA[ | <sourcecode name="" type="test-vectors"><![CDATA[ | |||
| p = e1f4d7a34802e27c7392a3cea32a262a34dc3691bd87f3f310dc756734889305 | p = e1f4d7a34802e27c7392a3cea32a262a34dc3691bd87f3f310dc756734889305 | |||
| 59c120fd0410194fb8a0da55bd0b81227e843fdca6692ae80e5a5d414116d4803fca | 59c120fd0410194fb8a0da55bd0b81227e843fdca6692ae80e5a5d414116d4803fca | |||
| 7d8c30eaaae57e44a1816ebb5c5b0606c536246c7f11985d731684150b63c9a3ad9e | 7d8c30eaaae57e44a1816ebb5c5b0606c536246c7f11985d731684150b63c9a3ad9e | |||
| 41b04c0b5b27cb188a692c84696b742a80d3cd00ab891f2457443dadfeba6d6daf10 | 41b04c0b5b27cb188a692c84696b742a80d3cd00ab891f2457443dadfeba6d6daf10 | |||
| 8602be26d7071803c67105a5426838e6889d77e8474b29244cefaf418e381b312048 | 8602be26d7071803c67105a5426838e6889d77e8474b29244cefaf418e381b312048 | |||
| b457d73419213063c60ee7b0d81820165864fef93523c9635c22210956e53a8d9632 | b457d73419213063c60ee7b0d81820165864fef93523c9635c22210956e53a8d9632 | |||
| 2493ffc58d845368e2416e078e5bcb5d2fd68ae6acfa54f9627c42e84a9d3f277401 | 2493ffc58d845368e2416e078e5bcb5d2fd68ae6acfa54f9627c42e84a9d3f277401 | |||
| 7e32ebca06308a12ecc290c7cd1156dcccfb2311 | 7e32ebca06308a12ecc290c7cd1156dcccfb2311 | |||
| q = c601a9caea66dc3835827b539db9df6f6f5ae77244692780cd334a006ab353c8 | q = c601a9caea66dc3835827b539db9df6f6f5ae77244692780cd334a006ab353c8 | |||
| 06426b60718c05245650821d39445d3ab591ed10a7339f15d83fe13f6a3dfb20b945 | 06426b60718c05245650821d39445d3ab591ed10a7339f15d83fe13f6a3dfb20b945 | |||
| skipping to change at line 1553 ¶ | skipping to change at line 1344 ¶ | |||
| a0d5b0bae3ab085b658692579a376740ff6ce69e89b06f360520b864e33d82d029c8 | a0d5b0bae3ab085b658692579a376740ff6ce69e89b06f360520b864e33d82d029c8 | |||
| 08248a19e18e31f0ecd16fac5cd4870f8d3ebc1c32c718124152dc905672ab0b7af4 | 08248a19e18e31f0ecd16fac5cd4870f8d3ebc1c32c718124152dc905672ab0b7af4 | |||
| 8bf7d1ac1ff7b9c742549c91275ab105458ae37621757add83482bbcf779e777bbd6 | 8bf7d1ac1ff7b9c742549c91275ab105458ae37621757add83482bbcf779e777bbd6 | |||
| 1126e93686635d4766aedf5103cf7978f3856ccac9e28d21a850dbb03c811128616d | 1126e93686635d4766aedf5103cf7978f3856ccac9e28d21a850dbb03c811128616d | |||
| 315d717be1c2b6254f8509acae862042c034530329ce15ca2e2f6b1f5fd59272746e | 315d717be1c2b6254f8509acae862042c034530329ce15ca2e2f6b1f5fd59272746e | |||
| 3918c748c0eb810bf76884fa10fcf749326bbfaa5ba285a0186a22e4f628dbf178d3 | 3918c748c0eb810bf76884fa10fcf749326bbfaa5ba285a0186a22e4f628dbf178d3 | |||
| bb5dc7e165ca73f6a55ecc14c4f5a26c4693ce5da032264cbec319b12ddb9787d0ef | bb5dc7e165ca73f6a55ecc14c4f5a26c4693ce5da032264cbec319b12ddb9787d0ef | |||
| a4fcf1e5ccee35ad85ecd453182df9ed735893f830b570faae8be0f6fe2e571a4e0d | a4fcf1e5ccee35ad85ecd453182df9ed735893f830b570faae8be0f6fe2e571a4e0d | |||
| 927cba4debd368d3b4fca33ec6251897a137cf75474a32ac8256df5e5ffa518b88b4 | 927cba4debd368d3b4fca33ec6251897a137cf75474a32ac8256df5e5ffa518b88b4 | |||
| 3fb6f63a24 | 3fb6f63a24 | |||
| ]]></artwork> | ]]></sourcecode> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| <section numbered="false" anchor="acknowledgments"> | <section numbered="false" anchor="acknowledgments"> | |||
| <name>Acknowledgments</name> | <name>Acknowledgments</name> | |||
| <t>We would like to thank Bjoern Tackmann who provided an editorial and se curity review of this document.</t> | <t>We would like to thank <contact fullname="Bjoern Tackmann"/>, who provi ded an editorial and security review of this document.</t> | |||
| </section> | </section> | |||
| </back> | </back> | |||
| <!-- ##markdown-source: | ||||
| H4sIAAAAAAAAA+y963YcyZWl+d+fwjv1o8gZAPT7hVNqNfNCicoL2USmVFVd | ||||
| vZLm5uZAFIEIVFzIhHKpnmWeZZ5svm1+CY8AwExpZrqn10JWiQQDHu52OWef | ||||
| vY8dMz89PQ22i+2Vex6+PX8Rfn61WLbh+eJiaba7tdsEpmnW7sMDv2xXdmmu | ||||
| +Wq7Nt32dLHedqe2W1+crjfmtNHVp5vp6tM4C1qzdc8Dy58Xq/Xt83Cx7FZB | ||||
| sLhZPw+3691mm0RRHSXBe3f7cbVun4evllu3Xrrt6Zd6QBBstmbZ/miuVkse | ||||
| eksLbhbPw/+2XdmTcLNab9eu2/DT7bV++O9BYHbby9X6eRCehjxq8zx8eRZ+ | ||||
| 6ZaLTRDyX9/0l2uzfD/7dLW+4EOz2V7d8nh75j9012Zx9Tzs2v8SRd0ZDTq4 | ||||
| 5R+NXTWH93StWy/s/Df+vi9ubq7c3dsOl5/9m7/8vxhddWZX1/unfHEWvjgL | ||||
| /7xatbPHfHG5Xmy2q5tLtz74rX/UF1erXdtdmbWbP8qaj//l0pmbxfKiWWw3 | ||||
| viuBZmF9bbaLD0xOGP5+tbq4cn96891z/83BOj7jg7C5HX4bvl668M+Xi60L | ||||
| 35gbt/6sv9SsL9z2eXi53d5snj97xjSdXfjr1Ztnplntts8+3CyfXa4+LrZM | ||||
| 8XuNjR+UN+vFB8zirbsyt4fPXfiehMMFob8ifP3BrT8s3Mf7n/vx48ezaRCf | ||||
| Laxu8Axj3Tzrb/bjcLMf/c1+HG/245fOJlESn920Hfd9s3bb7S39bd9c0hP/ | ||||
| HXvUuP4aDQot1FXhcNnDDdttsLWfzpikZ3a17NzaLa171n+6cXa3Xmxvk/jZ | ||||
| DS7jlltmZbV8trGX14vt1t9zMmr/32lvH2/OwvPZNdPnn5+Fb83Fpflglvzi | ||||
| z9/W9WH7f1i+X64+LkM87nRzibGEZrs19v0mXC3D7aULN30LTrer0+HH8Mn5 | ||||
| 9+dPw5v1Cr9bXfUdxeHozJYGj07rrzVXWCWzfLm60Q3f7AAFG37tbsMv1rc3 | ||||
| 29XF2txc3vo7eGgIX9vtqnHrkzCu6/rh7p6fAUbmvTv98+Jqs1oe/hJX+NYt | ||||
| 3V+cjOvrb97+UxIddvo1LTGLNT5wiqe6Y1zTSLprt+FufgheXF24Zm1o+O/X | ||||
| q91N+O2qdVf3z6+74a7bs4Wxaz/BWFP0LI7KeNbFc3ezdde+k/r1w53841n4 | ||||
| NTi0dOs7n3+z2mwOP/yWiV5hMNz34s7l/7Tjoz9+/XWcHQxE+Nnb1Q6Mfn2z | ||||
| XVwzVW/MZiPcPX3D3Dq7dQyKs1h4eI5pMFwh6Bt+f/rmxddfjYMzfef1EsC8 | ||||
| /luGJs6eFXk0G5kXuwtigIaFUPGpuf8jhmrfL4bPB8D74YvwFW68dCfhFy9O | ||||
| wh/OX9wxi68X5nZhNkffW4J76w1eF6668AWdWhJEfo9hWHd4hz9wh7X5aP9y | ||||
| +/7wFq8+/xZc2jiztpcn4Xf/PD79m9tNkhza3vng4eELnON2s9jooQTX08/P | ||||
| z1/8aqNKnlV1/vAQ0VUefWuWm/fm1vC7z78516TerDbm6rA9/23Aq9MbJvK/ | ||||
| h1/95H33KmRIFt3CNIsrGvs8NCHuLVNwcnx/n/sbqzCjYWBMzxZu2/kW64Nn | ||||
| 15sLQG3/sGeff/n69eX5Nx8/T3c//NF2ny82m2L5w8t888OLZzOr+OPu6vaX | ||||
| XOXPdNi0in5vVle3WLN7+/r8jtPLXp8slk9HlPVD//r8b3DlOsv/xpZBDz53 | ||||
| y0tzTdgxh7/6nka7mxVP+XX+/Xq93t11enP7fvVBd5YRvfzyD4e9fovHrq75 | ||||
| qrFXIJoA/g0/bxcWQwhf4L5r0y4urkMYACRIbE1+/lXXLewCNA/fDDC/uX+U | ||||
| 7MZ9dM3Zzm7aM9funv3H9eJysX52I06webZeDaH0Pnj/hP1+q0G7mrjLPMq9 | ||||
| XV2Yj0Yh44tLs7uu0oP+HjNU360fllu67ExzJbi6vaZbmzudoS8b6/vCX2e7 | ||||
| S3vl+4MPXTzbOoNB84Pd2EWepNmfXTP68UtzdQVexc98c+6Q3rM3X76c9T+u | ||||
| q/Thbn951nfqU/j0hbla0KnlwpyE5wZ+EH5u1g2zOGLOW3cNeH+/uKbBL/pY | ||||
| fmQS/oKwvyIcLjm0jAfm2ofsM3FwWjDMdwupG6d7s7k63frbHk37t8b7SZTe | ||||
| 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 | ||||
| f8BFj726PdMQusn74CHdxDL6MVCQmPdCuQsRocXFqVzfDL/0vn/GyPRk5ceh | ||||
| Qz/ulsoXXD/59iT87unz8Pdu2d/UDBeehMMV2MM+uLbjgIRvNSJu+9ERyL/l | ||||
| U3sFwn3ow8Z3oftp+DfgcubOTrjkH38bvg3/MfxObWkW2x+v3PLJ8qmmxAOz | ||||
| n2bB8TXuvQ+iWo3yjKQPkxNI9Fax2izmsxQudfOFpnjjfrxetU9+OgnvPEMo | ||||
| NhA9/1V/tZ71k/LUoeASoFxciQj85PuznEiVXYmMXTv/nM2PduX/NT7mrRO3 | ||||
| 1pKlO/7y+MXeyzp8iEfSnPXHxcbfTcOx4R7yF36+ADw9kZrN8ImfX1nbfj79 | ||||
| EE6Ttxw+7a+aQp3dL6r0ZPHUpzrdePUw3Bf9bVbeXJTXNdsnP0Un4dkZE/jT | ||||
| d34c9aFbTtJ3bn9nwmZm3sgLTjCP4RbRT1F8EvJnEqX+7yzKo+Jp+Fv9HOvT | ||||
| /hM9dcO8+OFcnIT/th/RvjsDM5h77ruf3gnN19tJoKy6buO24bvFOz/ScgWN | ||||
| gUT++Kt/e3eyN9jDVg8NOGzYSUj786HBs+aCc8fBd0yLhj//xkJ/9my9B8L7 | ||||
| 4vWbGUc24fYjhkJ/bveQN3oZ83jl8xHql8SXWwcT2bkNxxSF3GQgO+E7wjPN | ||||
| 1sOebN6f9Iz7x+vNxdN3I1F6N33GhcguMdIn/opgkMKuJ6k+49PP+pz7jeTr | ||||
| Hd95N5JMr+d9FPct7o3+3eb9O3WSz4Px22NiWZH2+Lt9F1E5zgGUFtg+XS1a | ||||
| opWYEewNF/XLkYSh6d6DCbvW8yofY8YwsU9L/HAzqgy3nXp0QLT2j8cXzXrp | ||||
| icOl52t+1Mxm1rvxEg32OzjIMtQELuzuyqxP+jtLam0evqta4McvoGf7Cekt | ||||
| +O6D5t+i32e9be0zH8QIANsTp261W88ix+npOMUnvR0Of8lA+kl6qdQEdFyX | ||||
| 6t8D8ZeEAS60LKjbTukwhaDBPO8Yp5YxtoNdDGG8v+YfNpP1+L4Ggw0NZuIt | ||||
| 9eb90+lb/e1m39JlM2Ek3n88CI27WCw3h2Y42HKvefeW2xMoWWJvexORh1D8 | ||||
| x3/8R/CQg/hf+qcOt1fKgx4RkqRde6x6QFbc95yBU+tJ8tQPPM5PzpObA8+9 | ||||
| /7HERGjqu9k93o0qrR8++fsCwuyvphnScUMjh4EIHmrTjz2KTJbiJ2j2pFmT | ||||
| BvO+0yTdYmrQCAqzBnWD2W0O2d49LerbMprp4dgMrdLD/AjOGrbPTRw8AN88 | ||||
| 9rfBjY9A4oSf12vY2VL6d/QKz8+Cvj8br4D6nMhsxv3twtUwKns4nXBz9vg+ | ||||
| Xu/nLJgZ+bsbEK4RzH9YvR8vI56c97Lq9E9fvX318p/lolsx8b2YC37++dz1 | ||||
| rlqdxWeJxmDPOs884Zi8foSKMVey6fHLXjr7Hi/hIwlBxeSppftMag/U8yTA | ||||
| ANbX+tqI2L7aZxgn3eQwRdFnQwddcATcPsdxs7D+4pPDiVzv8HazGaTGZjCW | ||||
| MAy/8JPj7USmGt7737kf7hF4+Nrp3/OfJ+APYEUY/lr3Du5v4sENHrxm35j/ | ||||
| fM+NfqU3P3j3/Q0evOQfZ8PBRX+Ht75aDumGa6M2rafwvOmtGNxwQxamB/df | ||||
| GdGCfRjsM56jCL1DECB2vxnvCpHrSfLiL71FB8G3Y7rJX2H6No2pmeagTZM/ | ||||
| nQzEZ0ReXTfB3wTAB5FIbZ+SKb55A3LIo/wgjni6DzLyp303vvcEz+cIPnLl | ||||
| 7Y3znGDW7j01eK6MCexLudLbey8ZU1XjcNCS+y7rAeWTdxoQRDn2gQFMaKik | ||||
| kc8G8JTNUH3oR8+LyHcHjvVqeEbPVgcC8AutC83u4nrKMd19tmouN5fDXQT1 | ||||
| Z8Gf3TC5k5WME6hbTDd+N7Tq7diAJxPN9tNs3jsPUP0zzTTn76bAM6Df5nCM | ||||
| 74kTynNt9smGvoeLMSHTOADwrMe/e9skF+NWYORp6N3wPiJ0cig9g+C1D6D+ | ||||
| SzMPPsqjDOnkNBkU29VqeeEDH8Yl2ArOt+6Ge8Rn+uePzFC3+IkZHbRsmjwN | ||||
| krMDEB005P7qHsaD9GwM6dPVPXz8ZhRlP//G+8WgvPrPptny+dd+IfPQCDQR | ||||
| /nsbZUW9SRxSUB+RVYnss419G2ZcbzZjw3AO6aw5E+uf3q9JHgj8YCL8Ihsb | ||||
| KIhXr0OO4qRvbp+QUuz/05vYN/irbwcS8NV3X7z+8ivv8mZzLwfYhPlZAgnQ | ||||
| 12roQHxIB46SUJjKAL7TyHU+iPfJ3WX4me+02ujW69X6s/6vkyPj3IRD+hPH | ||||
| X98GB35jLoD5HjRwgGaoLPPrJ0tlr3ry4BPS/t4+DbCBf6k81qd03cXV4mLR | ||||
| XLmzPqM83Vp8zFxtVn02Z2oyo+mXovzETy3u3VSdsQN7H9YoVt0epzbhk6vF | ||||
| e3dnbeZp+NG7tr8xhnF/73c3Wt6ffVVmNLIq5WV6H5p3YRidnln1/Z9zqqlC | ||||
| W5eKVwWtVlO4je/tbNSYynlCcf4MzyjpcW9Q00js7cdb7xqVzeitboblU3/b | ||||
| oI9Fs/HcnIV/WH103sz9Y/x1mgqlz1bWokf7soFBuQ9mvNgM7WhPgs1q/tUh | ||||
| a+8TNu1+pfwKiSsrGYxCDfE+PiDfnlr1kKeCtmut+PSwpwW73UY5yJ5HDhm3 | ||||
| Mb826gTla4ZrwyXf+4PZXPZf0DrUfgj7ZPaq/3Qe0U/Db3//sv/Gtdm8H/MT | ||||
| 85CkrJe52v5iW3RR+GTkGZtvvNYMB889AHX1ehBiMwHxhNu7p38v5h+w10PU | ||||
| p31Dk2fD2udh54g1DdKwenS8RLfcM7XgKz+peu5n+4aufDj57Hn41ix0K61S | ||||
| 3BPGRbSGa8Mn6/5SgvURRj5VtvGzcRluQK9funWPfdOXfunuR9h4392n3PPk | ||||
| Io2WS3ay49NjqLp7g1mf59np3vu1KLyPt0PMGcLqUXuf9HR8yspLr/Q36S3e | ||||
| G7HP7AyWehheekibPEwxnLhxHJX8aPmQO0Cu/8B/t/d0/4Dt6kbB/ZpGzhdc | ||||
| nsza/zTIzkLLBbMM/LUy8EHuH2w1Hj7FPj7jIdhXN6enFmfMwm8fWieJ/QPK | ||||
| s0G6zRcZ1v5XlX/27PPeXOZNuDdYHrShPgvFh3pQ9PC1fhrE0Vn4Fz59ch3+ | ||||
| b+FPT/tViiBmUmde6du0X4968peTuTtyk2RiTMdKdJ8lmRrYGbtlRtahX+9s | ||||
| Rl5N4LOX2k4wrpUNo7NfIfK1CD4Myw9vb/r1hrBVJP2wgNm6fxuSERtl3FUT | ||||
| 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 | ||||
| x/MRHvuP3j+dPedkqO+Zb7+9hKvJ3fXSsXEXrt9zppfHjRLwLn35xZt4Eemr | ||||
| dX32+uAg8KFWd3jQvw6nzDyf0jj3sPBf8bi+Atcv2Y4U1R+QPigbLw9nuu+w | ||||
| HvTeY5U05MPWi3/90Q/J9zM6h8Huek4/5oUPyt72qz2/+ESatq9N3g4dwWTp | ||||
| ntLrGz8lotDPB9lzdXs6qwsUt95Nu932Z6IfZHzO5qfc6vY+eRFmlZRDtD/i | ||||
| dhjoob/jeQLT+E80//tPbJHU/e9UZg/HBB+O4bTmNx238yuMc9jP+K+zA83+ | ||||
| Vdvnno8n2vS+OBB791NfqtyG7W46h7IfpKFmOJw/9O4j/bBMtx9WvO9Q8kGV | ||||
| fjJfMMMbv9XtJvxt6OIua0uTZlWUuKS0ZVonJrXOpIlJCn7MWpsWddy0Vdml | ||||
| XRpHrS3zgvhYVXUa5UFe2ziJujbK4iius66pTNSaPG/aqKniJCldlaVda01R | ||||
| cGdXRS43eZvFWRwXLU9NO2uCsq1sGjljjMtLl2UmruLCNU1u8yYqosLmaZFk | ||||
| hS27OK6rvC3TuKiyOI+aIrW1SU1buyCLmyizUZM39KOJq8rwRFtlRV00ZZaY | ||||
| KmpT20aRaao67pIsL7MsbU3bucYUbdGaLo6CqoiSxiVFW0ZlTOtsUcYRLc6S | ||||
| okorV9DrtlSfyqxJ6iTLrOtMl8WVS6u4SRmKrAoa7k0bs7hO4jSiiUXkXNlE | ||||
| bRVXSRQXeVVknevqNE9ofpHmNkmSOKrzwuWpqVo+SoIkq9Ous3nVVhndr1yS | ||||
| MSZRWbm8sU3eJl1bVMYVxnY0r6sLep0ltMzUbdolZZlFcVC6NHGNNTQiqkyc | ||||
| OGuTOrKlbeM4L1prbdckaRwH/66Dt4ooNrU1jrli1qs0r5KyydO6beq2K/i/ | ||||
| 3LiypNMMbFlFtk3TzERRYZo0T20VRAXD1BQaORvljHCRR1USt2mdZXmbmiav | ||||
| Y9fGkSnTtO7ivK3SzsVpV5i0pR1Ro5fqJbYwdUNPjMH+isrWZdR2qTVtw2jW | ||||
| XRVlpq2SJG3zIo6qtmtdGjWmbNOidHXDzQ0tsVnXNoYxqtvWFUURd5h2R+cz | ||||
| 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 | ||||
| /wAA | ||||
| </rfc> | </rfc> | |||
| End of changes. 132 change blocks. | ||||
| 1139 lines changed or deleted | 325 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. | ||||