Skip to content

Editorial pass on batched tokens #32

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Feb 8, 2025
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 18 additions & 17 deletions draft-ietf-privacypass-batched-tokens.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,8 @@ author:

--- abstract

This document specifies a variant of the Privacy Pass issuance protocol that
allows for batched issuance of tokens. This allows clients to request more than
This document specifies variants of the Privacy Pass issuance protocol that
allow for batched issuance of tokens. These allow clients to request more than
one token at a time and for issuers to issue more than one token at a time.

--- middle
Expand Down Expand Up @@ -59,7 +59,7 @@ draft-01

# Introduction

This document specifies two Privacy Pass issuance protocols (as defined in
This document specifies two variants of Privacy Pass issuance protocols (as defined in
{{!RFC9576=I-D.ietf-privacypass-architecture}}) that allow for batched issuance
of tokens. This allows clients to request more than one token at a time and for
issuers to issue more than one token at a time.
Expand Down Expand Up @@ -94,22 +94,23 @@ scheme defined in {{!AUTHSCHEME=I-D.ietf-privacypass-auth-scheme}}.

Privacy Pass tokens (as defined in {{RFC9576}} and
{{!RFC9578=I-D.ietf-privacypass-protocol}}) are unlinkable during issuance and
redemption. The basic issuance protocols defined in {{RFC9578}} however only
redemption. The basic issuance protocols defined in {{RFC9578}}, however, only
allow for a single token to be issued at a time for every challenge. In some
cases, especially where a large number of clients need to fetch a large number
of tokens, this may introduce performance bottlenecks. Batched token issuance
improves upon the basic Privately Verifiable Token issuance protocol in the
following key ways:
of tokens, this may introduce performance bottlenecks.

Batched Privately Verifiable Token Issuance {{batched-private}} improves upon
the basic Privately Verifiable Token issuance protocol in the following key ways:

1. Issuing multiple tokens at once in response to a single TokenChallenge,
thereby reducing the size of the proofs required for multiple tokens.
1. Improving server and client issuance efficiency by amortizing the cost of the
VOPRF proof generation and verification, respectively.

For all Verifiable Token issuance protocol, it allows for a single TokenRequest
to be sent that encompasses multiple token requests. This enables the issuance
of tokens for more than one key in one round trip between the Client and the
Issuer. The cost remains linear.
Arbitrary Batched Token Issuance {{batched-arbitrary}} allows for a single
TokenRequest to be sent that encompasses multiple token requests. This
enables the issuance of tokens for more than one key in one round trip
between the Client and the Issuer. The cost of token generation remains linear.

# Presentation Language

Expand Down Expand Up @@ -154,7 +155,7 @@ struct {
} StructWithVectors;
~~~

# Batched Privately Verifiable Token
# Batched Privately Verifiable Token Issuance {#batched-private}

This section describes a batched issuance protocol for select token types,
including 0x0001 (defined in {{RFC9578}}) and 0x0005 (defined in this document).
Expand Down Expand Up @@ -409,19 +410,19 @@ struct {
If the FinalizeBatch function fails, the Client aborts the protocol. Token
verification works exactly as specified in {{RFC9578}}.

# Arbitrary Batched Token Issuance
# Arbitrary Batched Token Issuance {#batched-arbitrary}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

note: this is also introduced in #34

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I guess it's only fair to re-align #34 in that case


This section describes an issuance protocol mechanism for issuing multiple
tokens in one round trip between Client and Issuer. An arbitrary batched token
request can contain token requests for any token type.

## Client-to-Issuer Request {#arbitrary-client-to-issuer-request}

The Client first creates all TokenRequest it wants to batch. To do so, the
client follows protocol describing issuance, such as {{RFC9578, Section 5.1}} or
{{RFC9578, Section 6.1}}.
The Client first generates all of the individual TokenRequest structures that
are intended to be batched together. This request creation follows the protocol
describing issuance, such as {{RFC9578, Section 5.1}} or {{RFC9578, Section 6.1}}.

The Client then creates a BatchedTokenRequest structured as follows:
The Client then creates a BatchedTokenRequest structure as follows:

~~~tls
struct {
Expand Down
Loading