Skip to content

Commit a91a600

Browse files
author
ID Bot
committed
Automatic update of venue information
1 parent 670003e commit a91a600

File tree

1 file changed

+85
-85
lines changed

1 file changed

+85
-85
lines changed

draft-ietf-moq-privacy-pass-auth.md

Lines changed: 85 additions & 85 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,11 @@ keyword:
1010
- media over quic
1111
- privacy-pass
1212
venue:
13-
group: MoQ
14-
type: Working Group
13+
group: "Media Over QUIC"
14+
type: "Working Group"
1515
home: https://datatracker.ietf.org/wg/moq/
16-
17-
arch: https://mailarchive.ietf.org/arch/browse/moq/
16+
17+
arch: "https://mailarchive.ietf.org/arch/browse/moq/"
1818
repo: https://github.com/moq-wg/moq-transport
1919

2020
stand_alone: yes
@@ -55,12 +55,12 @@ informative:
5555

5656
--- abstract
5757

58-
This document specifies the use of Privacy Pass architecture and issuance
59-
protocols for authorization in Media over QUIC (MoQ) transport protocol. It
60-
defines how Privacy Pass tokens can be integrated with MoQ's authorization
61-
framework to provide privacy-preserving authentication for subscriptions,
62-
fetches, publications, and relay operations while supporting fine-grained
63-
access control through prefix-based track namespace and track name matching
58+
This document specifies the use of Privacy Pass architecture and issuance
59+
protocols for authorization in Media over QUIC (MoQ) transport protocol. It
60+
defines how Privacy Pass tokens can be integrated with MoQ's authorization
61+
framework to provide privacy-preserving authentication for subscriptions,
62+
fetches, publications, and relay operations while supporting fine-grained
63+
access control through prefix-based track namespace and track name matching
6464
rules.
6565

6666

@@ -80,21 +80,21 @@ broadcasts, and other latency-sensitive use cases. MoQ includes mechanisms for
8080
authorization through tokens that can be used to control access to media
8181
streams, interactive sessions, and relay operations.
8282

83-
Traditional authorization mechanisms often lack the privacy protection needed
84-
for modern media distribution scenarios, where users' viewing patterns and
85-
content preferences should remain private while still enabling fine-grained
83+
Traditional authorization mechanisms often lack the privacy protection needed
84+
for modern media distribution scenarios, where users' viewing patterns and
85+
content preferences should remain private while still enabling fine-grained
8686
access control, namespace restrictions, and operational constraints.
8787

88-
Privacy Pass {{RFC9576}} provides a privacy-preserving authorization
89-
architecture that enables anonymous authentication through unlinkable tokens.
90-
The Privacy Pass architecture consists of four entities: Client, Origin, Issuer,
91-
and Attester, which work together to provide token-based authorization without
92-
compromising user privacy. The issuance protocols {{RFC9578}} define how these
88+
Privacy Pass {{RFC9576}} provides a privacy-preserving authorization
89+
architecture that enables anonymous authentication through unlinkable tokens.
90+
The Privacy Pass architecture consists of four entities: Client, Origin, Issuer,
91+
and Attester, which work together to provide token-based authorization without
92+
compromising user privacy. The issuance protocols {{RFC9578}} define how these
9393
tokens are created and verified.
9494

95-
This document defines how Privacy Pass tokens can be integrated with MoQ's
96-
authorization framework to provide comprehensive access control for media
97-
streaming, real-time communication, and interactive content services while
95+
This document defines how Privacy Pass tokens can be integrated with MoQ's
96+
authorization framework to provide comprehensive access control for media
97+
streaming, real-time communication, and interactive content services while
9898
preserving user privacy through unlinkable authentication tokens.
9999

100100
## Requirements Language
@@ -103,31 +103,31 @@ preserving user privacy through unlinkable authentication tokens.
103103

104104
# Privacy Pass Architecture for MoQ
105105

106-
The Privacy Pass MoQ integration involves the following entities and their
106+
The Privacy Pass MoQ integration involves the following entities and their
107107
interactions:
108108

109-
- **Client**: The MoQ client requesting access to media content. The client is
110-
responsible for obtaining Privacy Pass tokens through the attestation and
109+
- **Client**: The MoQ client requesting access to media content. The client is
110+
responsible for obtaining Privacy Pass tokens through the attestation and
111111
issuance process, and presenting these tokens when requesting MoQ operations.
112112

113-
- **MoQ Relay/Origin**: The MoQ relay server or origin that forwards media
114-
content and requires authorization. The relay validates Privacy Pass tokens,
115-
enforces access policies, and forwards authorized requests to origins or other
116-
relays. Relays maintain configuration for trusted issuers and validate token
113+
- **MoQ Relay/Origin**: The MoQ relay server or origin that forwards media
114+
content and requires authorization. The relay validates Privacy Pass tokens,
115+
enforces access policies, and forwards authorized requests to origins or other
116+
relays. Relays maintain configuration for trusted issuers and validate token
117117
signatures and metadata.
118118

119-
- **Privacy Pass Issuer**: The entity that issues Privacy Pass tokens to clients
120-
after successful attestation. The issuer operates the token issuance protocol,
121-
manages cryptographic keys, and may implement rate limiting. The issuer creates
119+
- **Privacy Pass Issuer**: The entity that issues Privacy Pass tokens to clients
120+
after successful attestation. The issuer operates the token issuance protocol,
121+
manages cryptographic keys, and may implement rate limiting. The issuer creates
122122
tokens with appropriate MoQ-specific metadata.
123123

124-
- **Privacy Pass Attester**: The entity that attests to properties of clients
125-
for the purposes of token issuance. The attester verifies client credentials,
126-
subscription status, or other eligibility criteria. Common attestation methods
127-
include username/password, OAuth, device certificates, or other authentication
124+
- **Privacy Pass Attester**: The entity that attests to properties of clients
125+
for the purposes of token issuance. The attester verifies client credentials,
126+
subscription status, or other eligibility criteria. Common attestation methods
127+
include username/password, OAuth, device certificates, or other authentication
128128
mechanisms.
129129

130-
In the below deployment, the MoQ relay and Privacy Pass issuer are operated
130+
In the below deployment, the MoQ relay and Privacy Pass issuer are operated
131131
by different entities to enhance privacy through separation of concerns:
132132

133133
~~~ascii
@@ -142,25 +142,25 @@ by different entities to enhance privacy through separation of concerns:
142142
| |──────────(2)──────────────────────────────────
143143
| |
144144
| ▼
145-
| ┌─────────────┐
145+
| ┌─────────────┐
146146
| │ Privacy Pass│
147147
|(3) │ Issuer │
148-
| │ (Separate) │
149-
| └─────────────┘
150-
151-
152-
┌─────────────┐
148+
| │ (Separate) │
149+
| └─────────────┘
150+
151+
152+
┌─────────────┐
153153
│ MoQ Relay │
154-
└─────────────┘
155-
154+
└─────────────┘
155+
156156
(1) Client attestation with separate Attester
157157
(2) Token issuance from separate Issuer to Client
158158
(3) Client requests media access with token from relay
159159

160160
~~~
161161

162162
However, in certain deployments the MoQ relay and Privacy Pass issuer may be
163-
operated by the same entity to simplify key management and policy coordination.
163+
operated by the same entity to simplify key management and policy coordination.
164164
The details of such an intgrated architecture is TBD.
165165

166166

@@ -180,27 +180,27 @@ before issuing tokens
180180

181181
# Privacy Pass Token Integration
182182

183-
This section describes how Privacy Pass tokens are integrated into the MoQ
184-
transport protocol to provide privacy-preserving authorization for various
183+
This section describes how Privacy Pass tokens are integrated into the MoQ
184+
transport protocol to provide privacy-preserving authorization for various
185185
media operations.
186186

187187
## Token Types for MoQ Authorization
188188

189-
This specification uses the existing Privacy Pass token types defined in
189+
This specification uses the existing Privacy Pass token types defined in
190190
{{RFC9578}}:
191191

192-
- **Token Type 0x0001 (VOPRF(P-384, SHA-384))**: Privately verifiable tokens
193-
using Verifiable Oblivious Pseudorandom Function for deployments requiring
192+
- **Token Type 0x0001 (VOPRF(P-384, SHA-384))**: Privately verifiable tokens
193+
using Verifiable Oblivious Pseudorandom Function for deployments requiring
194194
issuer-only validation capability.
195195

196-
- **Token Type 0x0002 (Blind RSA (2048-bit))**: Publicly verifiable tokens
197-
using blind RSA signatures for deployments requiring distributed validation
196+
- **Token Type 0x0002 (Blind RSA (2048-bit))**: Publicly verifiable tokens
197+
using blind RSA signatures for deployments requiring distributed validation
198198
across multiple relays.
199199

200200
## Token Structure
201201

202-
Privacy Pass tokens used in MoQ MUST follow the structure defined in
203-
{{RFC9577}} for the PrivateToken HTTP authentication scheme. The token
202+
Privacy Pass tokens used in MoQ MUST follow the structure defined in
203+
{{RFC9577}} for the PrivateToken HTTP authentication scheme. The token
204204
structure includes:
205205

206206
- **Token Type**: 2-byte identifier specifying the issuance protocol used
@@ -211,7 +211,7 @@ structure includes:
211211

212212
### Token Challenge Structure for MoQ
213213

214-
MoQ-specific TokenChallenge structures use the default format defined in
214+
MoQ-specific TokenChallenge structures use the default format defined in
215215
{{RFC9577}} with MoQ-specific parameters in the origin_info field:
216216

217217
~~~
@@ -223,14 +223,14 @@ struct {
223223
} TokenChallenge;
224224
~~~
225225

226-
For MoQ usage, the origin_info field contains MoQ-specific authorization scope
226+
For MoQ usage, the origin_info field contains MoQ-specific authorization scope
227227
information encoded as a UTF-8 string with the following format:
228228

229229
TODO: Degfine origin_info to be binary format
230230

231231
~~~~
232232
moq-scope = operation ":" namespace-pattern [":" track-pattern]
233-
operation = "subscribe" / "fetch" / "publish" / "announce"
233+
operation = "subscribe" / "fetch" / "publish" / "announce"
234234
namespace-pattern = exact-match / prefix-match
235235
track-pattern = exact-match / prefix-match
236236
exact-match = namespace/name-string
@@ -239,38 +239,38 @@ prefix-match = namespace/name-string"*"
239239

240240
Examples:
241241

242-
- `subscribe:sports.example.com/live/*` - Subscribe to any track under live
242+
- `subscribe:sports.example.com/live/*` - Subscribe to any track under live
243243
sports
244244
- `fetch:vod.example.com/movies/action*` - Fetch video-on-demand action content
245-
- `publish:meetings.example.com/meeting/m123/audio/opus48000` - Publish content
245+
- `publish:meetings.example.com/meeting/m123/audio/opus48000` - Publish content
246246
for meeting m123
247247

248248
## Track Namespace and Track Name Matching Rules
249249

250-
This specification defines prefix-based matching rules for track namespaces
251-
and track names to enable fine-grained access control while maintaining
250+
This specification defines prefix-based matching rules for track namespaces
251+
and track names to enable fine-grained access control while maintaining
252252
privacy.
253253

254254
### Namespace Matching
255255

256256
Track namespace matching supports three modes:
257257

258-
**Exact Match**:
258+
**Exact Match**:
259259

260260
- Pattern: `"example.com/live/sports/soccer"`
261261

262262
- Matches: Only the exact namespace `example.com/live/sports/soccer`
263263

264264
**Prefix Match**:
265265

266-
- Pattern: `"example.com/live/sports/*"`
266+
- Pattern: `"example.com/live/sports/*"`
267267

268268
- Matches: Any namespace starting with `example.com/live/sports/`
269269

270-
- Examples: `example.com/live/sports/soccer`,
270+
- Examples: `example.com/live/sports/soccer`,
271271
`example.com/live/sports/tennis`
272272

273-
### Track Name Matching
273+
### Track Name Matching
274274

275275
Track name matching within authorized namespaces follows the same pattern:
276276

@@ -290,14 +290,14 @@ Track name matching within authorized namespaces follows the same pattern:
290290

291291
### Matching Algorithm
292292

293-
When a MoQ relay receives a request with a Privacy Pass token, it performs the
294-
following validation steps to determine whether to authorize the requested
293+
When a MoQ relay receives a request with a Privacy Pass token, it performs the
294+
following validation steps to determine whether to authorize the requested
295295
operation:
296296

297-
1. Extract the Privacy Pass token from the MoQ control
297+
1. Extract the Privacy Pass token from the MoQ control
298298
message (SETUP, SUBSCRIBE, FETCH, PUBLISH, or ANNOUNCE)
299299

300-
2. Verify the token signature using the appropriate
300+
2. Verify the token signature using the appropriate
301301
issuer public key based on the token type:
302302

303303
- For Token Type 0x0001 (VOPRF): Use the issuer's private validation key
@@ -308,18 +308,18 @@ issuer public key based on the token type:
308308
- Token nonce uniqueness within the issuer's replay window
309309
- Token expiration timestamp (if present in token metadata)
310310

311-
4. Extract the MoQ-specific authorization scope from the token's origin_info
311+
4. Extract the MoQ-specific authorization scope from the token's origin_info
312312
field:
313313

314314
- Authorized operation type (subscribe, fetch, publish, announce)
315315
- Namespace pattern (exact match or prefix match)
316316
- Track name pattern (exact match or prefix match, optional)
317317

318-
5. Verify that the requested MoQ operation matches the operation specified
318+
5. Verify that the requested MoQ operation matches the operation specified
319319
in the token scope:
320320

321321
- SUBSCRIBE operations require "subscribe" scope
322-
- FETCH operations require "fetch" scope
322+
- FETCH operations require "fetch" scope
323323
- PUBLISH operations require "publish" scope
324324
- ANNOUNCE operations require "announce" scope
325325

@@ -328,7 +328,7 @@ in the token scope:
328328
- If Exact Match, the requested namespace/name MUST exactly equal the pattern
329329
- If Prefix Match, the requested namespace/name MUST start with the pattern prefix
330330

331-
Access is granded to the requested resource if and only if ALL of the following
331+
Access is granded to the requested resource if and only if ALL of the following
332332
conditions are met:
333333

334334
- Token signature verification succeeds
@@ -343,12 +343,12 @@ else, authorzation error is returned to the requesting client.
343343

344344
## Token in MOQ Messages
345345

346-
Privacy Pass tokens are provided to MoQ relays using the existing MoQ
346+
Privacy Pass tokens are provided to MoQ relays using the existing MoQ
347347
authorization framework with the following adaptations:
348348

349349
### SETUP Message Authorization
350350

351-
For connection-level authorization, Privacy Pass tokens are included in the
351+
For connection-level authorization, Privacy Pass tokens are included in the
352352
SETUP message's authorization parameter:
353353

354354
~~~
@@ -370,13 +370,13 @@ struct {
370370

371371
### MoQ Operation-Level Authorization
372372

373-
For individual MoQ operation authorization, tokens are included in
373+
For individual MoQ operation authorization, tokens are included in
374374
operation-specific control messages:
375375

376376
~~~
377377
SUBSCRIBE {
378378
Track_Namespace = "sports.example.com/live/soccer",
379-
Track_Name = "video",
379+
Track_Name = "video",
380380
Parameters = [
381381
{
382382
Type = AUTHORIZATION,
@@ -388,10 +388,10 @@ SUBSCRIBE {
388388

389389
# Example Authorization Flow
390390

391-
Below shows an example deployment scenarios where the relay has been
392-
configured with the necessary validation keys and content policies, the
393-
relay can verify Privacy Pass tokens locally and deliver media directly
394-
without contacting the Origin.
391+
Below shows an example deployment scenarios where the relay has been
392+
configured with the necessary validation keys and content policies, the
393+
relay can verify Privacy Pass tokens locally and deliver media directly
394+
without contacting the Origin.
395395

396396
~~~~~ascii
397397
Direct Relay Authorization Flow
@@ -408,11 +408,11 @@ without contacting the Origin.
408408
| (3) Attestation Request | |
409409
|---------------------------------|--------------->|
410410
| (4) Attestation | |
411-
|<-------------------------------------------------|
411+
|<-------------------------------------------------|
412412
| (5) Token Request | |
413-
|-------------------------------->| |
413+
|-------------------------------->| |
414414
| (6) Token | |
415-
|<--------------------------------| |
415+
|<--------------------------------| |
416416
| | | |
417417
| (7) SUBSCRIBE with Token | |
418418
|----------->| | |
@@ -429,7 +429,7 @@ without contacting the Origin.
429429

430430
# Security Considerations
431431

432-
TODO: Add considerations for the security and privacy of the Privacy Pass
432+
TODO: Add considerations for the security and privacy of the Privacy Pass
433433
tokens.
434434

435435
# IANA Considerations

0 commit comments

Comments
 (0)