rfc9497v6.txt   rfc9497.txt 
Internet Research Task Force (IRTF) A. Davidson Internet Research Task Force (IRTF) A. Davidson
Request for Comments: 9497 Brave Software Request for Comments: 9497 Brave Software
Category: Informational A. Faz-Hernandez Category: Informational A. Faz-Hernandez
ISSN: 2070-1721 N. Sullivan ISSN: 2070-1721 N. Sullivan
C. A. Wood C. A. Wood
Cloudflare, Inc. Cloudflare, Inc.
October 2023 November 2023
Oblivious Pseudorandom Functions (OPRFs) Using Prime-Order Groups Oblivious Pseudorandom Functions (OPRFs) Using Prime-Order Groups
Abstract Abstract
An Oblivious Pseudorandom Function (OPRF) is a two-party protocol An Oblivious Pseudorandom Function (OPRF) is a two-party protocol
between a client and a server for computing the output of a between a client and a server for computing the output of a
Pseudorandom Function (PRF). The server provides the PRF private Pseudorandom Function (PRF). The server provides the PRF private
key, and the client provides the PRF input. At the end of the key, and the client provides the PRF input. At the end of the
protocol, the client learns the PRF output without learning anything protocol, the client learns the PRF output without learning anything
skipping to change at line 729 skipping to change at line 729
contextString = CreateContextString(modePOPRF, identifier) contextString = CreateContextString(modePOPRF, identifier)
return POPRFServerContext(contextString, skS) return POPRFServerContext(contextString, skS)
def SetupPOPRFClient(identifier, pkS): def SetupPOPRFClient(identifier, pkS):
contextString = CreateContextString(modePOPRF, identifier) contextString = CreateContextString(modePOPRF, identifier)
return POPRFClientContext(contextString, pkS) return POPRFClientContext(contextString, pkS)
3.2.1. Deterministic Key Generation 3.2.1. Deterministic Key Generation
This section describes a deterministic key generation function, This section describes a deterministic key generation function,
DeriveKeyPair. It accepts a seed of Ns bytes generated from a DeriveKeyPair. It accepts a seed of 32 bytes generated from a
cryptographically secure random number generator and an optional cryptographically secure random number generator and an optional
(possibly empty) info string. The constant Ns corresponds to the (possibly empty) info string. Note that, by design, knowledge of
size in bytes of a serialized Scalar and is defined in Section 2.1. seed and info is necessary to compute this function, which means that
Note that, by design, knowledge of seed and info is necessary to the secrecy of the output private key (skS) depends on the secrecy of
compute this function, which means that the secrecy of the output seed (since the info string is public).
private key (skS) depends on the secrecy of seed (since the info
string is public).
Input: Input:
opaque seed[Ns] opaque seed[32]
PublicInput info PublicInput info
Output: Output:
Scalar skS Scalar skS
Element pkS Element pkS
Parameters: Parameters:
Group G Group G
skipping to change at line 2894 skipping to change at line 2892
Authors' Addresses Authors' Addresses
Alex Davidson Alex Davidson
Brave Software Brave Software
Email: alex.davidson92@gmail.com Email: alex.davidson92@gmail.com
Armando Faz-Hernandez Armando Faz-Hernandez
Cloudflare, Inc. Cloudflare, Inc.
101 Townsend St 101 Townsend St
San Francisco, San Francisco, CA
United States of America United States of America
Email: armfazh@cloudflare.com Email: armfazh@cloudflare.com
Nick Sullivan Nick Sullivan
Cloudflare, Inc. Cloudflare, Inc.
101 Townsend St 101 Townsend St
San Francisco, San Francisco, CA
United States of America United States of America
Email: nick@cloudflare.com Email: nicholas.sullivan+ietf@gmail.com
Christopher A. Wood Christopher A. Wood
Cloudflare, Inc. Cloudflare, Inc.
101 Townsend St 101 Townsend St
San Francisco, San Francisco, CA
United States of America United States of America
Email: caw@heapingbits.net Email: caw@heapingbits.net
 End of changes. 8 change blocks. 
13 lines changed or deleted 11 lines changed or added

This html diff was produced by rfcdiff 1.48.