Oblivious DNS over HTTPS (ODoH)

Oblivious DNS over HTTPS (ODoH) #

ODoH decouples DNS query content from client identity by introducing a proxy between client and resolver.

Problem with DoH/DoT #

DNS over HTTPS/TLS encrypts queries from eavesdroppers but the resolver still sees:

  • Client IP address
  • Full query content
  • Query timing

Resolver becomes a privacy bottleneck—must be fully trusted.

ODoH Architecture #

Client → Proxy (Oblivious Relay) → Target (Resolver)
EntityKnows Client IPKnows Query
ProxyYesNo (encrypted)
TargetNo (sees proxy IP)Yes (decrypts)
Colluding bothYesYes

Protocol (RFC 9230) #

  1. Client fetches Target’s HPKE public key (via DNS or HTTPS)
  2. Client encrypts query: ct = HPKE.Seal(pk_target, query)
  3. Client sends ct to Proxy
  4. Proxy forwards to Target (cannot decrypt)
  5. Target decrypts, resolves, encrypts response
  6. Response returns via Proxy

Key Encapsulation #

Uses HPKE (Hybrid Public Key Encryption):

  • KEM: X25519 or P-256
  • KDF: HKDF-SHA256
  • AEAD: AES-128-GCM or ChaCha20-Poly1305

Security Properties #

PropertyGuarantee
Query confidentialityProxy cannot read queries
Client anonymityTarget cannot identify client
Response integrityAEAD authentication
Forward secrecyPer-query ephemeral keys

Threat Model #

Assumes non-colluding Proxy and Target. If they collude:

  • Full deanonymization possible
  • Reduces to standard DoH

Mitigations:

  • Use Proxy and Target from different jurisdictions/organizations
  • Tor-like multi-hop extensions (not in spec)

Comparison #

ProtocolEncryptionHides from ISPHides from Resolver
Plain DNSNoneNoNo
DoT/DoHYesYesNo
ODoHYesYesYes*
DNSCrypt AnonymizedYesYesYes*

*Assuming non-collusion

Deployments #

  • Cloudflare: odoh.cloudflare-dns.com
  • Apple Private Relay (uses ODoH-like design)
  • Fastly as relay provider

Limitations #

  • Additional latency (extra hop)
  • Requires trust in non-collusion assumption
  • Key distribution bootstrapping problem
  • Limited resolver support

See Also #


Written by Claude Opus 4.5