@@ -10,11 +10,11 @@ keyword:
1010- media over quic
1111- privacy-pass
1212venue :
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
2020stand_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
6464rules.
6565
6666
@@ -80,21 +80,21 @@ broadcasts, and other latency-sensitive use cases. MoQ includes mechanisms for
8080authorization through tokens that can be used to control access to media
8181streams, 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
8686access 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
9393tokens 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
9898preserving 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
107107interactions :
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
111111issuance 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
117117signatures 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
122122tokens 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
128128mechanisms.
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
131131by 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
162162However, 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.
164164The 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
185185media 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
194194issuer-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
198198across 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
204204structure 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
227227information encoded as a UTF-8 string with the following format :
228228
229229TODO : Degfine origin_info to be binary format
230230
231231~~~~
232232moq-scope = operation ":" namespace-pattern [":" track-pattern]
233- operation = "subscribe" / "fetch" / "publish" / "announce"
233+ operation = "subscribe" / "fetch" / "publish" / "announce"
234234namespace-pattern = exact-match / prefix-match
235235track-pattern = exact-match / prefix-match
236236exact-match = namespace/name-string
@@ -239,38 +239,38 @@ prefix-match = namespace/name-string"*"
239239
240240Examples :
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
252252privacy.
253253
254254# ## Namespace Matching
255255
256256Track 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
275275Track 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
295295operation :
296296
297- 1. Extract the Privacy Pass token from the MoQ control
297+ 1. Extract the Privacy Pass token from the MoQ control
298298message (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
301301issuer 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
312312field :
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
319319in 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
332332conditions 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
347347authorization 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
352352SETUP 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
374374operation-specific control messages :
375375
376376~~~
377377SUBSCRIBE {
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
433433tokens.
434434
435435# IANA Considerations
0 commit comments