Internet DRAFT - draft-ladd-privacypass-bbs

draft-ladd-privacypass-bbs







Privacy Pass                                                     W. Ladd
Internet-Draft                                       Akamai Technologies
Intended status: Informational                          26 February 2024
Expires: 29 August 2024


                          BBS for PrivacyPass
                     draft-ladd-privacypass-bbs-01

Abstract

   Existing token types in privacy pass conflate attribution with rate
   limiting.  This document describes a token type where the issuer
   attests to a set of properties of the client, which the client can
   then selectively prove to the origin.  Repeated showings of the same
   credential are unlinkable, unlike other token types in privacy pass.

About This Document

   This note is to be removed before publishing as an RFC.

   The latest revision of this draft can be found at
   https://wbl.github.io/draft-ladd-bbs-privacypass/draft-ladd-
   privacypass-bbs.html.  Status information for this document may be
   found at https://datatracker.ietf.org/doc/draft-ladd-privacypass-
   bbs/.

   Discussion of this document takes place on the Privacy Pass Working
   Group mailing list (mailto:privacy-pass@ietf.org), which is archived
   at https://mailarchive.ietf.org/arch/browse/privacy-pass/.  Subscribe
   at https://www.ietf.org/mailman/listinfo/privacy-pass/.

   Source for this draft and an issue tracker can be found at
   https://github.com/wbl/draft-ladd-bbs-privacypass.

Status of This Memo

   This Internet-Draft is submitted in full conformance with the
   provisions of BCP 78 and BCP 79.

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF).  Note that other groups may also distribute
   working documents as Internet-Drafts.  The list of current Internet-
   Drafts is at https://datatracker.ietf.org/drafts/current/.







Ladd                     Expires 29 August 2024                 [Page 1]

Internet-Draft                  BBS PPAS                   February 2024


   Internet-Drafts are draft documents valid for a maximum of six months
   and may be updated, replaced, or obsoleted by other documents at any
   time.  It is inappropriate to use Internet-Drafts as reference
   material or to cite them other than as "work in progress."

   This Internet-Draft will expire on 29 August 2024.

Copyright Notice

   Copyright (c) 2024 IETF Trust and the persons identified as the
   document authors.  All rights reserved.

   This document is subject to BCP 78 and the IETF Trust's Legal
   Provisions Relating to IETF Documents (https://trustee.ietf.org/
   license-info) in effect on the date of publication of this document.
   Please review these documents carefully, as they describe your rights
   and restrictions with respect to this document.  Code Components
   extracted from this document must include Revised BSD License text as
   described in Section 4.e of the Trust Legal Provisions and are
   provided without warranty as described in the Revised BSD License.

Table of Contents

   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   3
   2.  Conventions and Definitions . . . . . . . . . . . . . . . . .   3
   3.  Protocol Overview . . . . . . . . . . . . . . . . . . . . . .   3
     3.1.  Issuance over generic transports  . . . . . . . . . . . .   3
       3.1.1.  Attribute Values  . . . . . . . . . . . . . . . . . .   3
       3.1.2.  Header Value  . . . . . . . . . . . . . . . . . . . .   4
       3.1.3.  Token Response  . . . . . . . . . . . . . . . . . . .   4
     3.2.  Redemption  . . . . . . . . . . . . . . . . . . . . . . .   4
   4.  HTTP Protocol with Public Metadata  . . . . . . . . . . . . .   5
     4.1.  Token Issuance  . . . . . . . . . . . . . . . . . . . . .   5
       4.1.1.  Client-to-Issuer Request  . . . . . . . . . . . . . .   5
       4.1.2.  Issuer-to-Client Response . . . . . . . . . . . . . .   6
       4.1.3.  Finalization  . . . . . . . . . . . . . . . . . . . .   7
       4.1.4.  Issuer Configuration  . . . . . . . . . . . . . . . .   7
     4.2.  Token Redemption  . . . . . . . . . . . . . . . . . . . .   8
       4.2.1.  Token Generation  . . . . . . . . . . . . . . . . . .   8
       4.2.2.  Token Verification  . . . . . . . . . . . . . . . . .   9
   5.  Privacy Pass integration  . . . . . . . . . . . . . . . . . .   9
   6.  Security Considerations . . . . . . . . . . . . . . . . . . .  10
   7.  Privacy Considerations  . . . . . . . . . . . . . . . . . . .  10
   8.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  10
   9.  References  . . . . . . . . . . . . . . . . . . . . . . . . .  10
     9.1.  Normative References  . . . . . . . . . . . . . . . . . .  10
     9.2.  Informative References  . . . . . . . . . . . . . . . . .  11
   Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . .  11



Ladd                     Expires 29 August 2024                 [Page 2]

Internet-Draft                  BBS PPAS                   February 2024


   Author's Address  . . . . . . . . . . . . . . . . . . . . . . . .  11

1.  Introduction

   In 2004 Boneh-Boyen-Shacham introduced the eponymous BBS signature.
   The BBS signature scheme as documented in [BBS] lets a signer sign a
   sequence of strings called attributes, and provides a way for a
   holder of a signature to prove possession and the value of some of
   the attributes.  This document explains how to use this technology
   with privacy pass.

2.  Conventions and Definitions

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
   "OPTIONAL" in this document are to be interpreted as described in
   BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all
   capitals, as shown here.

3.  Protocol Overview

   This protocol defines the use of Privacy Pass with selectively
   disclosable attributes, using [BBS] signatures and zero-knowledge
   proofs.  Those attributes must be agreed upon by Client, Attester,
   and Issuer during issuance.  Example of such attributes include
   public metadata values ([PPEXT]).

   To run this protocol the Issuer must have a public key and an
   issuance URL, as well as a common understanding of the meaning of
   each attribute string (sequence of octets).  E.g an age might be
   encoded as a single octet, or in ASCII numeric base 10
   representation, or a fixed field, and could be the first attribute in
   the list.

   After the successful completion of the Issuance protocol, the Client
   is able to use the received TokenResponse to generate multiple
   unlinkable tokens.

3.1.  Issuance over generic transports

3.1.1.  Attribute Values

   The Client begins by forming a sequence of strings corresponding to
   the attributes they wish signed.  They engage in the Attestation
   protocol with the Attestor, and then send the serialized array of
   attributes to the Issuer.  The way with which the list of attributes
   is communicated to the Issuer is considered protocol specific.  An
   option is to serialize the attributes as a base64 encoded JSON array.



Ladd                     Expires 29 August 2024                 [Page 3]

Internet-Draft                  BBS PPAS                   February 2024


   The Issuer MUST parse the received attributes list before signing,
   and verify that each attribute is permitted by their polishes.

   The Attestor interaction and validation of the attributes is not
   specified here.  In a split instantiation as per [PPARCH], Attestors
   and Issuers MUST ensure that the claims by the Client are not
   changeable between attestation and signing.

3.1.2.  Header Value

   Each attribute will be selectively disclosable by the Client during
   the redemption protocol.  Protocol and application critical
   information (for example, a token type) need to be included in the
   header input value of the BBS signature generation operation as
   defined in Section 3.4.1 (https://www.ietf.org/archive/id/draft-irtf-
   cfrg-bbs-signatures-03.html#name-signature-generation-sign) of [BBS].
   The header value will not be selectively disclosable, meaning that
   the Client will be required to reveal it during redemption.  For HTTP
   based applications it is RECOMMENDED to include the token's type to
   the header.  It is also RECOMMENDED the header value to be protocol
   or application defined.  See Section 7 for more information.

3.1.3.  Token Response

   If parsing and validating the received attributes was successful, the
   Issuer can sign them together with the selected header using the
   signature generation function of [BBS].  The Issuer then returns the
   signature and optionally the selected header (if it is not protocol
   defined) to the Client.  The means with which those values are
   communicated are considered protocol specific.  An option is to
   encode them using base64.  The Client MUST verify the returned
   signature against their selected set of attributes and header value,
   using the signature verification operation as defined in
   Section 3.4.2 (https://www.ietf.org/archive/id/draft-irtf-cfrg-bbs-
   signatures-03.html#name-signature-verification-veri) of [BBS].

3.2.  Redemption

   After the received signature is verified, the Client can generate
   multiple unlinkable tokens, attesting over a (possibly different at
   each time) subset of the signed attributes.  To do that, the Client
   uses the proof generation operation as defined in Section 3.4.3
   (https://www.ietf.org/archive/id/draft-irtf-cfrg-bbs-signatures-
   03.html#name-proof-generation-proofgen) of [BBS], with the
   presentation header input value set to a specified channel binding or
   origin identifier.  For HTTP applications it is RECOMMENDED that the
   origin be used.  The presentation header MUST additionally be bound
   to the received Origin challenge (for example by using the digest of



Ladd                     Expires 29 August 2024                 [Page 4]

Internet-Draft                  BBS PPAS                   February 2024


   the challenge value).  The set of attributes the Client wishes to
   show is protocol specific and is communicated by means outside this
   draft.

   Upon receiving a Token, the Origin must construct the required header
   and presentation header values, which may depend on protocol specific
   information (like the token's type) or session specific information
   (like a Client chosen nonce).  The form of those values is protocol
   specific.  The Origin MUST validate that both the header and
   presentation header, as well as the received attributes, conform to
   their policies (for example, that the presentation header contains a
   specific challenge digest etc.).  Then, they can use the proof
   verification operation as defined in Section 3.4.4
   (https://www.ietf.org/archive/id/draft-irtf-cfrg-bbs-signatures-
   03.html#name-proof-verification-proofver) of [BBS], to verify the
   received Token and attributes.

4.  HTTP Protocol with Public Metadata

   This section defines a HTTP based instatiation of the issuance and
   redemption protocol with public metadata ([PPEXT]).  The BBS
   operations used are instantiated with the parameters defined by the
   BBS_BLS12381G1_XMD:SHA-256_SSWU_RO_H2G_HM2S_ ciphersuite
   (Section 6.2.2 (https://datatracker.ietf.org/doc/html/draft-irtf-
   cfrg-bbs-signatures-03#name-bls12-381-sha-256) of [BBS]).  The signed
   attributes will consist of the public metadata values, giving to the
   Client the ability to selectively disclose distinguee subsets of
   metadata during different Token redemption attempts.

4.1.  Token Issuance

   The Client and Issuer agree on the sequence of attributes, as well as
   the Issuer's public key.  These attributes are put in a list of
   Extensions [PPEXT] with type TBD.

4.1.1.  Client-to-Issuer Request

   The Client first creates an issuance request message using the Issuer
   key identifier as follows:

 struct {
   uint16_t token_type = 0xTBD;  /* Type BBS with "BLS12-381-SHA-256" */
   uint8_t truncated_token_key_id;
 } TokenRequest;

   The structure fields are defines bellow:





Ladd                     Expires 29 August 2024                 [Page 5]

Internet-Draft                  BBS PPAS                   February 2024


   *  "token_type" is a 2-octet integer, which matches the type in the
      challenge.

   *  "truncated_token_key_id" is the least significant byte of the
      token_key_id in network byte order.

   Using the constructed TokenRequest, the Client builds an
   ExtendedTokenRequest, defined in [PPEXT], as follows:

   struct {
     TokenRequest request;
     Extensions extensions;
   } ExtendedTokenRequest;

   The contents of the ExtendedTokenRequest.extensions value, MUST match
   the Client's configured extensions value.  The Client then generates
   an HTTP POST request to send to the Issuer Request URI, with the
   ExtendedTokenRequest as the content.

4.1.2.  Issuer-to-Client Response

   Upon receiving the Client's request, the Issuer needs to validate the
   following:

   *  The ExtendedTokenRequest.TokenRequest contains a supported
      token_type.

   *  The ExtendedTokenRequest.TokenRequest contains a
      truncated_token_key_id that corresponds to the truncated key ID of
      an Issuer Public Key.

   *  The ExtendedTokenRequest.extensions value is permitted by the
      Issuer's policy.

   If any of these conditions is not met, the Issuer MUST return an HTTP
   400 error to the Client.  Otherwise, if the Issuer is willing to
   produce a token for the Client, they will complete the issuance flow
   by signing the agreed upon extension values.  To do so, they first
   must parse the content value ExtendedTokenRequest.extensions and if
   successful, yield the extensions array.  Then, they must sign those
   extensions, using the following steps:

   header = 0xTBD
   signature = Sign(skI, pkI,  header, extensions)

   The Sign function is defined in Section 3.4.1
   (https://www.ietf.org/archive/id/draft-irtf-cfrg-bbs-signatures-
   03.html#name-signature-generation-sign) of [BBS] and is instantiated



Ladd                     Expires 29 August 2024                 [Page 6]

Internet-Draft                  BBS PPAS                   February 2024


   with the parameters defined by the "BLS12-381-SHA-256" ciphersuite
   (Section 6.2.2 (https://datatracker.ietf.org/doc/html/draft-irtf-
   cfrg-bbs-signatures-03#name-bls12-381-sha-256) of [BBS]).  The result
   is encoded and transmitted to the client in the following
   TokenResponse structure:

   struct {
     uint8_t signature[octet_point_length + octet_scalar_length];
   } TokenResponse;

   The octet_point_length and octet_scalar_length constants are defined
   in Section 6.2 (https://www.ietf.org/archive/id/draft-irtf-cfrg-bbs-
   signatures-03.html#name-bls12-381-sha-256) of [BBS].

   The Issuer generates an HTTP response with status code 200 whose
   content consists of TokenResponse, with the content type set as
   "application/private-token-response".

4.1.3.  Finalization

   Upon receipt, the Client handles the response and, if successful,
   deserializes the content values TokenResponse.signature yielding the
   signature value. the Client MUST validate the produced signature as
   follows:

   result = Verify(pkI, signature, 0xTBD, extensions)

   The Verify function is defined in Section 3.4.2
   (https://www.ietf.org/archive/id/draft-irtf-cfrg-bbs-signatures-
   03.html#name-signature-verification-veri) of [BBS] and is
   instantiated with the parameters defined by the "BLS12-381-SHA-256"
   ciphersuite (Section 6.2.2 (https://datatracker.ietf.org/doc/html/
   draft-irtf-cfrg-bbs-signatures-03#name-bls12-381-sha-256) of [BBS]).
   If the result is not VALID, the Client MUST abort.

   If signature verification is successful, the Client can generate
   multiple tokens with unlinkable authenticator values, using the
   procedure defined in Section 4.2.1.

4.1.4.  Issuer Configuration

   //TODO









Ladd                     Expires 29 August 2024                 [Page 7]

Internet-Draft                  BBS PPAS                   February 2024


4.2.  Token Redemption

   This section describes an HTTP based protocol that allows Clients to
   generate and redeem tokens, using a TokenResponse received by the
   Issuer during the Issuance protocol defined in Section 4.1.  The
   TokenResponse MUST first be verified using the procedure defined in
   Section 4.1.3.

4.2.1.  Token Generation

   The Client can generate multiple Tokens with unlinkable authenticator
   values, using the ProofGen function as defined in Section 3.4.3
   (https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-bbs-
   signatures-03#name-proof-generation-proofgen) of [BBS], instantiated
   with the parameters defined by the "BLS12-381-SHA-256" ciphersuite
   (Section 6.2.2 (https://datatracker.ietf.org/doc/html/draft-irtf-
   cfrg-bbs-signatures-03#name-bls12-381-sha-256) of [BBS]).

   The Client can also select a subset of the extensions to disclose to
   the Origin.  The means with which a Client will negotiate with the
   Origin the required extensions is outside the scope of this document.
   Let disclosed_extensions_indexes to be an ordered array of 2 byte
   integers from 1 to 65535, corresponding to the indexes that the
   extensions the Client wishes to disclose have, in the
   Extensions.extensions array.  The client produces an authenticator
   value as follows:

   nonce = random(32)
   challenge_digest = SHA256(challenge)
   header = 0xTBD
   presentation_header = concat(nonce, challenge_digest)

   authenticator = ProofGen(pkI,
                            signature,
                            header,
                            presentation_header,
                            extensions,
                            disclosed_extensions_indexes)

   If the above calculation succeeds, the Client constructs a Token as
   follows:










Ladd                     Expires 29 August 2024                 [Page 8]

Internet-Draft                  BBS PPAS                   February 2024


   struct {
     uint16_t token_type = 0xTBD;
     uint8_t nonce[32];
     uint8_t challenge_digest[32];
     uint8_t token_key_id[Nid];
     uint16_t disclosed_extensions_indexes<0..2^16-1>
     uint8_t authenticator<0..Nu>;
   } Token;

   The maximum length of the authenticator Nu is defined as Nu = 2 *
   octet_point_length + (2^16 + 2) * octet_scalar_length.  Note, the
   addition of the disclosed_extensions_indexes field to the Token
   structure defined in [PPAUTH].

4.2.2.  Token Verification

   Upon receiving the Token, the Origin MUST parse it and validate that
   all the fields have the correct length.  Additionally, the Origin
   MUST parse the Token.disclosed_extensions_indexes content value and
   verify that it comprised from an ordered array of integers from 1 to
   65535.  Lastly, the Origin MUST also parse the received (disclosed)
   Extensions.extensions value and create the array
   disclosed_extensions.  Verifying a Token requires knowledge of the
   Issuer's public key (pkI) corresponding to the Token.token_key_id
   value.  The Origin can verify the Token and corresponding disclosed
   extensions as follows:

   header = 0xTBD
   presentation_header = concat(Token.nonce, Token.challenge_digest)

   res = ProofVerify(pkI,
                     Token.authenticator,
                     header,
                     presentation_header,
                     disclosed_extensions,
                     Token.disclosed_extensions_indexes)

   The ProofVerify function is defined in Section 3.4.4 of [BBS],
   instantiated with the parameters defined by the "BLS12-381-SHA-256"
   ciphersuite (Section 6.2.2 (https://datatracker.ietf.org/doc/html/
   draft-irtf-cfrg-bbs-signatures-03#name-bls12-381-sha-256) of [BBS]).

5.  Privacy Pass integration

   In [PPARCH] parameters are provided that any instantiation must
   amend.  TODO: put values in





Ladd                     Expires 29 August 2024                 [Page 9]

Internet-Draft                  BBS PPAS                   February 2024


6.  Security Considerations

   As the redeemed tokens are not single use, instantiations MUST
   specify a channel binding to use or origin identifier so that an
   Origin cannot harvest tokens for use at another origin.

7.  Privacy Considerations

   The position of a revealed attribute, as well as the number of
   unrevealed attributes, is revealed to the origin.  Applications MUST
   ensure all clients recieve the same set of attributes in the same
   positions to preserve privacy.  The Issuer is visible on redemption,
   this creates partioning attacks.  TODO: resolve through hiding them.

8.  IANA Considerations

   We would like IANA to add to the Privacy Pass Token Type Registry the
   following registration:

   Value: IANA picks Name: BBS Token Token structure: As in Token
   Generation Section Token Key Encoding: TODO Publicly Verifiable: Y
   Public Metadata: Y Private Metadata: N Nk: Indefinite NiD: 32?  TODO:
   check this Reference: This document

9.  References

9.1.  Normative References

   [BBS]      Looker, T., Kalos, V., Whitehead, A., and M. Lodder, "The
              BBS Signature Scheme", Work in Progress, Internet-Draft,
              draft-irtf-cfrg-bbs-signatures-05, 21 December 2023,
              <https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-
              bbs-signatures-05>.

   [PPEXT]    Hendrickson, S. and C. A. Wood, "Public Metadata
              Issuance", Work in Progress, Internet-Draft, draft-
              hendrickson-privacypass-public-metadata-03, 25 November
              2023, <https://datatracker.ietf.org/doc/html/draft-
              hendrickson-privacypass-public-metadata-03>.

   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119,
              DOI 10.17487/RFC2119, March 1997,
              <https://www.rfc-editor.org/rfc/rfc2119>.

   [RFC8174]  Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
              2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
              May 2017, <https://www.rfc-editor.org/rfc/rfc8174>.



Ladd                     Expires 29 August 2024                [Page 10]

Internet-Draft                  BBS PPAS                   February 2024


9.2.  Informative References

   [PPARCH]   Davidson, A., Iyengar, J., and C. A. Wood, "The Privacy
              Pass Architecture", Work in Progress, Internet-Draft,
              draft-ietf-privacypass-architecture-16, 25 September 2023,
              <https://datatracker.ietf.org/doc/html/draft-ietf-
              privacypass-architecture-16>.

   [PPAUTH]   Pauly, T., Valdez, S., and C. A. Wood, "The Privacy Pass
              HTTP Authentication Scheme", Work in Progress, Internet-
              Draft, draft-ietf-privacypass-auth-scheme-15, 23 October
              2023, <https://datatracker.ietf.org/doc/html/draft-ietf-
              privacypass-auth-scheme-15>.

Acknowledgments

   TODO acknowledge.

Author's Address

   Watson Ladd
   Akamai Technologies
   Email: watsonbladd@gmail.com




























Ladd                     Expires 29 August 2024                [Page 11]