rfc9729v2.txt   rfc9729.txt 
Internet Engineering Task Force (IETF) D. Schinazi Internet Engineering Task Force (IETF) D. Schinazi
Request for Comments: 9729 Google LLC Request for Comments: 9729 Google LLC
Category: Standards Track D. Oliver Category: Standards Track D. Oliver
ISSN: 2070-1721 Guardian Project ISSN: 2070-1721 Guardian Project
J. Hoyland J. Hoyland
Cloudflare Inc. Cloudflare Inc.
January 2025 February 2025
The Concealed HTTP Authentication Scheme The Concealed HTTP Authentication Scheme
Abstract Abstract
Most HTTP authentication schemes are probeable in the sense that it Most HTTP authentication schemes are probeable in the sense that it
is possible for an unauthenticated client to probe whether an origin is possible for an unauthenticated client to probe whether an origin
serves resources that require authentication. It is possible for an serves resources that require authentication. It is possible for an
origin to hide the fact that it requires authentication by not origin to hide the fact that it requires authentication by not
generating Unauthorized status codes; however, that only works with generating Unauthorized status codes; however, that only works with
skipping to change at line 206 skipping to change at line 206
scheme portion of a URI as defined in Section 3.1 of [URI]. scheme portion of a URI as defined in Section 3.1 of [URI].
Host: The host for this request, encoded using the format of the Host: The host for this request, encoded using the format of the
host portion of a URI as defined in Section 3.2.2 of [URI]. host portion of a URI as defined in Section 3.2.2 of [URI].
Port: The port for this request, encoded in network byte order. Port: The port for this request, encoded in network byte order.
Note that the port is either included in the URI or is the default Note that the port is either included in the URI or is the default
port for the scheme in use; see Section 3.2.3 of [URI]. port for the scheme in use; see Section 3.2.3 of [URI].
Realm: The realm of authentication that is sent in the realm Realm: The realm of authentication that is sent in the realm
authentication parameter (Section 11.5 of [HTTP]). If the realm authentication parameter (see Section 11.5 of [HTTP]). If the
authentication parameter is not present, this SHALL be empty. realm authentication parameter is not present, this SHALL be
This document does not define a means for the origin to empty. This document does not define a means for the origin to
communicate a realm to the client. If a client is not configured communicate a realm to the client. If a client is not configured
to use a specific realm, it SHALL use an empty realm and SHALL NOT to use a specific realm, it SHALL use an empty realm and SHALL NOT
send the realm authentication parameter. send the realm authentication parameter.
The Signature Algorithm and Port fields are encoded as unsigned The Signature Algorithm and Port fields are encoded as unsigned
16-bit integers in network byte order. The Key ID, Public Key, 16-bit integers in network byte order. The Key ID, Public Key,
Scheme, Host, and Realm fields are length-prefixed strings; they are Scheme, Host, and Realm fields are length-prefixed strings; they are
preceded by a Length field that represents their length in bytes. preceded by a Length field that represents their length in bytes.
These length fields are encoded using the variable-length integer These length fields are encoded using the variable-length integer
encoding from Section 16 of [QUIC] and MUST be encoded in the minimum encoding from Section 16 of [QUIC] and MUST be encoded in the minimum
skipping to change at line 329 skipping to change at line 329
concealed-byte-sequence-param-value = *( ALPHA / DIGIT / "-" / "_" ) concealed-byte-sequence-param-value = *( ALPHA / DIGIT / "-" / "_" )
concealed-integer-param-value = %x31-39 1*4( DIGIT ) / "0" concealed-integer-param-value = %x31-39 1*4( DIGIT ) / "0"
Figure 4: Authentication Parameter Value ABNF Figure 4: Authentication Parameter Value ABNF
4.1. The k Parameter 4.1. The k Parameter
The REQUIRED "k" (key ID) Parameter is a byte sequence that The REQUIRED "k" (key ID) Parameter is a byte sequence that
identifies which key the client wishes to use to authenticate. This identifies which key the client wishes to use to authenticate. This
is used by the backend to point to an entry in a server-side database is used by the backend to point to an entry in a server-side database
of known keys; see Section 6.3. of known keys (see Section 6.3).
4.2. The a Parameter 4.2. The a Parameter
The REQUIRED "a" (public key) Parameter is a byte sequence that The REQUIRED "a" (public key) Parameter is a byte sequence that
specifies the public key used by the server to validate the signature specifies the public key used by the server to validate the signature
provided by the client. This avoids key confusion issues (see provided by the client. This avoids key confusion issues (see
[SEEMS-LEGIT]). The encoding of the public key is described in [SEEMS-LEGIT]). The encoding of the public key is described in
Section 3.1.1. Section 3.1.1.
4.3. The p Parameter 4.3. The p Parameter
The REQUIRED "p" (proof) Parameter is a byte sequence that specifies The REQUIRED "p" (proof) Parameter is a byte sequence that specifies
the proof that the client provides to attest to possessing the the proof that the client provides to attest to possessing the
credential that matches its key ID. credential that matches its key ID.
4.4. The s Parameter 4.4. The s Parameter
The REQUIRED "s" (signature) Parameter is an integer that specifies The REQUIRED "s" (signature scheme) Parameter is an integer that
the signature scheme used to compute the proof transmitted in the p specifies the signature scheme used to compute the proof transmitted
Parameter. Its value is an integer between 0 and 65535 inclusive in the p Parameter. Its value is an integer between 0 and 65535
from the IANA "TLS SignatureScheme" registry maintained at inclusive from the IANA "TLS SignatureScheme" registry maintained at
<https://www.iana.org/assignments/tls-parameters/tls- <https://www.iana.org/assignments/tls-parameters>.
parameters.xhtml#tls-signaturescheme>.
4.5. The v Parameter 4.5. The v Parameter
The REQUIRED "v" (verification) Parameter is a byte sequence that The REQUIRED "v" (verification) Parameter is a byte sequence that
specifies the verification that the client provides to attest to specifies the verification that the client provides to attest to
possessing the key exporter output (see Section 3.2 for details). possessing the key exporter output (see Section 3.2 for details).
This avoids issues with signature schemes where certain keys can This avoids issues with signature schemes where certain keys can
generate signatures that are valid for multiple inputs (see generate signatures that are valid for multiple inputs (see
[SEEMS-LEGIT]). [SEEMS-LEGIT]).
skipping to change at line 586 skipping to change at line 585
http-authschemes>: http-authschemes>:
Authentication Scheme Name: Concealed Authentication Scheme Name: Concealed
Reference: RFC 9729 Reference: RFC 9729
Notes: None Notes: None
9.2. TLS Keying Material Exporter Labels 9.2. TLS Keying Material Exporter Labels
IANA has registered the following entry in the "TLS Exporter Labels" IANA has registered the following entry in the "TLS Exporter Labels"
registry maintained at <https://www.iana.org/assignments/tls- registry maintained at <https://www.iana.org/assignments/tls-
parameters#exporter-labels>: parameters>:
Value: EXPORTER-HTTP-Concealed-Authentication Value: EXPORTER-HTTP-Concealed-Authentication
DTLS-OK: N DTLS-OK: N
Recommended: Y Recommended: Y
Reference: RFC 9729 Reference: RFC 9729
9.3. HTTP Field Name 9.3. HTTP Field Name
IANA has registered the following entry in the "Hypertext Transfer IANA has registered the following entry in the "Hypertext Transfer
Protocol (HTTP) Field Name Registry" maintained at Protocol (HTTP) Field Name Registry" maintained at
<https://www.iana.org/assignments/http-fields/http-fields.xhtml>: <https://www.iana.org/assignments/http-fields>:
Field Name: Concealed-Auth-Export Field Name: Concealed-Auth-Export
Status: permanent Status: permanent
Structured Type: Item Structured Type: Item
Reference: RFC 9729 Reference: RFC 9729
Comments: None Comments: None
10. References 10. References
10.1. Normative References 10.1. Normative References
[ABNF] Crocker, D., Ed. and P. Overell, "Augmented BNF for Syntax [ABNF] Crocker, D., Ed. and P. Overell, "Augmented BNF for Syntax
Specifications: ABNF", STD 68, RFC 5234, Specifications: ABNF", STD 68, RFC 5234,
DOI 10.17487/RFC5234, January 2008, DOI 10.17487/RFC5234, January 2008,
<https://www.rfc-editor.org/rfc/rfc5234>. <https://www.rfc-editor.org/info/rfc5234>.
[BASE64] Josefsson, S., "The Base16, Base32, and Base64 Data [BASE64] Josefsson, S., "The Base16, Base32, and Base64 Data
Encodings", RFC 4648, DOI 10.17487/RFC4648, October 2006, Encodings", RFC 4648, DOI 10.17487/RFC4648, October 2006,
<https://www.rfc-editor.org/rfc/rfc4648>. <https://www.rfc-editor.org/info/rfc4648>.
[EdDSA] Josefsson, S. and I. Liusvaara, "Edwards-Curve Digital [EdDSA] Josefsson, S. and I. Liusvaara, "Edwards-Curve Digital
Signature Algorithm (EdDSA)", RFC 8032, Signature Algorithm (EdDSA)", RFC 8032,
DOI 10.17487/RFC8032, January 2017, DOI 10.17487/RFC8032, January 2017,
<https://www.rfc-editor.org/rfc/rfc8032>. <https://www.rfc-editor.org/info/rfc8032>.
[HTTP] Fielding, R., Ed., Nottingham, M., Ed., and J. Reschke, [HTTP] Fielding, R., Ed., Nottingham, M., Ed., and J. Reschke,
Ed., "HTTP Semantics", STD 97, RFC 9110, Ed., "HTTP Semantics", STD 97, RFC 9110,
DOI 10.17487/RFC9110, June 2022, DOI 10.17487/RFC9110, June 2022,
<https://www.rfc-editor.org/rfc/rfc9110>. <https://www.rfc-editor.org/info/rfc9110>.
[KEY-EXPORT] [KEY-EXPORT]
Rescorla, E., "Keying Material Exporters for Transport Rescorla, E., "Keying Material Exporters for Transport
Layer Security (TLS)", RFC 5705, DOI 10.17487/RFC5705, Layer Security (TLS)", RFC 5705, DOI 10.17487/RFC5705,
March 2010, <https://www.rfc-editor.org/rfc/rfc5705>. March 2010, <https://www.rfc-editor.org/info/rfc5705>.
[PKCS1] Moriarty, K., Ed., Kaliski, B., Jonsson, J., and A. Rusch, [PKCS1] Moriarty, K., Ed., Kaliski, B., Jonsson, J., and A. Rusch,
"PKCS #1: RSA Cryptography Specifications Version 2.2", "PKCS #1: RSA Cryptography Specifications Version 2.2",
RFC 8017, DOI 10.17487/RFC8017, November 2016, RFC 8017, DOI 10.17487/RFC8017, November 2016,
<https://www.rfc-editor.org/rfc/rfc8017>. <https://www.rfc-editor.org/info/rfc8017>.
[QUIC] Iyengar, J., Ed. and M. Thomson, Ed., "QUIC: A UDP-Based [QUIC] Iyengar, J., Ed. and M. Thomson, Ed., "QUIC: A UDP-Based
Multiplexed and Secure Transport", RFC 9000, Multiplexed and Secure Transport", RFC 9000,
DOI 10.17487/RFC9000, May 2021, DOI 10.17487/RFC9000, May 2021,
<https://www.rfc-editor.org/rfc/rfc9000>. <https://www.rfc-editor.org/info/rfc9000>.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997, DOI 10.17487/RFC2119, March 1997,
<https://www.rfc-editor.org/rfc/rfc2119>. <https://www.rfc-editor.org/info/rfc2119>.
[RFC7627] Bhargavan, K., Ed., Delignat-Lavaud, A., Pironti, A., [RFC7627] Bhargavan, K., Ed., Delignat-Lavaud, A., Pironti, A.,
Langley, A., and M. Ray, "Transport Layer Security (TLS) Langley, A., and M. Ray, "Transport Layer Security (TLS)
Session Hash and Extended Master Secret Extension", Session Hash and Extended Master Secret Extension",
RFC 7627, DOI 10.17487/RFC7627, September 2015, RFC 7627, DOI 10.17487/RFC7627, September 2015,
<https://www.rfc-editor.org/rfc/rfc7627>. <https://www.rfc-editor.org/info/rfc7627>.
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
May 2017, <https://www.rfc-editor.org/rfc/rfc8174>. May 2017, <https://www.rfc-editor.org/info/rfc8174>.
[RFC8792] Watsen, K., Auerswald, E., Farrel, A., and Q. Wu, [RFC8792] Watsen, K., Auerswald, E., Farrel, A., and Q. Wu,
"Handling Long Lines in Content of Internet-Drafts and "Handling Long Lines in Content of Internet-Drafts and
RFCs", RFC 8792, DOI 10.17487/RFC8792, June 2020, RFCs", RFC 8792, DOI 10.17487/RFC8792, June 2020,
<https://www.rfc-editor.org/rfc/rfc8792>. <https://www.rfc-editor.org/info/rfc8792>.
[STRUCTURED-FIELDS] [STRUCTURED-FIELDS]
Nottingham, M. and P. Kamp, "Structured Field Values for Nottingham, M. and P. Kamp, "Structured Field Values for
HTTP", RFC 9651, DOI 10.17487/RFC9651, September 2024, HTTP", RFC 9651, DOI 10.17487/RFC9651, September 2024,
<https://www.rfc-editor.org/rfc/rfc9651>. <https://www.rfc-editor.org/info/rfc9651>.
[TLS] Rescorla, E., "The Transport Layer Security (TLS) Protocol [TLS] Rescorla, E., "The Transport Layer Security (TLS) Protocol
Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018,
<https://www.rfc-editor.org/rfc/rfc8446>. <https://www.rfc-editor.org/info/rfc8446>.
[URI] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform [URI] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform
Resource Identifier (URI): Generic Syntax", STD 66, Resource Identifier (URI): Generic Syntax", STD 66,
RFC 3986, DOI 10.17487/RFC3986, January 2005, RFC 3986, DOI 10.17487/RFC3986, January 2005,
<https://www.rfc-editor.org/rfc/rfc3986>. <https://www.rfc-editor.org/info/rfc3986>.
[X.690] ITU-T, "Information technology - ASN.1 encoding Rules: [X.690] ITU-T, "Information technology - ASN.1 encoding Rules:
Specification of Basic Encoding Rules (BER), Canonical Specification of Basic Encoding Rules (BER), Canonical
Encoding Rules (CER) and Distinguished Encoding Rules Encoding Rules (CER) and Distinguished Encoding Rules
(DER)", ITU-T Recommendation X690, ISO/IEC 8825-1:2021, (DER)", ITU-T Recommendation X690, ISO/IEC 8825-1:2021,
February 2021, <https://www.itu.int/rec/T-REC-X.690>. February 2021, <https://www.itu.int/rec/T-REC-X.690>.
10.2. Informative References 10.2. Informative References
[ED25519] Josefsson, S. and J. Schaad, "Algorithm Identifiers for [ED25519] Josefsson, S. and J. Schaad, "Algorithm Identifiers for
Ed25519, Ed448, X25519, and X448 for Use in the Internet Ed25519, Ed448, X25519, and X448 for Use in the Internet
X.509 Public Key Infrastructure", RFC 8410, X.509 Public Key Infrastructure", RFC 8410,
DOI 10.17487/RFC8410, August 2018, DOI 10.17487/RFC8410, August 2018,
<https://www.rfc-editor.org/rfc/rfc8410>. <https://www.rfc-editor.org/info/rfc8410>.
[HOBA] Farrell, S., Hoffman, P., and M. Thomas, "HTTP Origin- [HOBA] Farrell, S., Hoffman, P., and M. Thomas, "HTTP Origin-
Bound Authentication (HOBA)", RFC 7486, Bound Authentication (HOBA)", RFC 7486,
DOI 10.17487/RFC7486, March 2015, DOI 10.17487/RFC7486, March 2015,
<https://www.rfc-editor.org/rfc/rfc7486>. <https://www.rfc-editor.org/info/rfc7486>.
[HTTP/2] Thomson, M., Ed. and C. Benfield, Ed., "HTTP/2", RFC 9113, [HTTP/2] Thomson, M., Ed. and C. Benfield, Ed., "HTTP/2", RFC 9113,
DOI 10.17487/RFC9113, June 2022, DOI 10.17487/RFC9113, June 2022,
<https://www.rfc-editor.org/rfc/rfc9113>. <https://www.rfc-editor.org/info/rfc9113>.
[HTTP/3] Bishop, M., Ed., "HTTP/3", RFC 9114, DOI 10.17487/RFC9114, [HTTP/3] Bishop, M., Ed., "HTTP/3", RFC 9114, DOI 10.17487/RFC9114,
June 2022, <https://www.rfc-editor.org/rfc/rfc9114>. June 2022, <https://www.rfc-editor.org/info/rfc9114>.
[MASQUE-ORIGINAL] [MASQUE-ORIGINAL]
Schinazi, D., "The MASQUE Protocol", Work in Progress, Schinazi, D., "The MASQUE Protocol", Work in Progress,
Internet-Draft, draft-schinazi-masque-00, 28 February Internet-Draft, draft-schinazi-masque-00, 28 February
2019, <https://datatracker.ietf.org/doc/html/draft- 2019, <https://datatracker.ietf.org/doc/html/draft-
schinazi-masque-00>. schinazi-masque-00>.
[QUIC-TLS] Thomson, M., Ed. and S. Turner, Ed., "Using TLS to Secure [QUIC-TLS] Thomson, M., Ed. and S. Turner, Ed., "Using TLS to Secure
QUIC", RFC 9001, DOI 10.17487/RFC9001, May 2021, QUIC", RFC 9001, DOI 10.17487/RFC9001, May 2021,
<https://www.rfc-editor.org/rfc/rfc9001>. <https://www.rfc-editor.org/info/rfc9001>.
[SEEMS-LEGIT] [SEEMS-LEGIT]
Jackson, D., Cremers, C., Cohn-Gordon, K., and R. Sasse, Jackson, D., Cremers, C., Cohn-Gordon, K., and R. Sasse,
"Seems Legit: Automated Analysis of Subtle Attacks on "Seems Legit: Automated Analysis of Subtle Attacks on
Protocols That Use Signatures", CCS '19: Proceedings of Protocols That Use Signatures", CCS '19: Proceedings of
the 2019 ACM SIGSAC Conference on Computer and the 2019 ACM SIGSAC Conference on Computer and
Communications Security, pp. 2165-2180, Communications Security, pp. 2165-2180,
DOI 10.1145/3319535.3339813, November 2019, DOI 10.1145/3319535.3339813, November 2019,
<https://doi.org/10.1145/3319535.3339813>. <https://doi.org/10.1145/3319535.3339813>.
 End of changes. 25 change blocks. 
32 lines changed or deleted 31 lines changed or added

This html diff was produced by rfcdiff 1.48.