RFC 9458 - Oblivious HTTP

Overview

RFC 9458 defines Oblivious HTTP (OHTTP), a protocol that allows a client to make HTTP requests without revealing the request contents to the relay or the client identity to the target.

Key Concepts

Participants

Encryption

OHTTP uses Hybrid Public Key Encryption (HPKE) from RFC 9180:

Message Format

Requests use Binary HTTP (RFC 9292) encapsulated in HPKE:

Encapsulated Request {
  Key ID (8),
  KEM ID (16),
  KDF ID (16),
  AEAD ID (16),
  Encapsulated Key (Npk),
  HPKE-encrypted Request (*)
}
RFCTitlePurpose
RFC 9458Oblivious HTTPCore protocol
RFC 9292Binary HTTP MessagesRequest encoding
RFC 9180HPKEEncryption
RFC 9457Problem DetailsError format

Key Configuration

The gateway publishes its public key at /.well-known/ohttp-gateway:

Key Configuration {
  Key ID (8),
  KEM ID (16),
  Public Key (Npk),
  Symmetric Algorithms Length (16),
  Symmetric Algorithms (..),
}

Each symmetric algorithm entry contains:

Security Considerations

  1. Request Unlinkability: The relay cannot link requests to responses
  2. Client Anonymity: The gateway sees only the relay’s IP
  3. Content Privacy: The relay cannot read request/response contents
  4. Replay Protection: Built into HPKE

Limitations

Future Work

draft-ietf-ohai-chunked-ohttp extends OHTTP to support streaming via chunked transfer.