Core System Architecture Part 71 — Anonymous Network Trustworthy Boot, Host Attestation, Runtime Integrity, Binary Measurement & Compromise Detection Architecture
SIAR — Secure, Local-First, Multi-Transport Communication Platform
Series: Core System Architecture
Part: 71
Status: Architecture specification
Primary language: Rust
Builds on: Core System Architecture Parts 28, 51–53, 61–70
Primary purpose: define SIAR's trustworthy-boot, measured-boot, host-attestation, runtime-integrity, binary/configuration measurement, compromise detection, quarantine, anti-rollback, host identity, and node re-enrollment architecture for infrastructure systems while preserving anonymity and preventing attestation from becoming a client fingerprinting mechanism.
1. Purpose
Infrastructure nodes can be compromised even when application code is memory-safe.
Threats include:
modified bootloader
tampered kernel
patched binary
stale vulnerable image
rootkit
unexpected runtime module
stolen node credential
The governing principle is:
SIAR infrastructure should be able to prove what it booted and what it is running, detect meaningful divergence from trusted state, and quarantine compromised nodes without requiring global hardware attestation for end-user devices.
2. Architectural Position
Firmware / Bootloader
│
▼
Measured / Verified Boot
│
▼
Host Measurement Register
│
▼
Artifact + Config Measurement
│
▼
Attestation Evidence
│
▼
Verifier
│
▼
Allow / Degrade / Quarantine
3. Core Separation
Keep distinct:
boot trust
host identity
artifact identity
config identity
runtime integrity
service identity
user identity
4. Non-Goals
Part 71 does not:
require TPM on every client device
treat attestation as proof a service is bug-free
make one hardware vendor mandatory
allow remote attestation to identify users
5. Trustworthy Boot Classes
#![allow(unused)] fn main() { pub enum BootTrustClass { Unmeasured, Measured, Verified, Attested, } }
6. Unmeasured
No cryptographic boot evidence.
7. Measured
Components are hashed/measured.
8. Verified
Boot chain enforces signatures.
9. Attested
Remote verifier receives signed measurement evidence.
10. Recommended Infrastructure Baseline
Verified + Measured
for critical nodes.
11. Tier0 Recommendation
Verified + Measured + Attested
where hardware/platform supports it.
12. Boot Chain
Possible chain:
firmware
→ bootloader
→ kernel
→ initramfs
→ OS image
→ SIAR service artifact
13. Measurement Record
#![allow(unused)] fn main() { pub struct BootMeasurement { pub component: BootComponent, pub digest: ContentDigest, } }
14. Boot Component
#![allow(unused)] fn main() { pub enum BootComponent { Firmware, Bootloader, Kernel, Initramfs, OsImage, ServiceArtifact, } }
15. Verified Boot
Each trusted stage verifies next.
16. Secure Boot
Platform implementation option.
17. Hard Rule
Unsigned boot component cannot enter production trust chain.
18. Measured Boot
Measurements recorded in TPM-like PCRs or equivalent.
19. TPM
Preferred infrastructure primitive where available.
20. TPM Roles
measurement
attestation key
sealed secret support
21. HSM
Different role.
22. TPM ≠ HSM
Hard rule conceptually.
23. TPM
Host-bound trust.
24. HSM
High-value key custody.
25. Attestation Key
Dedicated.
26. No Reuse Of Provider Signing Key
Hard rule.
27. Host Attestation Identity
#![allow(unused)] fn main() { pub struct HostAttestationId(pub [u8; 32]); }
28. Infrastructure Only
Must not be exposed to end users.
29. Attestation Evidence
#![allow(unused)] fn main() { pub struct AttestationEvidence { pub host: HostAttestationId, pub boot_measurements: Vec<BootMeasurement>, pub artifact_digest: BuildHash, pub config_digest: ConfigDigest, pub nonce: AttestationNonce, pub signature: AttestationSignature, } }
30. Nonce
Prevents replay.
31. Attestation Freshness
Short-lived.
32. No Static Evidence Reuse
Hard rule.
33. Attestation Verifier
#![allow(unused)] fn main() { pub trait AttestationVerifier { fn verify( &self, evidence: &AttestationEvidence, policy: &AttestationPolicy, ) -> Result<AttestationDecision, AttestationError>; } }
34. Decision
#![allow(unused)] fn main() { pub enum AttestationDecision { Trusted, Degraded, Quarantine, } }
35. Trusted
Measurements match allowed state.
36. Degraded
Known non-critical variance.
37. Quarantine
Unsafe/unknown critical divergence.
38. Attestation Policy
#![allow(unused)] fn main() { pub struct AttestationPolicy { pub allowed_boot_profiles: BTreeSet<BootProfileId>, pub allowed_artifacts: BTreeSet<BuildHash>, pub allowed_config_versions: BTreeSet<RuntimePolicyVersion>, } }
39. Boot Profile
Versioned allowed measurement set.
40. No One Hardcoded PCR Set Forever
Hard rule.
41. Profile Lifecycle
proposed
→ approved
→ active
→ retiring
→ blocked
42. Boot Profile Version
#![allow(unused)] fn main() { pub struct BootProfileVersion(pub u64); }
43. Anti-Rollback
Older vulnerable boot profile must not regain trust.
44. Hard rule.
45. Artifact Measurement
Part 62 exact artifact digest.
46. Runtime Service Measurement
Compare loaded executable to expected digest.
47. Config Measurement
Part 61 signed config digest.
48. No Config Blind Spot
Hard rule.
49. Runtime Measurement Bundle
#![allow(unused)] fn main() { pub struct RuntimeMeasurementBundle { pub artifact: BuildHash, pub config: ConfigDigest, pub policy_version: RuntimePolicyVersion, pub environment: DeploymentEnvironment, } }
50. Service Identity Binding
Service credential should bind to trusted host state where appropriate.
51. Sealed Credential
Optional.
52. TPM Sealing
Can release secret only when measurement policy matches.
53. Use Case
node runtime credential
54. Caution
Overly strict sealing can make recovery difficult.
55. Recommended
Seal selected infrastructure credentials only.
56. Never Seal User Data Keys To Host
Hard rule.
57. Why
User data should remain portable/recoverable.
58. Runtime Integrity
Boot state alone is insufficient.
59. Runtime Threats
binary patch
LD_PRELOAD
unexpected library
kernel module
debugger injection
memory tampering
60. Runtime Integrity Classes
#![allow(unused)] fn main() { pub enum RuntimeIntegrityClass { StaticMeasured, ContinuousMeasured, Behavioral, } }
61. StaticMeasured
Measure executable/config at startup.
62. ContinuousMeasured
Periodically validate expected state.
63. Behavioral
Detect anomalies from safe system signals.
64. Recommended Baseline
Static + selected continuous checks.
65. File Integrity
Monitor:
binary
config
service unit
critical libraries
66. Measurement Manifest
#![allow(unused)] fn main() { pub struct IntegrityManifest { pub files: BTreeMap<PathBuf, ContentDigest>, } }
67. No User Data Paths
Hard rule.
68. Runtime Verifier
#![allow(unused)] fn main() { pub trait RuntimeIntegrityVerifier { fn verify( &self, manifest: &IntegrityManifest, ) -> Result<RuntimeIntegrityReport, IntegrityError>; } }
69. Runtime Integrity Report
#![allow(unused)] fn main() { pub struct RuntimeIntegrityReport { pub status: IntegrityStatus, pub deviations: Vec<IntegrityDeviation>, } }
70. Integrity Status
#![allow(unused)] fn main() { pub enum IntegrityStatus { Clean, Warning, Compromised, Unknown, } }
71. Unknown
Critical services may quarantine.
72. Root Filesystem
Read-only preferred.
73. Immutable OS
Part 62.
74. Advantage
Reduces runtime drift.
75. Kernel Module Policy
Restrict.
76. Module Allowlist
Possible.
77. No Arbitrary Module Load
Hard rule for critical hosts.
78. eBPF
Useful but powerful.
79. eBPF Program Policy
Signed/allowlisted for production.
80. No Arbitrary Debug eBPF On Tier0
Hard rule.
81. Dynamic Linker
Control.
82. LD_PRELOAD
Blocked in production service environment.
83. Debugger Attach
Restricted.
84. ptrace
Disable/restrict for production daemons.
85. Core Dumps
Disabled/restricted.
86. Process Privilege
Least privilege.
87. No Root Service
Hard rule.
88. Linux Security Controls
Possible:
seccomp
Landlock
SELinux/AppArmor
cgroups
namespaces
89. Mandatory Access Control
Recommended for critical hosts.
90. Runtime Policy
Service-specific.
91. Runtime Security Profile
#![allow(unused)] fn main() { pub struct RuntimeSecurityProfile { pub seccomp_profile: Option<SeccompProfileId>, pub filesystem_policy: FilesystemPolicy, pub network_policy: NetworkPolicy, } }
92. Integrity Includes Security Profile
Yes.
93. Security Profile Digest
Measured.
94. Host Identity
Separate from service identity.
95. Host Identity Lifecycle
#![allow(unused)] fn main() { pub enum HostIdentityState { Enrolling, Active, Suspected, Quarantined, Retired, Revoked, } }
96. Host Enrollment
Part 61/62.
97. Enrollment Requirements
approved image
attestation
node identity
config
98. No Auto-Trust New Host
Hard rule.
99. Host Re-Enrollment
Required after major compromise.
100. Fresh Host Identity
Recommended after confirmed compromise.
101. No Credential Reuse
Hard rule.
102. Compromise Detection
Sources:
attestation failure
integrity deviation
unexpected config
network anomaly
operator report
security alert
103. Compromise Signal
#![allow(unused)] fn main() { pub enum CompromiseSignal { BootMismatch, ArtifactMismatch, ConfigMismatch, RuntimeMutation, CredentialMisuse, UnexpectedKernelState, AttestationReplay, } }
104. Signal Confidence
#![allow(unused)] fn main() { pub enum SignalConfidence { Low, Medium, High, Critical, } }
105. Compromise Evaluator
#![allow(unused)] fn main() { pub trait CompromiseEvaluator { fn evaluate( &self, signals: &[CompromiseSignalRecord], ) -> CompromiseDecision; } }
106. Decision
#![allow(unused)] fn main() { pub enum CompromiseDecision { Continue, Degrade, Investigate, Quarantine, } }
107. Quarantine
Remove node from serving.
108. Quarantine Flow
stop new traffic
drain if safe
remove from directory/catalog
revoke runtime credential
preserve evidence
109. No Immediate Evidence Destruction
Hard rule.
110. But
Secrets may need rotation.
111. Quarantine Scope
Node-specific.
112. No Whole-Fleet Shutdown For One Node
Hard rule unless systemic compromise.
113. Systemic Compromise
Examples:
release key compromise
common image compromise
114. Then
Fleet-wide action may be required.
115. Directory Integration
Quarantined node removed from topology.
116. Mix Node
Stop new route selection.
117. Mailbox
Stop new deposits.
118. Relay
Stop new sessions.
119. Provider Catalog
Mark unavailable/revoked.
120. Federation
Peer can distrust compromised provider/node.
121. Quarantine Propagation
Signed control-plane state.
122. No User-Visible Host Identity
Hard rule.
123. Attestation Privacy
Important.
124. Infrastructure Attestation
Acceptable.
125. End-User Device Attestation
High privacy risk.
126. Default
Do not require.
127. Why
Hardware attestation can reveal:
device model
hardware identity
vendor
security state
128. Strict Anonymity
No global device attestation.
129. Managed Enterprise Device
Part 69 may allow scoped attestation.
130. But
Only managed profile/organization scope.
131. No Cross-Service Attestation Identifier
Hard rule.
132. Attestation Pseudonym
If needed for managed devices.
133. Scope-specific.
134. Hardware Attestation Provider
Potential vendor dependency.
135. No Single Vendor Requirement
Hard rule.
136. Software Attestation
Weaker, but can provide integrity hints.
137. Trust Level
Explicit.
138. Attestation Assurance
#![allow(unused)] fn main() { pub enum AttestationAssurance { None, Software, TpmBacked, HardwareVerified, } }
139. Policy Can Require Level
Per node class.
140. Example
Tier0:
TpmBacked
141. Self-Hosted Small Deployment
May use:
Software
with explicit reduced assurance.
142. No Misleading Label
Hard rule.
143. Binary Measurement
Exact hash.
144. Release Manifest Binding
Part 62.
145. Measurement Verifier
Checks:
artifact hash
release signature
security epoch
146. Old Artifact
If blocked:
quarantine
147. No Operator Override Of Blocked Artifact
Hard rule.
148. Config Measurement
Exact effective config digest.
149. Effective Config
After layering.
150. Runtime Policy Digest
Measured separately if dynamic.
151. No Hidden Local Override
Hard rule.
152. Drift Detection
Part 61.
153. Attestation Can Confirm Drift state.
154. Host Package Inventory
Optional.
155. SBOM Comparison
Can verify expected package set.
156. No Package Inventory From User Device
Hard rule.
157. OS Version
Infrastructure only.
158. Firmware Version
Infrastructure only.
159. Firmware Update
High-risk.
160. Update Must Be Signed.
161. Anti-Rollback Firmware
Use platform support.
162. Secure Boot Key Management
Separate role.
163. No Developer Personal Key
Hard rule.
164. Boot Signing Key
HSM/offline controlled.
165. Root-of-Trust Key
Rarely used.
166. Boot Key Rotation
Need rollover.
167. Dual Trust Window
Possible.
168. Transition
trust old+new
→ sign new image with new
→ migrate fleet
→ remove old
169. Compromise
Immediate revoke if platform supports.
170. Recovery Media
Signed.
171. Recovery Image
Separate artifact.
172. No Unsigned Rescue Shell
Hard rule.
173. Maintenance Mode
Explicit.
174. Maintenance Attestation
Can be distinct profile.
175. Maintenance Node
Must not serve production traffic.
176. Hard rule.
177. Runtime Compromise Detection
Behavioral signals.
178. Examples
unexpected outbound connection
unexpected file write
privilege escalation
unknown process
179. Detection Agent
Separate low-privilege service.
180. Agent Trust
Itself measured.
181. No Full Packet Capture
Hard rule.
182. Why
Packet capture risks user metadata/content.
183. Network Integrity Monitoring
Use aggregate/system-level signals.
184. Example
unexpected destination class
port
connection count
185. File Integrity Monitoring
Critical paths only.
186. No Monitoring User Data Directory Content
Hard rule.
187. Runtime Anomaly Detection
Simple rules first.
188. No Black-Box ML Required
Hard rule.
189. Why
Explainability.
190. Behavioral Baseline
Infrastructure only.
191. Alert Privacy
No user identifiers.
192. Compromise Incident
Part 65/70.
193. Incident Response
quarantine
revoke
rebuild
rotate
re-enroll
194. Rebuild Over Repair
Preferred.
195. Fresh Image
From trusted artifact.
196. Fresh Runtime Credential
Required.
197. Fresh Host Identity
Recommended after serious compromise.
198. Preserve Necessary Evidence
Before destruction.
199. Evidence Store
Restricted.
200. No User Data Collection Expansion
Hard rule.
201. Forensic Image
May include sensitive infrastructure state.
202. Access tightly controlled.
203. Cryptographic Key Compromise
Part 66.
204. If Node Held Service Key
Rotate.
205. HSM-backed Key
May remain safe even if host compromised.
206. But
Assume misuse possible.
207. Audit signing operations.
208. Attestation Freshness Service
No central user-tracking implications because infrastructure only.
209. Attestation Challenge
#![allow(unused)] fn main() { pub struct AttestationChallenge { pub nonce: AttestationNonce, pub verifier: VerifierId, pub expires_at: Timestamp, } }
210. No Reusable Challenge
Hard rule.
211. Verifier Identity
Infrastructure authority.
212. Multi-Verifier
Possible.
213. Avoid Single Point Of Trust
For critical fleets.
214. Attestation Policy Authority
Governance/operations.
215. Policy Change
Signed.
216. No Silent Allowlist Expansion
Hard rule.
217. Attestation Transparency
Infrastructure-level.
218. Could publish approved boot profile digests.
219. No sensitive topology detail required.
220. Remote Peer Attestation
Optional.
221. Example
Federation domain may require gateway attestation.
222. But
Attestation does not create transitive trust.
223. Hard rule.
224. Federation Attestation Policy
#![allow(unused)] fn main() { pub struct FederationAttestationPolicy { pub minimum_assurance: AttestationAssurance, pub accepted_profiles: BTreeSet<BootProfileId>, } }
225. Gateway Attestation
Per peer/domain agreement.
226. No User Device Attestation Crossing Federation
Hard rule.
227. Provider Selection
Part 48 can include assurance class.
228. But
Do not rank only by hardware trust.
229. Diversity Still matters.
230. Self-Hosted Node
May not have TPM.
231. Capability Advertisement
Can state:
Software assurance
232. No exclusion by default unless policy requires stronger.
233. Host Attestation Cache
Short-lived.
234. No long-lived stale trust.
235. Attestation Cache
#![allow(unused)] fn main() { pub struct AttestationCacheEntry { pub host: HostAttestationId, pub decision: AttestationDecision, pub valid_until: Timestamp, } }
236. Revocation Overrides Cache
Hard rule.
237. Compromised Host Revocation
Signed.
238. Host Revocation Record
#![allow(unused)] fn main() { pub struct HostRevocation { pub host: HostAttestationId, pub effective_at: Timestamp, pub reason: HostRevocationReason, } }
239. Revocation Reason
#![allow(unused)] fn main() { pub enum HostRevocationReason { Compromised, Retired, MeasurementFailure, CredentialLeak, } }
240. Host Rejoin
Only after re-enrollment.
241. Runtime Health vs Integrity
Different.
242. Healthy
Can still be compromised.
243. Integrity Clean
Can still be overloaded.
244. Separate status.
245. Node Trust State
#![allow(unused)] fn main() { pub struct NodeTrustState { pub health: HealthState, pub integrity: IntegrityStatus, pub attestation: AttestationDecision, } }
246. Routing Eligibility
Depends on all relevant states.
247. Example
Healthy but Quarantine attestation:
not eligible
248. Directory Eligibility
#![allow(unused)] fn main() { pub trait NodeEligibilityEvaluator { fn eligible( &self, state: &NodeTrustState, policy: &NodeEligibilityPolicy, ) -> bool; } }
249. No Performance Override
Hard rule.
250. Compromise Scoring
Avoid opaque global score.
251. Prefer explicit signals/policies.
252. No User Reputation Coupling
Hard rule.
253. Attestation Observability
Safe metrics:
trusted hosts
degraded hosts
quarantined hosts
profile mismatch count
254. Forbidden Metrics
No:
user-to-host mapping
contact activity
message count per attested host
255. Attestation SLOs
Examples:
100% Tier0 hosts on approved profile
0 blocked artifact active
quarantine propagation within target
256. Integrity SLO
No unexplained critical drift.
257. Runtime Drift SLO
All drift investigated.
258. Release Gate
New artifact/image must be added to attestation policy before rollout.
259. But
Only signed approved release.
260. Deployment Integration
Part 62.
261. Deployment Flow
provision
→ boot
→ attest
→ verify artifact/config
→ issue runtime credential
→ advertise service
262. No Advertise Before Attestation For Required Node Class
Hard rule.
263. Emergency Recovery
If attestation service unavailable.
264. Strict Tier0
May fail closed.
265. Other tiers
Can use cached fresh attestation.
266. No "skip attestation" toggle.
267. Hard rule.
268. Attestation Service Outage
Part 70 exercise.
269. Recovery Mode
Predefined.
270. Trusted Recovery Profile
Signed.
271. Runtime Update
Hot patching discouraged.
272. Why
Breaks measurement/reproducibility.
273. Preferred
Replace artifact/node.
274. Live Kernel Patch
If used:
must be signed/measured
275. No Invisible Patch
Hard rule.
276. Container Runtime
Container image digest measured.
277. Host kernel still matters.
278. Container Attestation
Can include:
host profile
image digest
config digest
279. Kubernetes
Admission controller can enforce image signatures.
280. But
Kubernetes not required.
281. systemd/Podman
Equivalent policy possible.
282. VM Attestation
Cloud vendor may provide.
283. Use carefully.
284. Cloud Attestation
Vendor trust dependency.
285. Cross-cloud abstraction.
286. Bare Metal
TPM-based.
287. Virtualized TPM
Weaker depending hypervisor trust.
288. Assurance level should reflect.
289. Confidential Computing
Optional future.
290. Examples conceptually:
hardware-backed encrypted memory
attested execution environment
291. But
No dependency for core SIAR.
292. Why
Vendor lock-in/performance/complexity.
293. Could protect high-value infrastructure.
294. User Privacy
Remote confidential-compute attestation still infrastructure-scoped.
295. Testing
Need host-integrity testkit.
296. Test Scenarios
tampered bootloader
wrong kernel
wrong artifact
wrong config
runtime file modification
stale profile
attestation replay
297. Boot Mismatch Test
Reject/quarantine.
298. Artifact Mismatch Test
Reject.
299. Config Mismatch Test
Reject/degrade by policy.
300. Replay Test
Old attestation evidence rejected.
301. Revocation Test
Revoked host remains ineligible.
302. Re-enrollment Test
Fresh host identity accepted after rebuild.
303. Secret Sealing Test
Credential unavailable under wrong measurement.
304. Maintenance Profile Test
Cannot serve production traffic.
305. Container Image Test
Unexpected digest rejected.
306. Runtime Mutation Test
Quarantine.
307. Attestation Outage Test
Cached/fail-closed behavior correct.
308. Federation Test
Peer attestation does not create transitive trust.
309. Client Privacy Test
No user-device attestation identifier appears in anonymous protocol.
310. Fuzzing
Fuzz:
attestation evidence
measurement manifests
boot profiles
host revocation
311. Property Tests
Properties:
blocked boot profile never becomes Trusted
revoked host never becomes eligible from stale cached attestation
maintenance profile never serves production
user identity never participates in infrastructure attestation key
312. Formal Verification Targets
Strong candidates:
attestation decision state
host revocation
re-enrollment
boot-profile anti-rollback
313. Kani Candidate
measurement/profile matching.
314. TLA+ Candidate
fleet rollout with attestation-policy transition.
315. Loom Candidate
concurrent attestation refresh + revocation.
316. Performance Tests
Measure:
boot verification
attestation generation
verification latency
runtime integrity scan
317. Hot Path Rule
Attestation is not per packet.
318. Hard rule.
319. Cache Decisions
Short-lived.
320. Revocation-aware.
321. Resource Cost
TPM operations can be slow.
322. Batch/async verification.
323. No user-visible latency dependency.
324. Crate Layout
Recommended:
crates/
├── siar-attestation-core/
├── siar-boot-profile/
├── siar-measured-boot/
├── siar-host-identity/
├── siar-runtime-integrity/
├── siar-attestation-verifier/
├── siar-host-revocation/
├── siar-integrity-observability/
└── siar-attestation-testkit/
325. siar-attestation-core
Owns:
assurance levels
evidence
decisions
errors
326. siar-boot-profile
Allowed measurements/profile lifecycle.
327. siar-measured-boot
TPM/software measurement adapters.
328. siar-host-identity
Enrollment/re-enrollment.
329. siar-runtime-integrity
File/config/runtime verification.
330. siar-attestation-verifier
Policy evaluation.
331. siar-host-revocation
Quarantine/revocation state.
332. siar-integrity-observability
Privacy-safe fleet metrics.
333. siar-attestation-testkit
Tamper/replay/rollback simulator.
334. Error Taxonomy
#![allow(unused)] fn main() { pub enum AttestationError { EvidenceInvalid, SignatureInvalid, NonceExpired, ReplayDetected, BootProfileUnknown, BootProfileBlocked, ArtifactMismatch, ConfigMismatch, HostRevoked, AssuranceInsufficient, Internal, } pub enum IntegrityError { FileMismatch, RuntimeMutation, PolicyMismatch, VerificationUnavailable, Internal, } }
335. Security & Privacy Invariants
Mandatory:
1. Critical infrastructure can prove approved boot, artifact, and configuration state before becoming eligible to serve.
2. Attestation uses dedicated infrastructure identities and never user communication identities.
3. User devices are not globally required to expose hardware attestation identifiers.
4. Blocked boot profiles, artifacts, and revoked hosts cannot regain trust through rollback or stale evidence.
5. Attestation evidence is freshness-bound and replay-protected.
6. Runtime integrity monitoring is limited to infrastructure state and never expands into user-content inspection.
7. Quarantine removes compromised nodes from service before repair/rebuild.
8. Confirmed compromise triggers fresh credentials and, where appropriate, fresh host identity.
9. Maintenance/recovery profiles cannot silently serve production traffic.
10. Remote peer/federation attestation does not create transitive trust.
11. Hardware/TPM absence may reduce assurance, but never silently claim equivalent trust.
12. Attestation and integrity checks remain off the per-packet data path.
336. Initial Production Scope
Implement first:
exact artifact/config measurement
signed boot profile registry
software + TPM-backed attestation abstraction
host enrollment/re-enrollment
attestation nonce/replay protection
node eligibility gate
runtime integrity manifest
host revocation/quarantine
attestation cache with revocation override
deployment integration
privacy-safe fleet metrics
tamper/replay/rollback testkit
Then add:
sealed runtime credentials
verified-boot integration
multi-verifier attestation
federation gateway attestation
confidential-computing adapters
formal attestation-policy transition verification
337. Definition of Done
Part 71 is complete when:
- boot trust classes and assurance levels are explicit
- critical hosts measure/verify boot, artifact, and config
- attestation evidence is nonce-bound and replay-safe
- host identity is separate from service/user identity
- blocked/stale profiles cannot regain trust
- runtime integrity covers binaries/config/security policy
- quarantine/removal/re-enrollment flows are explicit
- no global user-device attestation is required
- provider/federation attestation remains scoped and non-transitive
- maintenance/recovery profiles cannot serve production traffic
- runtime credentials can optionally bind to trusted host state
- observability is fleet-level and privacy-safe
- tamper/replay/rollback/revocation/fuzz/formal tests are specified
338. Final Architecture
FIRMWARE / BOOT
│
▼
VERIFIED / MEASURED BOOT
│
▼
ARTIFACT + CONFIG MEASUREMENT
│
▼
ATTESTATION EVIDENCE
│
▼
POLICY-BASED VERIFIER
│
┌────────────────┼────────────────┐
│ │ │
Trusted Degraded Quarantine
│ │ │
└────────────────┼────────────────┘
▼
NODE SERVICE ELIGIBILITY
Trustworthy-host model:
verified boot
+
measured artifact/config
+
fresh attestation
+
runtime integrity
+
revocation/quarantine
+
rebuild/re-enroll after compromise
not:
a node started successfully, therefore it must be trustworthy
339. Final Principle
Infrastructure trust should be evidence-based, scoped, and revocable.
The correct model is:
measure
+
verify
+
attest
+
monitor
+
quarantine
+
rebuild
while keeping hardware attestation away from anonymous user identity and end-user protocol semantics.
This architecture gives SIAR a trustworthy-infrastructure foundation for mix nodes, mailboxes, relays, gateways, directories, control-plane systems, and federation gateways without turning platform attestation into a new privacy or fingerprinting channel.