Files
wifi-densepose/docs/adr/ADR-042-Security-RVF-AIDefence-TEE.md
ruv d803bfe2b1 Squashed 'vendor/ruvector/' content from commit b64c2172
git-subtree-dir: vendor/ruvector
git-subtree-split: b64c21726f2bb37286d9ee36a7869fef60cc6900
2026-02-28 14:39:40 -05:00

309 lines
14 KiB
Markdown

# ADR-042: Security RVF — AIDefence + TEE Hardened Cognitive Container
| Field | Value |
|-------------|------------------------------------------------|
| Status | Accepted |
| Date | 2025-02-21 |
| Authors | ruv |
| Supersedes | — |
| Implements | ADR-041 Tier 1 (Security Container) |
## Context
ADR-041 identified 15 npm packages suitable for RVF cognitive containers. This ADR
specifies the **ultimate security RVF** — a single `.rvf` file that combines:
1. **AIDefence** — 5-layer adversarial defense (prompt injection, jailbreak, PII, behavioral, policy)
2. **TEE attestation** — Hardware-bound trust (SGX, SEV-SNP, TDX, ARM CCA)
3. **Hardened Linux microkernel** — Minimal attack surface boot image + KernelBinding anti-tamper
4. **Coherence Gate** — Anytime-valid permission authorization
5. **RBAC + Ed25519 signing** — Role-based access with cryptographic proof
6. **Witness chain audit** — Tamper-evident hash-chained event log
7. **Self-bootstrapping** — Dual WASM (Interpreter + Microkernel) for standalone execution
8. **Dashboard** — Embedded security monitoring UI (DASHBOARD_SEG)
9. **Quantization** — Scalar (int8, 4x) + Binary (1-bit, 32x) compression
10. **Lifecycle** — Filter deletion, compaction, and permanent freeze/seal
The result is a self-contained, bootable, cryptographically sealed security appliance
with 30 verified capabilities, end-to-end from silicon to application layer.
## Decision
Build `security_hardened.rvf` as a capstone example in `examples/rvf/examples/` that
exercises every security primitive in the RVF format.
## Architecture
```
security_hardened.rvf
├── KERNEL_SEG (0x0E) Hardened Linux 6.x + KernelBinding (128B anti-tamper)
├── EBPF_SEG (0x0F) Packet filter + syscall policy enforcer
├── WASM_SEG #1 (0x10) AIDefence engine (prompt injection, PII, jailbreak)
├── WASM_SEG #2 (0x10) Interpreter runtime (self-bootstrapping)
├── DASHBOARD_SEG (0x11) Security monitoring web UI
├── VEC_SEG (0x01) Threat signature embeddings (512-dim)
├── INDEX_SEG (0x02) HNSW index over threat vectors (m=32)
├── CRYPTO_SEG (0x0C) Ed25519 keys + TEE-bound key records
├── WITNESS_SEG (0x0A) 30-entry security lifecycle chain
├── META_SEG (0x07) Security policy + RBAC config + AIDefence rules
├── PROFILE_SEG (0x0B) Domain profile: RVSecurity
├── PolicyKernel (0x31) Gate thresholds + coherence config
├── MANIFEST_SEG (0x05) Signed manifest with hardening fields
└── Signature Footer Ed25519 over entire artifact
```
### Segment Budget
| Segment | Purpose | Size Budget |
|---------|---------|-------------|
| KERNEL_SEG | Hardened Linux bzImage | ~1.6 MB |
| EBPF_SEG | Firewall + syscall filter | ~8 KB |
| WASM_SEG | AIDefence WASM engine | ~256 KB |
| VEC_SEG | Threat embeddings (1000 x 512) | ~2 MB |
| INDEX_SEG | HNSW graph | ~512 KB |
| CRYPTO_SEG | Keys + TEE attestation records | ~4 KB |
| WITNESS_SEG | 30-entry audit chain | ~2 KB |
| META_SEG | Policy JSON + RBAC matrix | ~4 KB |
| PROFILE_SEG | Domain profile | ~512 B |
| PolicyKernel | Gate config | ~1 KB |
| MANIFEST_SEG | Signed directory | ~512 B |
| **Total** | | **~4.4 MB** |
## Security Layers
### Layer 1: Hardware Root of Trust (TEE)
```
┌─────────────────────────────────────┐
│ AttestationHeader (112 bytes) │
│ ├── platform: SGX/SEV-SNP/TDX/CCA │
│ ├── measurement: MRENCLAVE │
│ ├── signer_id: MRSIGNER │
│ ├── nonce: anti-replay │
│ ├── svn: security version │
│ └── quote: opaque attestation blob │
└─────────────────────────────────────┘
```
- Hardware TEE attestation records in CRYPTO_SEG
- TEE-bound key records: keys sealed to enclave measurement
- Platform verification: correct TEE + measurement + validity window
- Multi-platform: SGX, SEV-SNP, TDX, ARM CCA in single witness chain
### Layer 2: Kernel Hardening
```
KernelHeader flags:
KERNEL_FLAG_SIGNED = 0x0001
KERNEL_FLAG_COMPRESSED = 0x0002
KERNEL_FLAG_REQUIRES_TEE = 0x0004
KERNEL_FLAG_MEASURED = 0x0008
KERNEL_FLAG_REQUIRES_KVM = 0x0010
KERNEL_FLAG_ATTESTATION_READY = 0x0400
```
Linux tinyconfig + hardening options:
- `CONFIG_SECURITY_LOCKDOWN_LSM=y` — Kernel lockdown
- `CONFIG_SECURITY_LANDLOCK=y` — Landlock sandboxing
- `CONFIG_SECCOMP=y` — Syscall filtering
- `CONFIG_STATIC_USERMODEHELPER=y` — No dynamic module loading
- `CONFIG_STRICT_KERNEL_RWX=y` — W^X enforcement
- `CONFIG_INIT_ON_ALLOC_DEFAULT_ON=y` — Memory init on alloc
- `CONFIG_BLK_DEV_INITRD=y` — Initramfs support
- No loadable modules, no debugfs, no procfs write, no sysfs write
### Layer 3: eBPF Enforcement
Two eBPF programs embedded:
1. **XDP Packet Filter** — Drop all traffic except allowed ports
- Allow: TCP 8443 (HTTPS API), TCP 9090 (metrics)
- Drop everything else at XDP layer (before kernel stack)
2. **Seccomp Syscall Filter** — Allowlist-only syscalls
- Allow: read, write, mmap, munmap, close, exit, futex, epoll_*
- Deny: execve, fork, clone3, ptrace, mount, umount, ioctl(TIOCSTI)
### Layer 4: AIDefence (WASM Engine)
The WASM segment contains a compiled AIDefence engine with:
| Detector | Latency | Description |
|----------|---------|-------------|
| Prompt Injection | <5ms | 30+ regex patterns + semantic similarity |
| Jailbreak | <5ms | DAN, role manipulation, system prompt extraction |
| PII Detection | <5ms | Email, phone, SSN, credit card, API keys, IP |
| Control Characters | <1ms | Unicode homoglyphs, null bytes, escape sequences |
| Behavioral Analysis | <100ms | EMA baseline deviation per user |
| Policy Verification | <500ms | Custom pattern matching + domain allowlists |
Threat levels: `none``low``medium``high``critical`
Default block threshold: `medium` (configurable via META_SEG policy)
### Layer 5: Cryptographic Integrity
- **Ed25519 signing** (RFC 8032): Every segment signed individually
- **Witness chain**: HMAC-SHA256 hash-chained audit entries
- **Content hashing**: SHAKE-256 truncated hashes in HardeningFields
- **SecurityPolicy::Paranoid**: Full chain verification on mount
- **Key rotation**: Witness entry records rotation event
### Layer 6: Access Control (RBAC + Coherence Gate)
```
Role Matrix:
┌──────────┬───────┬──────┬────────┬───────┬──────────┐
│ Role │ Write │ Read │ Derive │ Audit │ Gate │
├──────────┼───────┼──────┼────────┼───────┼──────────┤
│ Admin │ ✓ │ ✓ │ ✓ │ ✓ │ permit │
│ Operator │ ✓ │ ✓ │ ✗ │ ✓ │ permit │
│ Analyst │ ✗ │ ✓ │ ✗ │ ✓ │ defer │
│ Reader │ ✗ │ ✓ │ ✗ │ ✗ │ defer │
│ Auditor │ ✗ │ ✓ │ ✗ │ ✓ │ permit │
│ Guest │ ✗ │ ✗ │ ✗ │ ✗ │ deny │
└──────────┴───────┴──────┴────────┴───────┴──────────┘
```
Coherence Gate thresholds (PolicyKernel segment):
- `permit_threshold`: 0.85
- `defer_threshold`: 0.50
- `deny_threshold`: 0.0
- `escalation_window_ns`: 300_000_000_000 (5 min)
- `max_deferred_queue`: 100
## Capabilities Confirmed
| # | Capability | Segment | Verification |
|---|-----------|---------|-------------|
| 1 | TEE attestation (SGX, SEV-SNP, TDX, ARM CCA) | CRYPTO_SEG | Quote validation + binding check |
| 2 | TEE-bound key records | CRYPTO_SEG | Platform + measurement + validity |
| 3 | Hardened kernel boot | KERNEL_SEG | Flags: SIGNED, REQUIRES_TEE, MEASURED |
| 4 | KernelBinding anti-tamper | KERNEL_SEG | manifest_root_hash + policy_hash binding |
| 5 | eBPF packet filter | EBPF_SEG | XDP drop except allowlisted ports |
| 6 | eBPF syscall filter | EBPF_SEG | Seccomp allowlist enforcement |
| 7 | AIDefence prompt injection | WASM_SEG | 12 pattern detection |
| 8 | AIDefence jailbreak detect | WASM_SEG | DAN, role manipulation, 8 patterns |
| 9 | AIDefence PII scanning | WASM_SEG | Email, SSN, credit card, API keys |
| 10 | AIDefence code/encoding attack | WASM_SEG | XSS, eval, base64, unicode tricks |
| 11 | Self-bootstrapping | WASM_SEG x2 | Interpreter + Microkernel dual WASM |
| 12 | Security monitoring dashboard | DASHBOARD_SEG | Embedded security UI |
| 13 | Ed25519 segment signing | CRYPTO_SEG | Per-segment cryptographic proof |
| 14 | Witness chain audit trail | WITNESS_SEG | 30-entry HMAC-SHA256 chain |
| 15 | Content hash hardening | MANIFEST_SEG | SHAKE-256 content verification |
| 16 | Security policy (Paranoid) | MANIFEST_SEG | Full chain verification on mount |
| 17 | RBAC access control | META_SEG | 6 roles with permission matrix |
| 18 | Coherence Gate authorization | PolicyKernel | Anytime-valid decision with witness receipts |
| 19 | Key rotation | CRYPTO_SEG + WITNESS | Old key rejected, new key active |
| 20 | Tamper detection | WITNESS_SEG | 3/3 attacks rejected |
| 21 | Multi-tenant isolation | Store derivation | Lineage-linked derived stores |
| 22 | COW branching | Store branching | Forensic-grade immutable snapshots |
| 23 | Audited k-NN queries | WITNESS_SEG | Witness entry on every search |
| 24 | Threat vector similarity | VEC_SEG + INDEX | k-NN over 1000 threat embeddings |
| 25 | Data exfiltration detection | WASM_SEG | curl/wget/fetch/webhook patterns |
| 26 | Scalar quantization (int8) | rvf-quant | 4x compression, L2 distance preserved |
| 27 | Binary quantization (1-bit) | rvf-quant | 32x compression, Hamming distance |
| 28 | Filter deletion + compaction | Store lifecycle | Purge + reclaim dead space |
| 29 | QEMU requirements check | rvf-launch | Bootability proof (dry-run) |
| 30 | Freeze/seal | Store freeze | Permanent read-only immutability |
## MCP Tools (Security Container)
When served via MCP, the security RVF exposes these tools:
| # | Tool | Description |
|---|------|-------------|
| 1 | `aidefence_scan` | Analyze input for all threat types |
| 2 | `aidefence_sanitize` | Remove/mask dangerous content |
| 3 | `aidefence_validate_response` | Check LLM output safety |
| 4 | `aidefence_audit_log` | Get audit trail entries |
| 5 | `gate_permit` | Request action authorization |
| 6 | `gate_receipt` | Retrieve witness receipt by sequence |
| 7 | `gate_replay` | Deterministic decision replay |
| 8 | `tee_attest` | Generate TEE attestation record |
| 9 | `tee_verify` | Verify attestation quote |
| 10 | `tee_bind_key` | Create TEE-bound key record |
| 11 | `rbac_check` | Verify role permissions |
| 12 | `rbac_assign` | Assign role to principal |
| 13 | `threat_search` | k-NN over threat embeddings |
| 14 | `threat_ingest` | Add new threat signatures |
| 15 | `witness_chain` | Get/verify witness chain |
| 16 | `policy_get` | Read security policy config |
## HTTP API Endpoints
```
Port 8443 (TLS required in production)
POST /api/v1/scan AIDefence threat analysis
POST /api/v1/sanitize Input sanitization
POST /api/v1/validate Response validation
GET /api/v1/audit Audit log (paginated)
POST /api/v1/gate/permit Gate authorization request
GET /api/v1/gate/receipt/:seq Receipt by sequence
POST /api/v1/tee/attest Generate attestation
POST /api/v1/tee/verify Verify quote
POST /api/v1/rbac/check Permission check
POST /api/v1/threats/search Threat similarity search
GET /api/v1/status System health
GET /api/v1/policy Security policy config
```
## Implementation
### Files Created
| # | Path | Description |
|---|------|-------------|
| 1 | `examples/rvf/examples/security_hardened.rs` | Capstone security RVF example |
| 2 | `docs/adr/ADR-042-Security-RVF-AIDefence-TEE.md` | This ADR |
### Files Modified
| # | Path | Changes |
|---|------|---------|
| 1 | `examples/rvf/Cargo.toml` | Add `security_hardened` example entry |
## Verification
```bash
# Build the example
cd examples/rvf && cargo build --example security_hardened
# Run the example (creates + verifies the security RVF)
cargo run --example security_hardened
# Expected output (v3.0 — 30 capabilities):
# Phase 1: Threat vector knowledge base (1000 embeddings)
# Phase 2: Hardened kernel + KernelBinding (KERNEL_SEG)
# Phase 3: eBPF packet + syscall filters (EBPF_SEG)
# Phase 4: AIDefence WASM #1 Microkernel (WASM_SEG)
# Phase 4b: WASM #2 Interpreter (self-bootstrapping)
# Phase 5: Security monitoring dashboard (DASHBOARD_SEG)
# Phase 6: TEE attestation (SGX, SEV-SNP, TDX, ARM CCA)
# Phase 7: TEE-bound key records
# Phase 8: RBAC access control (6 roles)
# Phase 9: Coherence Gate policy (PolicyKernel)
# Phase 10: Scalar + Binary quantization
# Phase 11: 30-entry witness chain
# Phase 12: Ed25519 signing + Paranoid verification
# Phase 13: Tamper detection (3 tests)
# Phase 14: Filter deletion + compaction
# Phase 15: Multi-tenant isolation + COW
# Phase 16: AIDefence live tests (10 threat types)
# Phase 17: QEMU requirements check
# Phase 18: Component verification
# Phase 19: Freeze — permanent immutability seal
# All 30 capabilities verified.
```
## References
- ADR-033: Mandatory manifest signatures + HardeningFields
- ADR-041: RVF Cognitive Container identification
- ADR-041a: Detailed container implementations
- `rvf-types/src/attestation.rs`: AttestationHeader, TeePlatform
- `rvf-types/src/security.rs`: SecurityPolicy, HardeningFields
- `rvf-crypto`: Ed25519, witness chains, TEE attestation
- `ruvbot/src/security/AIDefenceGuard.ts`: AIDefence implementation