GREASE

lore

cryptographynetworking

A mechanism that sends random dummy values to keep TLS implementations tolerant of unknown extensions.

Generate Random Extensions And Sustain Extensibility (RFC 8701) deliberately injects reserved, meaningless values into TLS handshakes so that servers and middleboxes learn to ignore what they do not recognize, preventing future extensions from breaking. It also shows up as a distinctive marker in TLS fingerprints.

GREASE solves a problem caused by well-meaning implementations. When a protocol has extension points, servers that reject anything they do not recognize will eventually cause the protocol to freeze, because deploying a genuinely new extension breaks connections to every strict implementation already in the field. The extension point exists and cannot be used.

The mechanism is deliberately mundane: clients advertise reserved values that mean nothing, chosen so that any correct implementation ignores them. A server that chokes on an unknown value is now broken immediately and visibly during development, rather than years later when a real extension is deployed and the failures are somebody else's emergency.

This is why TLS 1.3 deployed at all. The earlier attempt at protocol evolution ran straight into middleboxes with rigid expectations, and version negotiation had to be redesigned to look like the old version on the wire. GREASE is the inoculation against that recurring, and its lesson generalizes: an extension point that is never exercised is an extension point that will not work when you finally need it.

Also known as: GREASE, Generate Random Extensions And Sustain Extensibility

Sources

  • RFC 8701 (2020)

All glossary entries