summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc9576.txt
blob: d99f1bedadff41526628996f121dc1da7f708307 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
Internet Engineering Task Force (IETF)                       A. Davidson
Request for Comments: 9576       NOVA LINCS, Universidade NOVA de Lisboa
Category: Informational                                       J. Iyengar
ISSN: 2070-1721                                                   Fastly
                                                              C. A. Wood
                                                              Cloudflare
                                                               June 2024


                     The Privacy Pass Architecture

Abstract

   This document specifies the Privacy Pass architecture and
   requirements for its constituent protocols used for authorization
   based on privacy-preserving authentication mechanisms.  It describes
   the conceptual model of Privacy Pass and its protocols, its security
   and privacy goals, practical deployment models, and recommendations
   for each deployment model, to help ensure that the desired security
   and privacy goals are fulfilled.

Status of This Memo

   This document is not an Internet Standards Track specification; it is
   published for informational purposes.

   This document is a product of the Internet Engineering Task Force
   (IETF).  It represents the consensus of the IETF community.  It has
   received public review and has been approved for publication by the
   Internet Engineering Steering Group (IESG).  Not all documents
   approved by the IESG are candidates for any level of Internet
   Standard; see Section 2 of RFC 7841.

   Information about the current status of this document, any errata,
   and how to provide feedback on it may be obtained at
   https://www.rfc-editor.org/info/rfc9576.

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
   2.  Terminology
   3.  Architecture
     3.1.  Overview
     3.2.  Use Cases
     3.3.  Privacy Goals and Threat Model
     3.4.  Redemption Protocol
     3.5.  Issuance Protocol
       3.5.1.  Attester Role
       3.5.2.  Issuer Role
       3.5.3.  Issuance Metadata
       3.5.4.  Future Issuance Protocol Requirements
     3.6.  Information Flow
       3.6.1.  Token Challenge Flow
       3.6.2.  Attestation Flow
       3.6.3.  Issuance Flow
       3.6.4.  Token Redemption Flow
   4.  Deployment Models
     4.1.  Shared Origin, Attester, Issuer
     4.2.  Joint Attester and Issuer
     4.3.  Joint Origin and Issuer
     4.4.  Split Origin, Attester, Issuer
   5.  Deployment Considerations
     5.1.  Discriminatory Treatment
     5.2.  Centralization
   6.  Privacy Considerations
     6.1.  Partitioning by Issuance Metadata
     6.2.  Partitioning by Issuance Consistency
     6.3.  Partitioning by Side Channels
   7.  Security Considerations
     7.1.  Token Caching
   8.  IANA Considerations
   9.  References
     9.1.  Normative References
     9.2.  Informative References
   Acknowledgements
   Authors' Addresses

1.  Introduction

   Privacy Pass is an architecture for authorization based on privacy-
   preserving authentication mechanisms.  In other words, relying
   parties authenticate Clients in a privacy-preserving way, i.e.,
   without learning any unique, per-Client information through the
   authentication protocol, and then make authorization decisions on the
   basis of that authentication succeeding or failing.  Possible
   authorization decisions might be to provide Clients with read access
   to a particular resource or write access to a particular resource.

   Typical approaches for authorizing Clients, such as through the use
   of long-term state (cookies), are not privacy friendly, since they
   allow servers to track Clients across sessions and interactions.
   Privacy Pass takes a different approach: instead of presenting
   linkable state-carrying information to servers, e.g., a cookie
   indicating whether or not the Client is an authorized user or has
   completed some prior challenge, Clients present unlinkable proofs
   that attest to this information.  These proofs, or tokens, are
   private in the sense that a given token cannot be linked to the
   protocol interaction where that token was initially issued.

   At a high level, the Privacy Pass architecture consists of two
   protocols: redemption and issuance.  The redemption protocol,
   described in [AUTHSCHEME], runs between Clients and Origins
   (servers).  It allows Origins to challenge Clients to present tokens
   for consumption.  Origins verify the token to authenticate the Client
   -- without learning any specific information about the Client -- and
   then make an authorization decision on the basis of the token
   verifying successfully or not.  Depending on the type of token, e.g.,
   whether or not it can be cached, the Client either presents a
   previously obtained token or invokes an issuance protocol, e.g., the
   protocols described in [ISSUANCE], to acquire a token to present as
   authorization.

   This document describes requirements for both redemption and issuance
   protocols and how they interact.  It also provides recommendations on
   how the architecture should be deployed to ensure the privacy of
   Clients and the security of all participating entities.

2.  Terminology

   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.

   The following terms are used throughout this document:

   Client:  An entity that seeks authorization to an Origin.  Using
      terminology from [RFC9334], Clients implement the Remote
      ATtestation procedureS (RATS) Attester role.

   Token:  A cryptographic authentication message used for authorization
      decisions, produced as output from an issuance mechanism or
      protocol.

   Origin:  An entity that consumes tokens presented by Clients and uses
      them to make authorization decisions.

   Token challenge:  The mechanism by which Origins request tokens from
      Clients, often denoted TokenChallenge.

   Token request:  A message used by Clients to request a token from an
      Issuer, often denoted TokenRequest.

   Token response:  A message used by Issuers to send tokens to a
      Client, often denoted TokenResponse.

   Redemption:  The mechanism by which Clients present tokens to Origins
      for the purposes of authorization.

   Issuer:  An entity that issues tokens to Clients for properties
      attested to by the Attester.

   Issuance:  The mechanism by which an Issuer produces tokens for
      Clients.

   Attester:  An entity that attests to properties of Clients for the
      purposes of token issuance.  Using terminology from [RFC9334],
      Attesters implement the RATS Verifier role.

   Attestation procedure:  The procedure by which an Attester determines
      whether or not a Client has the specific set of properties that
      are necessary for token issuance.

   The trust relationships between each of the entities in this list are
   further elaborated upon in Section 3.3.

3.  Architecture

   The Privacy Pass architecture consists of four logical entities --
   Client, Origin, Issuer, and Attester -- that work in concert for
   token redemption and issuance.  This section presents an overview of
   Privacy Pass, a high-level description of the threat model and
   privacy goals of the architecture, and the goals and requirements of
   the redemption and issuance protocols.  Deployment variations for the
   Origin, Issuer, and Attester in this architecture, including
   considerations for implementing these entities, are further discussed
   in Section 4.

3.1.  Overview

   This section describes the typical interaction flow for Privacy Pass,
   as shown in Figure 1.

   1.  A Client interacts with an Origin by sending a request or
       otherwise interacting with the Origin in a way that triggers a
       response containing a token challenge.  The token challenge
       indicates a specific Issuer to use.

   2.  If the Client already has a token available that satisfies the
       token challenge, e.g., because the Client has a cache of
       previously issued tokens, it can skip to step 6 and redeem its
       token; see Section 7.1 for security considerations regarding
       cached tokens.

   3.  If the Client does not have a token available and decides it
       wants to obtain one (or more) bound to the token challenge, it
       then invokes the issuance protocol.  As a prerequisite to the
       issuance protocol, the Client runs the deployment-specific
       attestation process that is required for the designated Issuer.
       Client attestation can be done via proof of solving a CAPTCHA,
       checking device or hardware attestation validity, etc.; see
       Section 3.5.1 for more details.

   4.  If the attestation process completes successfully, the Client
       creates a token request to send to the designated Issuer
       (generally via the Attester, though it is not required to be sent
       through the Attester).  The Attester and Issuer might be
       functions on the same server, depending on the deployment model
       (see Section 4).  Depending on the attestation process, it is
       possible for attestation to run alongside the issuance protocol,
       e.g., where Clients send necessary attestation information to the
       Attester along with their token request.  If the attestation
       process fails, the Client receives an error and issuance aborts
       without a token.

   5.  The Issuer generates a token response based on the token request,
       which is returned to the Client (generally via the Attester).
       Upon receiving the token response, the Client computes a token
       from the token challenge and token response.  This token can be
       validated by anyone with the per-Issuer key but cannot be linked
       to the content of the token request or token response.

   6.  If the Client has a token, it includes it in a subsequent request
       to the Origin, as authorization.  This token is sent only once in
       reaction to a challenge; Clients do not send tokens more than
       once, even if they receive duplicate or redundant challenges.
       The Origin validates that the token was generated by the expected
       Issuer and has not already been redeemed for the corresponding
       token challenge.  If the Client does not have a token, perhaps
       because issuance failed, the Client does not reply to the
       Origin's challenge with a new request.

   +--------+            +--------+         +----------+ +--------+
   | Origin |            | Client |         | Attester | | Issuer |
   +---+----+            +---+----+         +----+-----+ +---+----+
       |                     |                   |           |
       |<----- Request ------+                   |           |
       +-- TokenChallenge -->|                   |           |
       |                     |<== Attestation ==>|           |
       |                     |                   |           |
       |                     +--------- TokenRequest ------->|
       |                     |<-------- TokenResponse -------+
       |<-- Request+Token ---+                   |           |
       |                     |                   |           |

    Figure 1: Privacy Pass Redemption and Issuance Protocol Interaction

3.2.  Use Cases

   Use cases for Privacy Pass are broad and depend greatly on the
   deployment model as discussed in Section 4.  The initial motivating
   use case for Privacy Pass [PrivacyPassCloudflare] was to help rate-
   limit malicious or otherwise abusive traffic from services such as
   Tor [DMS2004].  The generalized and evolved architecture described in
   this document also works for this use case.  However, for added
   clarity, some more possible use cases are described below.

   *  Low-quality, anti-fraud signal for open Internet services.  Tokens
      can attest that the Client behind the user agent is likely not a
      bot attempting to perform some form of automated attack such as
      credential stuffing.  Example attestation procedures for this use
      case might be solving some form of CAPTCHA or presenting evidence
      of a valid, unlocked device in good standing.

   *  Privacy-preserving authentication for proprietary services.
      Tokens can attest that the Client is a valid subscriber for a
      proprietary service, such as a deployment of Oblivious HTTP
      [OHTTP].

3.3.  Privacy Goals and Threat Model

   The end-to-end flow for Privacy Pass described in Section 3.1
   involves three different types of contexts:

   Redemption context:  The interactions and set of information shared
      between the Client and Origin, i.e., the information that is
      provided or otherwise available to the Origin during redemption
      that might be used to identify a Client and construct a token
      challenge.  This context includes all information associated with
      redemption, such as the timestamp of the event, Client-visible
      information (including the IP address), and the Origin name.

   Issuance context:  The interactions and set of information shared
      between the Client, Attester, and Issuer, i.e., the information
      that is provided or otherwise available to the Attester and Issuer
      during issuance that might be used to identify a Client.  This
      context includes all information associated with issuance, such as
      the timestamp of the event, any Client-visible information
      (including the IP address), and the Origin name (if revealed
      during issuance).  This does not include the token challenge in
      its entirety, as that is kept secret from the Issuer during the
      issuance protocol.

   Attestation context:  The interactions and set of information shared
      between the Client and Attester only, for the purposes of
      attesting the validity of the Client, that is provided or
      otherwise available during attestation that might be used to
      identify the Client.  This context includes all information
      associated with attestation, such as the timestamp of the event
      and any Client-visible information, including information needed
      for the attestation procedure to complete.

   The privacy goals of Privacy Pass assume a threat model in which
   Origins trust specific Issuers to produce tokens, and Issuers in turn
   trust one or more Attesters to correctly run the attestation
   procedure with Clients.  This arrangement ensures that tokens that
   validate for a given Issuer were only issued to a Client that
   successfully completed attestation with an Attester that the Issuer
   trusts.  Moreover, this arrangement means that if an Origin accepts
   tokens issued by an Issuer that trusts multiple Attesters, then a
   Client can use any one of these Attesters to issue and redeem tokens
   for the Origin.  Whether or not these different entities in the
   architecture collude for learning redemption, issuance, or
   attestation contexts, as well as the necessary preconditions for
   context unlinkability, depends on the deployment model; see Section 4
   for more details.

   The mechanisms for establishing trust between each entity in this
   arrangement are deployment specific.  For example, in settings where
   Clients interact with Issuers through an Attester, Attesters and
   Issuers might use mutually authenticated TLS to authenticate one
   another.  In settings where Clients do not communicate with Issuers
   through an Attester, the Attesters might convey this trust via a
   digital signature that Issuers can verify.

   Clients explicitly trust Attesters to perform attestation correctly
   and in a way that does not violate their privacy.  In particular,
   this means that Attesters that may be privy to private information
   about Clients are trusted to not disclose this information to non-
   colluding parties.  Colluding parties are assumed to have access to
   the same information; see Section 4 for more about different
   deployment models and non-collusion assumptions.  However, Clients
   assume that Issuers and Origins are malicious.

   Given this threat model, the privacy goals of Privacy Pass are
   oriented around unlinkability based on redemption, issuance, and
   attestation contexts, as described below.

   1.  Origin-Client unlinkability.  This means that given two
       redemption contexts, the Origin cannot determine if both
       redemption contexts correspond to the same Client or two
       different Clients.  Informally, this means that a Client in a
       redemption context is indistinguishable from any other Client
       that might use the same redemption context.  The set of Clients
       that share the same redemption context is referred to as a
       redemption anonymity set.

   2.  Issuer-Client unlinkability.  This is similar to Origin-Client
       unlinkability in that a Client in an issuance context is
       indistinguishable from any other Client that might use the same
       issuance context.  The set of Clients that share the same
       issuance context is referred to as an issuance anonymity set.

   3.  Attester-Origin unlinkability.  This is similar to Origin-Client
       and Issuer-Client unlinkability.  It means that given two
       attestation contexts, the Attester cannot determine if both
       contexts correspond to the same Origin or two different Origins.
       The set of Origins that share the same attestation context is
       referred to as an attestation anonymity set.

   4.  Redemption context unlinkability.  Given two redemption contexts,
       the Origin cannot determine which issuance and attestation
       contexts each redemption corresponds to, even with the
       collaboration of the Issuer and Attester (should these be
       different parties).  This means that any information that may be
       learned about the Client during the issuance and attestation
       flows cannot be used by the Origin to compromise Client privacy.

   These unlinkability properties ensure that only the Clients are able
   to correlate information that might be used to identify them with
   activity on the Origin.  The Attester, Issuer, and Origin only
   receive the information necessary to perform their respective
   functions.

   The manner in which these unlinkability properties are achieved
   depends on the deployment model, type of attestation, and issuance
   protocol details.  For example, as discussed in Section 4, in some
   cases it is necessary to use an anonymization service that hides
   Client IP addresses, such as Tor [DMS2004].  In general,
   anonymization services ensure that all Clients that use the service
   are indistinguishable from one another, though in practice there may
   be small distinguishing features (TLS fingerprints, HTTP headers,
   etc.).  Moreover, Clients generally trust these services to not
   disclose private Client information (such as IP addresses) to
   untrusted parties.  Failure to use an anonymization service when
   interacting with Attesters, Issuers, or Origins can allow the set of
   possible Clients to be partitioned by the Client's IP address and can
   therefore lead to unlinkability violations.  Similarly, malicious
   Origins may attempt to link two redemption contexts together by using
   Client-specific Issuer Public Keys.  See Sections 5 and 6 for more
   information.

   Sections 3.4 and 3.5 describe the functional properties and security
   requirements of the redemption and issuance protocols in more detail.
   Section 3.6 describes how information flows between the Issuer,
   Origin, Client, and Attester through these protocols.

3.4.  Redemption Protocol

   The Privacy Pass redemption protocol, described in [AUTHSCHEME], is
   an authorization protocol wherein Clients present tokens to Origins
   for authorization.  Normally, redemption is preceded by a challenge,
   wherein the Origin challenges Clients for a token with a
   TokenChallenge ([AUTHSCHEME], Section 2.1) and, if possible, Clients
   present a valid token ([AUTHSCHEME], Section 2.2) in reaction to the
   challenge.  This interaction is shown below.

   +--------+            +--------+
   | Origin |            | Client |
   +---+----+            +---+----+
       |                     |
       |<----- Request ------+
       +-- TokenChallenge -->|
       |                     | <== Issuance protocol ==>
       |<-- Request+Token ---+
       |                     |

          Figure 2: Challenge and Redemption Protocol Interaction

   Alternatively, when configured to do so, Clients may
   opportunistically present token values to Origins without a
   corresponding TokenChallenge.

   The structure and semantics of the TokenChallenge and token messages
   depend on the issuance protocol and token type being used; see
   [AUTHSCHEME] for more information.

   The challenge provides the Client with the information necessary to
   obtain tokens that the server might subsequently accept in the
   redemption context.  There are a number of ways in which the token
   may vary based on this challenge, including the following:

   *  Issuance protocol.  The challenge identifies the type of issuance
      protocol required for producing the token.  Different issuance
      protocols have different security properties, e.g., some issuance
      protocols may produce tokens that are publicly verifiable, whereas
      others may not have this property.

   *  Issuer identity.  Token challenges identify which Issuers are
      trusted for a given issuance protocol.  As described in
      Section 3.3, the choice of Issuer determines the type of Attesters
      and attestation procedures possible for a token from the specified
      Issuer, but the Origin does not learn exactly which Attester was
      used for a given token issuance event.

   *  Redemption context.  Challenges can be bound to a given redemption
      context, which influences a Client's ability to pre-fetch and
      cache tokens.  For example, an empty redemption context always
      allows tokens to be issued and redeemed non-interactively, whereas
      a fresh and random redemption context means that the redeemed
      token must be issued only after the Client receives the challenge.
      See Section 2.1.1 of [AUTHSCHEME] for more details.

   *  Per-Origin or cross-Origin.  Challenges can be constrained to the
      Origin for which the challenge originated (referred to as per-
      Origin tokens) or can be used across multiple Origins (referred to
      as cross-Origin tokens).  The set of Origins for which a cross-
      Origin token is applicable is referred to as the cross-Origin set.
      Opting into this set is done by explicitly agreeing on the
      contents of the set.  Every Origin in a cross-Origin set, by
      opting in, agrees to admit tokens for any other Origin in the set.
      See Section 2.1.1 of [AUTHSCHEME] for more information on how this
      set is created.

   Origins that admit cross-Origin tokens bear some risk of allowing
   tokens issued for one Origin to be spent in an interaction with
   another Origin.  In particular, cross-Origin tokens issued based on a
   challenge for one Origin can be redeemed at another Origin in the
   cross-Origin set, which can make it difficult to regulate token
   consumption.  Depending on the use case, Origins may need to maintain
   state to track redeemed tokens.  For example, Origins that accept
   cross-Origin tokens across shared redemption contexts SHOULD track
   which tokens have already been redeemed in those redemption contexts,
   since these tokens can be issued and then spent multiple times for
   any such challenge.  Note that Clients that redeem the same token to
   multiple Origins do risk those Origins being able to link Client
   activity together, which can disincentivize this behavior.  See
   Section 2.1.1 of [AUTHSCHEME] for discussion.

   How Clients respond to token challenges can have privacy
   implications.  For example, if an Origin allows the Client to choose
   an Issuer, then the choice of Issuer can reveal information about the
   Client used to partition anonymity sets; see Section 6.2 for more
   information about these privacy considerations.

3.5.  Issuance Protocol

   The Privacy Pass issuance protocols, such as those described in
   [ISSUANCE], are two-message protocols that take as input a
   TokenChallenge from the redemption protocol ([AUTHSCHEME],
   Section 2.1) and produce a token ([AUTHSCHEME], Section 2.2), as
   shown in Figure 1.

   The structure and semantics of the TokenRequest and TokenResponse
   messages depend on the issuance protocol and token type being used;
   see [ISSUANCE] for more information.

   Clients interact with the Attester and Issuer to produce a token for
   a challenge.  The context in which an Attester vouches for a Client
   during issuance is referred to as the attestation context.  This
   context includes all information associated with the issuance event,
   such as the timestamp of the event and Client-visible information,
   including the IP address or other information specific to the type of
   attestation done.

   Each issuance protocol may be different, e.g., in the number and
   types of participants, underlying cryptographic constructions used
   when issuing tokens, and even privacy properties.

   Clients initiate the issuance protocol using the token challenge, a
   randomly generated nonce, and a public key for the Issuer, all of
   which are the Client's private input to the protocol and ultimately
   bound to an output token; see Section 2.2 of [AUTHSCHEME] for
   details.  Future specifications may change or extend the Client's
   input to the issuance protocol to produce tokens with a different
   structure.

   Token properties vary based on the issuance protocol.  Important
   properties supported in this architecture are described below.

   1.  Public verifiability.  This means that the token can be verified
       using the Issuer Public Key. A token that does not have public
       verifiability can only be verified using the Issuer secret key.

   2.  Public metadata.  This means that the token can be
       cryptographically bound to arbitrary public information.  See
       Section 6.1 for privacy considerations regarding public metadata.

   3.  Private metadata.  This means that the token can be
       cryptographically bound to arbitrary private information, i.e.,
       information that the Client does not observe during token
       issuance or redemption.  See Section 6.1 for privacy
       considerations regarding private metadata.

   The issuance protocol itself can be any interactive protocol between
   the Client, Issuer, or other parties that produces a valid token
   bound to the Client's private input, subject to the following
   security requirements.

   1.  Unconditional input secrecy.  The issuance protocol MUST NOT
       reveal anything about the Client's private input, including the
       challenge and nonce, to the Attester or Issuer, regardless of the
       hardness assumptions of the underlying cryptographic protocol(s).
       This property is sometimes also referred to as blindness.

   2.  One-more forgery security.  The issuance protocol MUST NOT allow
       malicious Clients or Attesters (acting as Clients) to forge
       tokens offline or otherwise without interacting with the Issuer
       directly.

   3.  Concurrent security.  The issuance protocol MUST be safe to run
       concurrently with arbitrarily many Clients, Attesters, and
       Issuers.

   See Section 3.5.4 for requirements on new issuance protocol variants
   and related extensions.

   In the sections below, we describe the Attester and Issuer roles in
   more detail.

3.5.1.  Attester Role

   In Privacy Pass, attestation is the process by which an Attester
   bears witness to, confirms, or authenticates a Client so as to verify
   properties about the Client that are required for issuance.  Issuers
   trust Attesters to perform attestation correctly, i.e., to implement
   attestation procedures in such a way that those procedures are not
   subverted or bypassed by malicious Clients.

   [RFC9334] describes an architecture for attestation procedures.
   Using that architecture as a conceptual basis, Clients are RATS
   Attesters that produce attestation evidence, and Attesters are RATS
   Verifiers that appraise the validity of attestation evidence.

   The type of attestation procedure is a deployment-specific option and
   outside the scope of the issuance protocol.  Example attestation
   procedures are below.

   *  Solving a CAPTCHA.  Clients that solve CAPTCHA challenges can be
      attested to have this capability for the purpose of being ruled
      out as a bot or otherwise automated Client.

   *  Presenting evidence of Client device validity.  Some Clients run
      on trusted hardware that is capable of producing device-level
      attestation evidence.

   *  Proving properties about Client state.  Clients can be associated
      with state, and the Attester can verify this state.  Examples of
      state include the Client's geographic region and whether the
      Client has a valid application-layer account.

   Attesters may support different types of attestation procedures.

   Each attestation procedure has different security properties.  For
   example, attesting to having a valid account is different from
   attesting to running on trusted hardware.  Supporting multiple
   attestation procedures is an important step towards ensuring
   equitable access for Clients; see Section 5.1.

   The role of the Attester in the issuance protocol and its impact on
   privacy depend on the type of attestation procedure, issuance
   protocol, and deployment model.  For instance, increasing the number
   of required attestation procedures could decrease the overall
   anonymity set size.  As an example, the number of Clients that have
   solved a CAPTCHA in the past day, that have a valid account, and that
   are running on a trusted device is less than the number of Clients
   that have solved a CAPTCHA in the past day.  See Section 6.2 for more
   discussion of how the variety of attestation procedures can
   negatively impact Client privacy.

   Depending on the issuance protocol, the Issuer might learn
   information about the Origin.  To ensure Issuer-Client unlinkability,
   the Issuer should be unable to link that information to a specific
   Client.  For such issuance protocols where the Attester has access to
   Client-specific information, such as is the case for attestation
   procedures that involve Client-specific information (such as
   application-layer account information) or for deployment models where
   the Attester learns Client-specific information (such as Client IP
   addresses), Clients trust the Attester to not share any Client-
   specific information with the Issuer.  In deployments where the
   Attester does not learn Client-specific information or where the
   Attester and Issuer are operated by the same entity (such as in the
   Joint Attester and Issuer model described in Section 4.2), the Client
   does not need to explicitly trust the Attester in this regard.

   Issuers trust Attesters to correctly and reliably perform
   attestation.  However, certain types of attestation procedures can
   vary in value over time, e.g., if the attestation procedure is
   compromised.  Broken attestation procedures are considered
   exceptional events and require configuration changes to address the
   underlying cause.  For example, if an attestation procedure is
   compromised or subverted because of a zero-day exploit on devices
   that implement the attestation procedure, then the corresponding
   attestation procedure should be untrusted until the exploit is
   patched.  Addressing changes in attestation quality is therefore a
   deployment-specific task.  In Split Origin, Attester, and Issuer
   deployments (see Section 4.4), Issuers can choose to remove
   compromised Attesters from their trusted set until the compromise is
   patched.

   From the perspective of an Origin, tokens produced by an Issuer with
   at least one compromised Attester cannot be trusted, assuming that
   the Origin does not know which attestation procedure was used for
   issuance.  This is because the Origin cannot distinguish between
   tokens that were issued via compromised Attesters and tokens that
   were issued via uncompromised Attesters, absent some distinguishing
   information in the tokens themselves or from the Issuer.  As a
   result, until the attestation procedure is fixed, the Issuer cannot
   be trusted by Origins.  Moreover, as a consequence, any tokens issued
   by an Issuer with a compromised Attester may no longer be trusted by
   Origins, even if those tokens were issued to Clients interacting with
   an uncompromised Attester.

3.5.2.  Issuer Role

   In Privacy Pass, the Issuer is responsible for completing the
   issuance protocol for Clients that complete attestation through a
   trusted Attester.  As described in Section 3.5.1, Issuers explicitly
   trust Attesters to correctly and reliably perform attestation.
   Origins explicitly trust Issuers to only issue tokens from trusted
   Attesters.  Clients do not explicitly trust Issuers.

   Depending on the deployment model case, issuance may require some
   form of Client anonymization service, similar to an IP-hiding proxy,
   so that Issuers cannot learn information about Clients.  This can be
   provided by an explicit participant in the issuance protocol, or it
   can be provided via external means, such as through the use of an IP-
   hiding proxy service like Tor [DMS2004].  In general, Clients SHOULD
   minimize or remove identifying information where possible when
   invoking the issuance protocol.

   Issuers are uniquely identifiable by all Clients with a consistent
   identifier.  In a web context, this identifier might be the Issuer
   hostname.  Issuers maintain one or more configurations, including
   issuance key pairs, for use in the issuance protocol.  Each
   configuration is assumed to have a unique and canonical identifier,
   sometimes referred to as a key identifier or key ID.  Issuers can
   rotate these configurations as needed to mitigate the risk of
   compromise; see Section 6.2 for more considerations around
   configuration rotation.  The Issuer Public Key for each active
   configuration is made available to Origins and Clients for use in the
   issuance and redemption protocols.

3.5.3.  Issuance Metadata

   Certain instantiations of the issuance protocol may permit public or
   private metadata to be cryptographically bound to a token.  As an
   example, one trivial way to include public metadata is to assign a
   unique Issuer Public Key for each value of metadata, such that N keys
   yield log_2(N) bits of metadata.  Metadata may be public or private.

   Public metadata is metadata that Clients can observe as part of the
   token issuance flow.  Public metadata can be either transparent or
   opaque.  For example, transparent public metadata is a value that
   either the Client generates itself or the Issuer provides during the
   issuance flow and that the Client can check for correctness.  Opaque
   public metadata is metadata the Client can see but cannot check for
   correctness.  As an example, the opaque public metadata might be a
   "fraud detection signal", computed on behalf of the Issuer, during
   token issuance.  Generally speaking, Clients cannot determine if this
   value is generated in a way that permits tracking.

   Private metadata is metadata that Clients cannot observe as part of
   the token issuance flow.  Such instantiations can be built on the
   private metadata bit construction from Kreuter et al. [KLOR20] or the
   attribute-based Verifiable Oblivious Pseudorandom Function (VOPRF)
   from Huang et al. [HIJK21].

   Metadata can be arbitrarily long or bounded in length.  The amount of
   permitted metadata may be determined by an application or by the
   underlying cryptographic protocol.  The total amount of metadata bits
   included in a token is the sum of public and private metadata bits.
   Every bit of metadata can be used to partition the Client issuance or
   redemption anonymity sets; see Section 6.1 for more information.

3.5.4.  Future Issuance Protocol Requirements

   The Privacy Pass architecture and ecosystem are both intended to be
   receptive to extensions that expand the current set of
   functionalities through new issuance protocols.  Each new issuance
   protocol and extension MUST adhere to the following requirements:

   1.  Include a detailed analysis of the privacy impacts of the
       extension, why these impacts are justified, and guidelines on how
       to use the protocol to mitigate or minimize negative deployment
       or privacy consequences discussed in Sections 5 and 6,
       respectively.

   2.  Adhere to the guidelines specified in Section 3.5.2 for managing
       Issuer Public Key data.

   3.  Clearly specify how to interpret and validate TokenChallenge and
       token messages that are exchanged during the redemption protocol.

3.6.  Information Flow

   The end-to-end process of redemption and issuance protocols involves
   information flowing between the Issuer, Origin, Client, and Attester.
   That information can have implications on the privacy goals that
   Privacy Pass aims to provide as outlined in Section 3.3.  In this
   section, we describe the flow of information between each party.  How
   this information affects the privacy goals in particular deployment
   models is further discussed in Section 4.

3.6.1.  Token Challenge Flow

   To use Privacy Pass, Origins choose an Issuer from which they are
   willing to accept tokens.  Origins then construct a token challenge
   using this specified Issuer and information from the redemption
   context it shares with the Client.  This token challenge is then
   delivered to a Client.  The token challenge conveys information about
   the Issuer and the redemption context, such as whether the Origin
   desires a per-Origin or cross-Origin token.  Any entity that sees the
   token challenge might learn things about the Client as known to the
   Origin.  This is why input secrecy is a requirement for issuance
   protocols, as it ensures that the challenge is not directly available
   to the Issuer.

3.6.2.  Attestation Flow

   Clients interact with the Attester to prove that they meet some
   required set of properties.  In doing so, Clients contribute
   information to the attestation context, which might include sensitive
   information such as application-layer identities, IP addresses, and
   so on.  Clients can choose whether or not to contribute this
   information based on local policy or preference.

3.6.3.  Issuance Flow

   Clients use the issuance protocol to produce a token bound to a token
   challenge.  In doing so, there are several ways in which the issuance
   protocol contributes information to the attestation or issuance
   contexts.  For example, a token request may contribute information to
   the attestation or issuance contexts as described below.

   *  Issuance protocol.  The type of issuance protocol can contribute
      information about the Issuer's capabilities to the attestation or
      issuance contexts, as well as the capabilities of a given Client.
      For example, if a Client is presented with multiple issuance
      protocol options, then the choice of which issuance protocol to
      use can contribute information about the Client's capabilities.

   *  Issuer configuration.  Information about the Issuer configuration,
      such as its identity or the public key used to validate tokens it
      creates, can be revealed during issuance and contribute to the
      attestation or issuance contexts.

   *  Attestation information.  The issuance protocol can contribute
      information to the attestation or issuance contexts based on what
      attestation procedure the Issuer uses to trust a token request.
      In particular, a token request that is validated by a given
      Attester means that the Client that generated the token request
      must be capable of completing the designated attestation
      procedure.

   *  Origin information.  The issuance protocol can contribute
      information about the Origin that challenged the Client; see
      Section 3.6.1.  In particular, a token request designated for a
      specific Issuer might imply that the resulting token is for an
      Origin that trusts the specified Issuer.  However, this is not
      always true, as some token requests can correspond to cross-Origin
      tokens, i.e., they are tokens that would be accepted at any Origin
      that accepts the cross-Origin token.

   Moreover, a token may contribute information to the issuance
   attestation or contexts as described below.

   *  Origin information.  The issuance protocol can contribute
      information about the Origin in how it responds to a token
      request.  For example, if an Issuer learns the Origin during
      issuance and is also configured to respond in some way on the
      basis of that information, and the Client interacts with the
      Issuer transitively through the Attester, that response can reveal
      information to the Attester.

   *  Token.  The token produced by the issuance protocol can contain
      information from the issuance context.  In particular, depending
      on the issuance protocol, tokens can contain public or private
      metadata, and Issuers can choose that metadata on the basis of
      information in the issuance context.

   Exceptional cases in the issuance protocol, such as when either the
   Attester or Issuer aborts the protocol, can contribute information to
   the attestation or issuance contexts.  The extent to which
   information in this context harms the Issuer-Client or Attester-
   Origin unlinkability goals as discussed in Section 3.3 depends on the
   deployment model; see Section 4.  Clients can choose whether or not
   to contribute information to these contexts based on local policy or
   preference.

3.6.4.  Token Redemption Flow

   Clients send tokens to Origins during the redemption protocol.  Any
   information that is added to the token during issuance can therefore
   be sent to the Origin.  Information can be either (1) explicitly
   passed in a token or (2) implicit in the way the Client responds to a
   token challenge.  For example, if a Client fails to complete issuance
   and consequently fails to redeem a token for a token challenge, this
   can reveal information to the Origin that it might not otherwise have
   access to.  However, an Origin cannot necessarily distinguish between
   a Client that fails to complete issuance and one that ignores the
   token challenge altogether.

4.  Deployment Models

   The Origin, Attester, and Issuer portrayed in Figure 1 can be
   instantiated and deployed in a number of ways.  The deployment model
   directly influences the manner in which attestation, issuance, and
   redemption contexts are separated to achieve Origin-Client, Issuer-
   Client, and Attester-Origin unlinkability.

   This section covers some expected deployment models and their
   corresponding security and privacy considerations.  Each deployment
   model is described in terms of the trust relationships and
   communication patterns between the Client, Attester, Issuer, and
   Origin.  Entities drawn within the same bounding box are assumed to
   be operated by the same party and are therefore able to collude.
   Collusion can enable linking of attestation, issuance, and redemption
   contexts.  Entities not drawn within the same bounding box (i.e.,
   operated by separate parties) are assumed to not collude.  Mechanisms
   for enforcing non-collusion are out of scope for this architecture.

4.1.  Shared Origin, Attester, Issuer

   In this model, the Origin, Attester, and Issuer are all operated by
   the same entity, as shown in Figure 3.

                    +---------------------------------------------.
   +--------+       |  +----------+     +--------+     +--------+  |
   | Client |       |  | Attester |     | Issuer |     | Origin |  |
   +---+----+       |  +-----+----+     +----+---+     +---+----+  |
       |             `-------|---------------|-------------|------'
       |<-------------------------------- TokenChallenge --+
       |                     |               |             |
       |<=== Attestation ===>|               |             |
       |                     |               |             |
       +----------- TokenRequest ----------->|             |
       |<---------- TokenResponse -----------+             |
       |                                                   |
       +--------------------- Token ----------------------->
       |                                                   |

                     Figure 3: Shared Deployment Model

   This model represents the initial deployment of Privacy Pass, as
   described in [PrivacyPassCloudflare].  In this model, the Attester,
   Issuer, and Origin share the attestation, issuance, and redemption
   contexts.  As a result, attestation mechanisms that can uniquely
   identify a Client, e.g., requiring that Clients authenticate with
   some type of application-layer account, are not appropriate, as they
   could lead to unlinkability violations.

   Origin-Client, Issuer-Client, and Attester-Origin unlinkability
   requires that issuance and redemption events be separated over time,
   such as through the use of tokens that correspond to token challenges
   with an empty redemption context (see Section 3.4), or that they be
   separated over space, such as through the use of an anonymizing
   service when connecting to the Origin.

4.2.  Joint Attester and Issuer

   In this model, the Attester and Issuer are operated by the same
   entity, separate from the Origin.  The Origin trusts the joint
   Attester and Issuer to perform attestation and issue tokens.  Clients
   interact with the joint Attester and Issuer for attestation and
   issuance.  This arrangement is shown in Figure 4.

                      +------------------------------.
   +--------+         |  +----------+     +--------+  |  +--------+
   | Client |         |  | Attester |     | Issuer |  |  | Origin |
   +---+----+         |  +-----+----+     +----+---+  |  +---+----+
       |               `-------|---------------|-----'       |
       |<---------------------------------- TokenChallenge --+
       |                       |               |             |
       |<==== Attestation ====>|               |             |
       |                       |               |             |
       +------------- TokenRequest ----------->|             |
       |<----------- TokenResponse ------------+             |
       |                                                     |
       +----------------------- Token ----------------------->
       |                                                     |

            Figure 4: Joint Attester and Issuer Deployment Model

   This model is useful if an Origin wants to offload attestation and
   issuance to a trusted entity.  In this model, the Attester and Issuer
   share an attestation and issuance context for the Client, separate
   from the Origin's redemption context.

   Similar to the shared Origin, Attester, Issuer model, Issuer-Client
   and Origin-Client unlinkability in this model requires that issuance
   and redemption events, respectively, be separated over time or space.
   Attester-Origin unlinkability requires that the Attester and Issuer
   do not learn the Origin for a particular token request.  For this
   reason, issuance protocols that require the Issuer to learn
   information about the Origin, such as the issuance protocol described
   in [RATE-LIMITED], are not appropriate, since they could lead to
   Attester-Origin unlinkability violations through the Origin name.

4.3.  Joint Origin and Issuer

   In this model, the Origin and Issuer are operated by the same entity,
   separate from the Attester, as shown in Figure 5.  The Issuer accepts
   token requests that come from trusted Attesters.  Since the Attester
   and Issuer are separate entities, this model requires some mechanism
   by which Issuers establish trust in the Attester (as described in
   Section 3.3).  For example, in settings where the Attester is a
   Client-trusted service that directly communicates with the Issuer,
   one way to establish this trust is via mutually authenticated TLS.
   However, alternative authentication mechanisms are possible.  In this
   model, the Origin and Issuer are operated by the same entity,
   separate from the Attester, as shown in the figure below.

                                     +----------------------------.
   +--------+          +----------+  |  +--------+     +--------+  |
   | Client |          | Attester |  |  | Issuer |     | Origin |  |
   +---+----+          +-----+----+  |  +----+---+     +---+----+  |
       |                     |        `------|-------------|------'
       |<-------------------------------- TokenChallenge --+
       |                     |               |             |
       |<=== Attestation ===>|               |             |
       |                     |               |             |
       +------------ TokenRequest ---------->|             |
       |<---------- TokenResponse -----------+             |
       |                                                   |
       +--------------------- Token ----------------------->
       |                                                   |

             Figure 5: Joint Origin and Issuer Deployment Model

   This model is useful for Origins that require Client-identifying
   attestation, e.g., through the use of application-layer account
   information, but do not otherwise want to learn information about
   individual Clients beyond what is observed during the token
   redemption, such as Client IP addresses.

   In this model, attestation contexts are separate from Issuer and
   redemption contexts.  As a result, any type of attestation is
   suitable in this model.

   Moreover, assuming that there is more than one Origin involved, any
   type of token challenge is suitable, since no single party will have
   access to the identifying Client information and unique Origin
   information.  Issuers that produce tokens for a single Origin are not
   suitable in this model, since an Attester can infer the Origin from a
   token request, as described in Section 3.6.3.  However, since the
   issuance protocol provides input secrecy, the Attester does not learn
   details about the corresponding token challenge, such as whether the
   token challenge is per Origin or across Origins.

4.4.  Split Origin, Attester, Issuer

   In this model, the Origin, Attester, and Issuer are all operated by
   different entities.  As with the Joint Origin and Issuer model
   (Section 4.3), the Issuer accepts token requests that come from
   trusted Attesters, and the details of that trust establishment depend
   on the issuance protocol and relationship between the Attester and
   Issuer; see Section 3.3.  This arrangement is shown in Figure 1.

   This is the most general deployment model and is necessary for some
   types of issuance protocols where the Attester plays a role in token
   issuance; see [RATE-LIMITED] for one such type of issuance protocol.

   In this model, the Attester, Issuer, and Origin have a separate view
   of the Client: the Attester sees potentially sensitive Client-
   identifying information, such as account identifiers or IP addresses;
   the Issuer sees only the information necessary for issuance; and the
   Origin sees token challenges, corresponding tokens, and Client source
   information, such as their IP address.  As a result, attestation,
   issuance, and redemption contexts are separate, and therefore any
   type of token challenge is suitable in this model as long as there is
   more than a single Origin.

   As with the Joint Origin and Issuer model (Section 4.3), and as
   described in Section 3.6.3, if the Issuer produces tokens for a
   single Origin, then per-Origin tokens are not appropriate, since the
   Attester can infer the Origin from a token request.

5.  Deployment Considerations

   Section 4 discusses deployment models that are possible in practice.
   Beyond possible implications on security and privacy properties of
   the resulting system, Privacy Pass deployments can impact the overall
   ecosystem in two important ways: (1) discriminatory treatment of
   Clients and the gated access to otherwise open services and
   (2) centralization.  This section describes considerations relevant
   to these topics.

5.1.  Discriminatory Treatment

   Origins can use tokens as a signal for distinguishing between
   (1) Clients that are capable of completing attestation with one
   Attester trusted by the Origin's chosen Issuer and (2) Clients that
   are not capable of doing the same.  A consequence of this is that
   Privacy Pass could enable discriminatory treatment of Clients based
   on attestation support.  For example, an Origin could only authorize
   Clients that successfully authenticate with a token, prohibiting
   access to all other Clients.

   The types of attestation procedures supported for a particular
   deployment depend greatly on the use case.  For example, consider a
   proprietary deployment of Privacy Pass that authorizes Clients to
   access a resource such as an anonymization service.  In this context,
   it is reasonable to support specific types of attestation procedures
   that demonstrate that Clients can access the resource, such as with
   an account or specific type of device.  However, in open deployments
   of Privacy Pass that are used to safeguard access to otherwise open
   or publicly accessible resources, diversity in attestation procedures
   is critically important so as to not discriminate against Clients
   that choose certain software, hardware, or identity providers.

   In principle, Issuers should strive to mitigate discriminatory
   behavior by providing equitable access to all Clients.  This can be
   done by working with a set of Attesters that are suitable for all
   Clients.  In practice, this may require trade-offs in what type of
   attestation Issuers are willing to trust so as to enable more
   widespread support.  In other words, trusting a variety of Attesters
   with a diverse set of attestation procedures would presumably
   increase support among Clients, though most likely at the expense of
   decreasing the overall value of tokens issued by the Issuer.

   For example, to disallow discriminatory behavior between Clients with
   and without device attestation support, an Issuer may wish to support
   Attesters that support CAPTCHA-based attestation.  This means that
   the overall attestation value of a Privacy Pass token is bound by the
   difficulty in spoofing or bypassing either one of these attestation
   procedures.

5.2.  Centralization

   A consequence of limiting the number of participants (Attesters or
   Issuers) in Privacy Pass deployments for meaningful privacy is that
   it forces concentrated centralization among those participants.
   [CENTRALIZATION] discusses several ways in which this might be
   mitigated.  For example, a multi-stakeholder governance model could
   be established to determine what candidate participants are fit to
   operate as participants in a Privacy Pass deployment.  This is
   precisely the system used to control the Web's trust model.

   Alternatively, Privacy Pass deployments might mitigate this problem
   through implementation.  For example, rather than centralize the role
   of attestation in one or a few entities, attestation could be a
   distributed function performed by a quorum of many parties, provided
   that neither Issuers nor Origins learn which Attester implementations
   were chosen.  As a result, Clients could have more opportunities to
   switch between attestation participants.

6.  Privacy Considerations

   The previous section discusses the impact of deployment details on
   Origin-Client, Issuer-Client, and Attester-Origin unlinkability.  The
   value these properties afford to end users depends on the size of
   anonymity sets in which Clients or Origins are unlinkable.  For
   example, consider two different deployments, one wherein there exists
   a redemption anonymity set of size two and another wherein there
   exists a redemption anonymity set of size 2^32.  Although Origin-
   Client unlinkability guarantees that the Origin cannot link any two
   requests to the same Client based on these contexts, respectively,
   the smaller these sets become, the higher the probability of
   determining the "true" Client.

   In practice, there are a number of ways in which the size of
   anonymity sets may be reduced or partitioned, though they all center
   around the concept of consistency.  In particular, by definition, all
   Clients in an anonymity set share a consistent view of information
   needed to run the issuance and redemption protocols.  The Issuer
   Public Key is an example of the type of information needed to run
   these protocols.  When two Clients have inconsistent information,
   these Clients effectively have different redemption contexts and
   therefore belong in different anonymity sets.

   The following subsections discuss issues that can influence anonymity
   set size.  For each issue, we discuss mitigations or safeguards to
   protect against the underlying problem.

6.1.  Partitioning by Issuance Metadata

   Any public or private metadata bits of information can be used to
   further segment the size of the Client anonymity set.  Any Issuer
   that wanted to track a single Client could add a single metadata bit
   to Client tokens.  For the tracked Client, it would set the bit to 1,
   and 0 otherwise.  Adding additional bits provides an exponential
   increase in tracking granularity in a manner similar to introducing
   more Issuers (though with more potential targeting).

   For this reason, deployments should take the amount of metadata used
   by an Issuer in creating tokens, together with the bits of
   information that Issuers may learn about Clients through other means,
   into account.  Since this metadata may be useful for practical
   deployments of Privacy Pass, Issuers must balance this against the
   reduction in Client privacy.

   The number of permitted metadata values often depends on deployment-
   specific details.  In general, limiting the amount of metadata
   permitted helps limit the extent to which metadata can uniquely
   identify individual Clients.  Failure to bound the number of possible
   metadata values can therefore lead to a reduction in Client privacy.
   Most token types do not admit any metadata, so this bound is
   implicitly enforced.

6.2.  Partitioning by Issuance Consistency

   Anonymity sets can be partitioned by information used for the
   issuance protocol, including metadata, Issuer configuration (keys),
   and Issuer selection.

   Any issuance metadata bits of information can be used to partition
   the Client anonymity set.  For example, any Issuer that wanted to
   track a single Client could add a single metadata bit to Client
   tokens.  For the tracked Client, it would set the bit to 1, and 0
   otherwise.  Adding additional bits provides an exponential increase
   in tracking granularity in a manner similar to introducing more
   Issuers (though with more potential targeting).

   The number of active Issuer configurations also contributes to
   anonymity set partitioning.  In particular, when an Issuer updates
   their configuration and the corresponding key pair, any Client that
   invokes the issuance protocol with this configuration becomes part of
   a set of Clients that also ran the issuance protocol using the same
   configuration.  Issuer configuration updates, e.g., due to key
   rotation, are an important part of hedging against long-term private
   key compromise.  In general, key rotations represent a trade-off
   between Client privacy and Issuer security.  Therefore, it is
   important that key rotations occur on a regular cycle to reduce the
   harm of an Issuer key compromise.

   Lastly, if Clients are willing to issue and redeem tokens from a
   large number of Issuers for a specific Origin and that Origin accepts
   tokens from all Issuers, partitioning can occur.  As an example, if a
   Client obtains tokens from many Issuers and an Origin later
   challenges that Client for a token from each Issuer, the Origin can
   learn information about the Client.  This arrangement might happen if
   Clients request tokens from different Issuers, each of which has
   different Attester preferences.  Each per-Issuer token that a Client
   holds essentially corresponds to a bit of information about the
   Client that the Origin learns.  Therefore, there is an exponential
   loss in privacy relative to the number of Issuers.

   The fundamental problem here is that the number of possible issuance
   configurations, including the keys in use and the Issuer identities
   themselves, can partition the Client anonymity set.  To mitigate this
   problem, Clients SHOULD bound the number of active issuance
   configurations per Origin as well as across Origins.  Moreover,
   Clients SHOULD employ some form of consistency mechanism to ensure
   that they receive the same configuration information and are not
   being actively partitioned into smaller anonymity sets.  See
   [CONSISTENCY] for possible consistency mechanisms.  Depending on the
   deployment, the Attester might assist the Client in applying these
   consistency checks across Clients.  Failure to apply a consistency
   check can allow Client-specific keys to violate Origin-Client
   unlinkability.

6.3.  Partitioning by Side Channels

   Side-channel attacks, such as those based on timing correlation,
   could be used to reduce anonymity set size.  In particular, for
   interactive tokens that are bound to a Client-specific redemption
   context, the anonymity set of Clients during the issuance protocol
   consists of those Clients that started issuance between the time of
   the Origin's challenge and the corresponding token redemption.
   Depending on the number of Clients using a particular Issuer during
   that time window, the set can be small.  Applications should take
   such side channels into consideration before choosing a particular
   deployment model and type of token challenge and redemption context.

7.  Security Considerations

   This document describes security and privacy requirements for the
   Privacy Pass redemption and issuance protocols.  It also describes
   deployment models built around non-collusion assumptions and privacy
   considerations for using Privacy Pass within those models.  Ensuring
   Client privacy -- separation of attestation and redemption contexts
   -- requires active work on behalf of the Client, especially in the
   presence of malicious Issuers and Origins.  Implementing the
   mitigations discussed in Sections 4 and 6 is therefore necessary to
   ensure that Privacy Pass offers meaningful privacy improvements to
   end users.

7.1.  Token Caching

   Depending on the Origin's token challenge, Clients can request and
   cache more than one token using an issuance protocol.  Cached tokens
   help improve privacy by separating the time of token issuance from
   the time of token redemption; they also allow Clients to reduce the
   overhead of receiving new tokens via the issuance protocol.

   As a consequence, Origins that send token challenges that are
   compatible with cached tokens need to take precautions to ensure that
   tokens are not replayed.  This is typically done via keeping track of
   tokens that are redeemed for the period of time in which cached
   tokens would be accepted for particular challenges.

   Moreover, since tokens are not intrinsically bound to Clients, it is
   possible for malicious Clients to collude and share tokens in a so-
   called "hoarding attack".  As an example of this attack, many
   distributed Clients could obtain cacheable tokens and then share them
   with a single Client to redeem the tokens in a way that would violate
   an Origin's attempt to limit tokens to any one particular Client.  In
   general, mechanisms for mitigating hoarding attacks depend on the
   deployment model and use case.  For example, in the Joint Origin and
   Issuer model, comparing the issuance and redemption contexts can help
   detect hoarding attacks, i.e., if the distribution of redemption
   contexts is noticeably different from the distribution of issuance
   contexts.  Rate-limiting issuance, at either the Client, Attester, or
   Issuer, can also help mitigate these attacks.

8.  IANA Considerations

   This document has no IANA actions.

9.  References

9.1.  Normative References

   [AUTHSCHEME]
              Pauly, T., Valdez, S., and C. A. Wood, "The Privacy Pass
              HTTP Authentication Scheme", RFC 9577,
              DOI 10.17487/RFC9577, June 2024,
              <https://www.rfc-editor.org/info/rfc9577>.

   [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/info/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/info/rfc8174>.

9.2.  Informative References

   [CENTRALIZATION]
              Nottingham, M., "Centralization, Decentralization, and
              Internet Standards", RFC 9518, DOI 10.17487/RFC9518,
              December 2023, <https://www.rfc-editor.org/info/rfc9518>.

   [CONSISTENCY]
              Davidson, A., Finkel, M., Thomson, M., and C. A. Wood,
              "Key Consistency and Discovery", Work in Progress,
              Internet-Draft, draft-ietf-privacypass-key-consistency-01,
              10 July 2023, <https://datatracker.ietf.org/doc/html/
              draft-ietf-privacypass-key-consistency-01>.

   [DMS2004]  Dingledine, R., Mathewson, N., and P. Syverson, "Tor: The
              Second-Generation Onion Router", May 2004,
              <https://svn.torproject.org/svn/projects/design-paper/tor-
              design.html>.

   [HIJK21]   Huang, S., Iyengar, S., Jeyaraman, S., Kushwah, S., Lee,
              C-K., Luo, Z., Mohassel, P., Raghunathan, A., Shaikh, S.,
              Sung, Y-C., and A. Zhang, "DIT: De-Identified
              Authenticated Telemetry at Scale", January 2021,
              <https://research.fb.com/privatestats>.

   [ISSUANCE] Celi, S., Davidson, A., Valdez, S., and C. A. Wood,
              "Privacy Pass Issuance Protocols", RFC 9578,
              DOI 10.17487/RFC9578, June 2024,
              <https://www.rfc-editor.org/info/rfc9578>.

   [KLOR20]   Kreuter, B., Lepoint, T., Orrù, M., Raykova, M., and
              Springer International Publishing, "Anonymous Tokens with
              Private Metadata Bit", Advances in Cryptology - CRYPTO
              2020, pp. 308-336, DOI 10.1007/978-3-030-56784-2_11, 2020,
              <https://doi.org/10.1007/978-3-030-56784-2_11>.

   [OHTTP]    Thomson, M. and C. A. Wood, "Oblivious HTTP", RFC 9458,
              DOI 10.17487/RFC9458, January 2024,
              <https://www.rfc-editor.org/info/rfc9458>.

   [PrivacyPassCloudflare]
              Sullivan, N., "Cloudflare supports Privacy Pass", November
              2017, <https://blog.cloudflare.com/cloudflare-supports-
              privacy-pass/>.

   [RATE-LIMITED]
              Hendrickson, S., Iyengar, J., Pauly, T., Valdez, S., and
              C. A. Wood, "Rate-Limited Token Issuance Protocol", Work
              in Progress, Internet-Draft, draft-ietf-privacypass-rate-
              limit-tokens-06, 1 April 2024,
              <https://datatracker.ietf.org/doc/html/draft-ietf-
              privacypass-rate-limit-tokens-06>.

   [RFC9334]  Birkholz, H., Thaler, D., Richardson, M., Smith, N., and
              W. Pan, "Remote ATtestation procedureS (RATS)
              Architecture", RFC 9334, DOI 10.17487/RFC9334, January
              2023, <https://www.rfc-editor.org/info/rfc9334>.

Acknowledgements

   The authors would like to thank Eric Kinnear, Scott Hendrickson,
   Tommy Pauly, Christopher Patton, Benjamin Schwartz, Martin Thomson,
   Steven Valdez, and other contributors of the Privacy Pass Working
   Group for many helpful contributions to this document.

Authors' Addresses

   Alex Davidson
   NOVA LINCS, Universidade NOVA de Lisboa
   Largo da Torre
   Caparica
   Portugal
   Email: alex.davidson92@gmail.com


   Jana Iyengar
   Fastly
   Email: jri@fastly.com


   Christopher A. Wood
   Cloudflare
   101 Townsend St
   San Francisco, CA 94107
   United States of America
   Email: caw@heapingbits.net