Concept
KGT — Key Generation Time
KGT is the 15-minute time window that scopes every ASK in HexaEight. It is the Unix minute floored to the nearest 15.
Computing KGT
long nowMinutes = (long)(DateTime.UtcNow - DateTime.UnixEpoch).TotalMinutes;
long kgt = nowMinutes - (nowMinutes % 15); Why a window, not a moment?
- Clock skew tolerance — two parties whose clocks differ by < 15 min compute the same KGT, so handshake-free derivation just works.
- Rotation — every 15 minutes the ASK changes naturally. A leaked key is only useful for messages in its window.
- Replay window — receivers can reject envelopes whose KGT is too far in the past.
Overriding KGT
Most code lets the Bridge pick "now." Pass an explicit KGT to
EncryptEnvelopeAsync when re-encrypting
historical data, replaying flows, or running deterministic tests.