Executive Summary
JIL Sovereign implements a 7-gate ordered bootstrap protocol for validator nodes. The critical innovation is that code integrity verification (image digest matching) is a mandatory prerequisite before identity verification can begin. Combined with 24-hour consensus authorization tokens forcing daily re-verification.
Problem Statement
Existing validator bootstrap protocols (Kubernetes node join, AWS SSM, Tendermint) verify identity before verifying code integrity. This allows a node running tampered software to authenticate successfully and participate in consensus with compromised code.
- Kubernetes: Identity first (service account token), no image verification gate
- Docker Content Trust: Independent of node authentication, not sequenced
- AWS SSM: IAM role verification, no code integrity gate
- Tendermint: Staking transaction, no pre-auth verification
7-Gate Bootstrap Sequence
| Gate | Name | Purpose | Failure Action |
|---|---|---|---|
| 1 | Handshake | TLS connection to fleet controller | Retry with backoff |
| 2 | Registration | Node identity claim | Halt bootstrap |
| 3 | Image Digest | SHA-256 verification of 17+ container images against pinned manifest | Halt bootstrap |
| 4 | Identity | 5-key-type challenge-response (ed25519, HMAC, API key, SSH, HSM) | Halt bootstrap |
| 5 | Authorization | 24-hour consensus token issued | Halt bootstrap |
| 6 | Configuration | HMAC-signed config bundle pull and validation | Halt bootstrap |
| 7 | Service Start | All services initialized, health checks pass | Halt bootstrap |
Image Digest Verification
Gate 3 computes SHA-256 digests for each of 17+ container images running on the validator and compares each against a centrally pinned manifest maintained in the hq_image_digests table on the fleet controller. Any single mismatch halts the bootstrap.
// Digest verification pseudocode
for each container_image in node.images:
local_digest = sha256(container_image)
pinned_digest = hq.get_pinned_digest(container_image.name)
if local_digest != pinned_digest:
HALT("Image digest mismatch: possible tampering")
return BOOTSTRAP_FAILED
24-Hour Consensus Tokens
Upon successful completion of Gates 3 and 4, a time-limited consensus authorization token is issued with a maximum 24-hour validity period. This forces daily re-execution of the integrity and identity verification sequence, ensuring that any node compromise is detected within 24 hours.
| Property | Value |
|---|---|
| Token type | JWT with HMAC-SHA256 |
| Validity | 24 hours maximum |
| Renewal | Full re-bootstrap required |
| Scope | Consensus participation only |