Expose intolerance and reject invalid selections
05GREASE should reveal extensibility bugs rather than hide them behind automatic fallback. Valid negotiation still needs a real common parameter.
Retrying with GREASE disabled is SHOULD NOT. Such retries can conceal the problem. This recommendation is distinct from mandatory rejection of a negotiated GREASE value.
Source for this drawing: RFC 8701 · Read RFC section 7 ↗
New to this? Start hereA quick picture + helpful background
A seal answers a specific question.
A certificate or signature supports particular checks about a key or message. It does not automatically prove that every claim or sender is trustworthy.
Helpful first, if these ideas are unfamiliar
These pictures are analogies to help you learn. The linked RFC explains the actual rules.
Terms in this drawing
Related RFCs and changes
“Updates” changes part of an earlier RFC. “Obsoletes” replaces it. This list shows selected related documents.
Ignore unknown offers; fail invalid selections.
- A client MUST fail when the server negotiates GREASE, including the ServerHello cipher_suite illustrated here. The client may reuse ordinary unknown-selection rejection logic.
- If no known parameter remains after ignoring unknown offers, parameter negotiation fails. GREASE does not create compatibility.
- Implementations SHOULD NOT retry with GREASE disabled on connection failure. That fallback would mask extensibility failures; it is not a MUST NOT rule.
The source also covers rejected server-selected GREASE versions, extensions, groups and signature algorithms in the specified messages. A buggy peer rejecting unknown offers is the defect being exposed, not desired behavior. GREASE is not authentication, encryption or a guarantee of future compatibility. Non-random choices can enable implementation or user fingerprinting; randomization does not promise anonymity.
Read the RFC section ↗