16. Extensibility and Versioning
PALISADE is designed to be extensible while preserving strong interoperability and security guarantees.
Future protocol versions and extensions MUST adhere to the following principles:
Explicit Versioning
All protocol versions MUST be explicitly signaled during the handshake and MUST be bound into the handshake transcript prior to key derivation.
No Silent Downgrade
Implementations MUST NOT silently fall back to older protocol versions, weaker algorithms, or reduced security parameters without explicit negotiation.
Profile Stability
The PALISADE-CORE profile defines a stable baseline and MUST remain interoperable across future protocol versions unless explicitly deprecated.
Extension Isolation
Optional features and extensions MUST be cryptographically bound to the handshake transcript and MUST NOT alter PALISADE-CORE semantics unless explicitly negotiated.
Fail-Safe Defaults
Unknown protocol versions, extensions, or parameters MUST result in handshake failure rather than silent acceptance.
These constraints ensure that PALISADE can evolve to incorporate new post-quantum algorithms and features without introducing downgrade vulnerabilities or interoperability hazards.
16.1 Handshake Extensions
PALISADE supports optional handshake extensions using the following format:
HandshakeExtension =
extension_type (2 bytes, uint16)
extension_length (2 bytes, uint16)
extension_data (extension_length bytes)Normative requirements:
- Extensions MUST be encoded deterministically and included in the handshake transcript.
- Extensions MUST be processed only if explicitly recognized and supported.
- Unknown extensions MUST cause handshake failure unless the extension is explicitly specified as ignorable by the protocol definition.
- Extensions MUST NOT modify core protocol behavior unless explicitly negotiated.
16.2 Timestamp Field (OPTIONAL)
Status: OPTIONAL feature, disabled by default.
Rationale: Timestamps introduce clock-synchronization dependencies and operational complexity. PALISADE's primary replay protection mechanism is the epoch/sequence anti-replay window (see Section 8 and Appendix D). The timestamp field is provided solely as an optional defense-in-depth mechanism for deployments that require limited long-term replay detection.
Default Behavior (timestamps disabled)
- Implementations MUST set
timestamp = 0. - Implementations MUST NOT validate timestamps.
- Receivers MUST accept packets with
timestamp = 0without validation.
Enabled Behavior (optional)
When enabled, the timestamp field MAY be used for:
- Coarse diagnostic ordering information.
- Detection of very stale packets beyond the anti-replay window.
Encoding:
- The timestamp is a 32-bit unsigned integer.
- The RECOMMENDED encoding is seconds since session establishment.
- Implementations MAY alternatively use truncated UNIX time, provided both peers interpret the encoding consistently.
Validation Rules (when enabled)
Receivers MAY validate packet timestamps using:
current_time = now() packet_time = session_start_time + timestamp drift = abs(current_time - packet_time)
Packets MAY be discarded if:
drift > Δ, where Δ defaults to 180 seconds.
Normative constraints:
- Implementations MAY configure Δ up to a maximum of 600 seconds.
- Implementations MUST NOT rely solely on timestamps for replay protection.
- Implementations MUST NOT reject packets solely due to timestamp failure if epoch/sequence validation succeeds.
Security Note:
Timestamp validation is defense-in-depth only. The epoch/sequence anti-replay window remains the authoritative replay protection mechanism. See Appendix D for replay protection semantics independent of timestamps.
PALISADE Protocol Specification Draft 00
INFORMATIONAL