Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

ADR-018: Runtime Integrity Monitor

Status: Accepted Date: 2026-04-17 Context: ADV-ARCH-04 (master key in memory), analyst backpass contention 1

Decision

A runtime integrity monitor runs as a side process on every storage node, detecting signs of key material extraction attempts.

Detection signals

SignalDetection methodSeverity
ptrace attachment to kiseki processesMonitor /proc/pid/status TracerPidCritical
/proc/pid/mem reads on kiseki processesinotify/audit on /proc/pid/memCritical
Debugger presence (gdb, lldb, strace)Process enumerationHigh
Core dump generation attemptMonitor core_pattern, catch SIGABRTCritical
Unexpected LD_PRELOAD on kiseki processesCheck /proc/pid/environ at startupHigh
Process memory mapping changesMonitor /proc/pid/maps periodicallyMedium

Response

  1. Alert: cluster admin + affected tenant admin(s) immediately
  2. Log: audit event with full context (pid, signal, timestamp)
  3. Optional auto-response (configurable):
    • Rotate system master key (new epoch, invalidate cached key)
    • Evict cached tenant KEKs (force re-fetch from KMS)
    • Kill the suspect process
  4. Do NOT: shut down the storage node (availability over prevention — the attacker may already have the key; shutting down just causes an outage)

Performance impact

Negligible. The monitor checks /proc periodically (every 1-5 seconds), not on every crypto operation. Crypto operations themselves are not a performance concern:

  • HKDF derivation: ~1μs per call, ~25,000 calls/sec at line rate = ~25ms CPU/sec
  • AES-256-GCM (the actual encryption): with AES-NI, ~5-10% of one core at 200 Gbps
  • The bottleneck is the AEAD data encryption, not key derivation or monitoring

Consequences

  • Additional process per storage node (lightweight)
  • Linux-specific (/proc-based detection); needs platform abstraction for other OS
  • Not a prevention mechanism — it’s detection and response
  • False positives possible (legitimate debugging during development); monitor should be disableable in dev/test mode