# CASAN — Kiến trúc BEFORE → AFTER (Mốc 2: sau khi thi) > **File này = phần nâng cấp SAU khi thi** — nhánh `feat/plan07-track-a-hardening`. > Điểm xuất phát là trạng thái ở `CASAN_ARCHITECTURE_BEFORE.md` (**37 script, mức demo/PoC**). > Mục tiêu nâng cấp: từ "chặn được trên sân khấu" → **"đủ chững chạc để chạy thật, chứng minh bằng tấn công"**. > > 🖥️ **Bản trình chiếu trực quan:** `casan-architecture.html` — mở full-screen bằng trình duyệt khi thuyết trình. --- ## 0. Nhắc lại điểm xuất phát | Mốc | Số script bash | Số test | Mức trưởng thành | |---|:--:|:--:|---| | Base vanilla (ảnh) | 5 | 0 | chỉ sinh khung dự án | | **Lúc mang đi thi** (`fbcef96`) | **37** | 8 | demo/PoC tốt (H4/H5/H6 ~3.0/5) | | **Sau khi thi** (HEAD) | **60** (+23) | 14 (+6) | production nội bộ, chứng minh bằng tấn công (H4/H5/H6 ~4.0/5) | **Thêm 23 script + 6 bộ test.** Không xoá gì của bản thi — chỉ **bồi thêm lớp** và **vá đường lọt**. Chia làm 5 nhóm. --- ## 1. Track A — Vá khe hở bộ lọc cũ (rủi ro thấp) Bịt các kỹ thuật **né tránh nâng cao** mà bộ lọc thi bỏ sót, và làm telemetry **không sửa được**. | File MỚI | Tác dụng | Đường lọt nó vá | |---|---|---| | `unicode-normalize.py` | Chuẩn hoá Unicode (NFKC) + gấp **ký tự giả (homoglyph)** + bóc **ký tự tàng hình (zero-width)** + gấp **chữ toàn phần** | Chữ "ignore" viết bằng ký tự Cyrillic giả né được regex | | `decode-suspicious.py` | **Giải base64/hex** đoạn khả nghi rồi **quét lại** | Payload độc giấu trong mã hoá | | `tool-output-scan.sh` | Quét injection trong **OUTPUT của tool** trước khi nó quay lại ngữ cảnh AI | Kết quả tool bị nhiễm độc rồi "tái nhập" vào model | | `telemetry-integrity.sh` | Ràng số liệu chi phí vào **manifest ký số** — sửa 1 token là **MISMATCH** | Sửa lén sổ chi phí | | `benign-fp-report.sh` | Corpus **95 câu hợp lệ (Anh/Việt/Nhật)** + ngân sách **dương-tính-giả** | Siết chặt mà **bắt nhầm** người dùng thật | > *Ghi chú:* `security-check.sh` được nâng thêm **strict fail-closed** (model chết → CHẶN) và `cost-spike-detect.sh` thêm **trần tuyệt đối + ngân sách tích luỹ + cold-start** — đây là **sửa file cũ**, không phải file mới. --- ## 2. Track C-MVP — Kiểm soát NGOÀI 3 harness lõi Bảo mật thật không chỉ nằm ở lọc prompt — còn ở **hành động**, **chuỗi cung ứng**, **rò rỉ dữ liệu**, **cô lập chạy**. | File MỚI | Tác dụng | Đường lọt nó vá | |---|---|---| | `action-gate.sh` | Canh theo **hành động**: ghi `.env`/khoá, `rm -rf`, `curl\|bash`, cài dep → chặn/hỏi duyệt | Tool "hợp lệ" nhưng làm việc phá hoại | | `supply-chain-gate.sh` | Cổng chuỗi cung ứng: **typosquat / postinstall / danh sách đen** + bắt gói mới phải duyệt | AI tự kéo thư viện độc | | `supply-chain-scan.py` | Quét khác biệt manifest dependency | (bổ trợ cho gate trên) | | `data-exfil-guard.sh` | Chặn **secret → cloud**; **che PII → nhật ký** | Tuồn dữ liệu ra ngoài | | `sandbox-run.sh` | Sandbox **scaffold**: chính sách tĩnh (chặn `~/.ssh`, egress, fork-bomb) + `ulimit`/timeout | Code sinh ra làm bậy — *(⚠️ chưa cô lập kernel)* | --- ## 3. Evidence Pack (Plan-09) — "Vì sao tin output này?" | File MỚI | Tác dụng | |---|---| | `evidence-pack.sh` | Lệnh `pack` / `verify-pack` — đóng gói & xác minh gói bằng chứng | | `evidence-pack-build.py` | Dựng gói **12 file chuẩn** + manifest hash + ký HEAD | | `evidence-pack-verify.py` | Xác minh **tamper-evident**: sửa 1 byte → gói **VÔ HIỆU**; certified chỉ khi đủ cổng | --- ## 4. H5+ — Quản trị lên hạng (nâng lớp yếu nhất: 76 → 80) Vá 3 đường lọt lớn nhất của quản trị: **duyệt tin bằng biến môi trường · khoá ký nằm local · nhật ký xoá được.** | File MỚI | Tác dụng | Đường lọt nó vá | |---|---|---| | `approval-sign.sh` | Reviewer **ký số** vào đúng request để duyệt | Khai "người duyệt = X" là qua | | `approval-verify.sh` | Xác minh **chữ ký + vai trò** reviewer; chống giả chữ ký / sai vai / dùng lại (replay) / tự duyệt | như trên | | `audit-ship.sh` | Ship HEAD audit ra **sổ ngoài append-only (WORM)** | Xoá nhật ký ở máy để phi tang | | `worm-ledger.py` | Sổ ngoài **chỉ-ghi-thêm, móc xích hash** | như trên | | `verify-audit-gap.sh` | Đối chiếu → phát hiện **rollback (`AUDIT_GAP_DETECTED`)** + **giả mạo sổ (`AUDIT_LEDGER_TAMPERED`)** | như trên | > *Ghi chú:* `vault-kms.sh` được nâng thêm **rotate (xoay khoá)** + **assert-nonexportable (chìa không rời két)** — sửa file cũ. --- ## 5. H6+ — Vận hành lên hạng (nâng lớp yếu nhất kế: 79 → 80) Vá 3 gap của chính báo cáo chấm điểm (**alerting chỉ ghi file · telemetry nhập tay · dashboard tĩnh**) + kỹ thuật né cầu dao (V15). | File MỚI | Tác dụng | Đường lọt nó vá | |---|---|---| | `alert-dispatch.sh` | Gửi cảnh báo **live ra webhook** + gộp trùng (dedup) + **hàng chờ (dead-letter)** + gửi lại | Sự cố chỉ ghi vào file, 3h sáng không ai biết | | `provider-usage-fetch.sh` | Kéo **usage từ API nhà cung cấp** + kiểm định dạng all-or-nothing + fail-loud | Không có nguồn chi phí "ground truth" | | `telemetry-reconcile.sh` | **Đối soát** số ở máy vs số nhà cung cấp → khai thiếu = `TELEMETRY_DISCREPANCY` | Khai gian chi phí để giấu hành động lén | | `dashboard-serve.sh` | Serve dashboard **qua HTTP** + `/healthz` **stale-aware** | Bảng tĩnh không biết khi telemetry chết lặng | | `dashboard-server.py` | HTTP server: fresh → 200 ok, số liệu cũ → **503 stale** | như trên | > *Ghi chú:* `circuit-breaker-check.sh` được nâng thêm **cầu dao theo tỷ lệ hỏng trong khoảng (sliding-window)** — chống né bằng xen kẽ thành công. Sửa file cũ. --- ## 6. Test thêm sau khi thi (6 bộ · +96 kiểm thử) | Bộ test MỚI | Số | Kiểm cái gì | |---|:--:|---| | `phase1-track-a-tests.sh` | 25 | Track A (chuẩn hoá Unicode, base64, fail-closed, telemetry ký, FP=0) | | `phase2-track-c-tests.sh` | 29 | Track C-MVP (action-gate, supply-chain, exfil, sandbox) | | `phase3-evidence-pack-tests.sh` | 7 | Gói bằng chứng (tamper 1 byte → vô hiệu, certified gate) | | `phase-h5-approval-tests.sh` | 8 | Approval-identity (ký + vai trò + chống replay/tự-duyệt) | | `phase-h5-infra-tests.sh` | 7 | KMS (rotate/non-exportable, live-aware) + WORM | | `phase-h6-agentops-tests.sh` | 20 | Alerting live + provider-API + dashboard hosted + window breaker | --- ## 7. Tóm tắt Mốc 2 (một dòng) > **37 script "chặn được demo" → 60 script "đủ chững chạc chạy thật".** Ba lớp H4/H5/H6 từ ~3.0/5 lên ~4.0/5; **lớp yếu nhất nhích 76 → 79 → 80 — không còn lớp nào dưới chuẩn**. Tổng **175 kiểm thử đối kháng, 0 lỗi**. > > **Trung thực (đã ghi rõ trong `CASAN_HARDENING_STATUS.md`):** đây là mức **CASAN Level 4 — chứng minh bằng tấn công**, **chưa phải production hoàn chỉnh**. Còn cần: hệ danh tính doanh nghiệp (IdP/OIDC live), kho WORM thật (S3 Object Lock), KMS mặc định + HSM, cô lập kernel thật, dashboard triển khai chính thức + kênh alert managed, billing-API thật. Sức mạnh là **phòng thủ nhiều tầng + trung thực**, không phải "viên đạn bạc". ### Sơ đồ số một dòng ``` Base 5 file (spec-kit) └─(+32 script, +8 test) → LÚC THI: 37 script · ~79 test · demo/PoC (H4/H5/H6 ~3.0/5) └─(+23 script, +6 test) → SAU THI: 60 script · 175 test · production nội bộ (H4/H5/H6 ~4.0/5, không lớp nào <80) ```