Replay Attack Prevention
Without a nonce/sequence number, a valid signed message can be captured and replayed:
Header extension:
sequence_number: u64 (monotonically increasing per connection)
nonce: [u8; 12] (random per message, included in HMAC input)
Sequence number: server keeps expected next sequence; reject anything <= last seen.
Sliding window (handles reordering):
- Maintain a bitmask of received sequence numbers in window [last - W, last]
- Reject any message with seq ≤ (last - W) or already seen within window