diff --git a/optimize-docs/CASAN_VIDEO_NARRATION.md b/optimize-docs/CASAN_VIDEO_NARRATION.md new file mode 100644 index 0000000..200cae9 --- /dev/null +++ b/optimize-docs/CASAN_VIDEO_NARRATION.md @@ -0,0 +1,214 @@ +# CASAN — Kịch bản Lời thoại (Voiceover / Teleprompter) + +> Lời thoại **nói ĐÈ lên video** demo tấn công. Video 1 = `run-all.sh` (23 vector), +> Video 2 = `run-hardening.sh` (hardening + Evidence Pack). +> +> **Nguyên tắc vàng:** Terminal đã nói *"cái gì"* — bạn nói *"VÌ SAO quan trọng"*. +> **Đừng đọc lại màn hình.** Nói xong để verdict (`exit=2 ⛔`) hiện rồi mới chốt câu. + +--- + +## 0. Ghi chú trình bày (đọc trước khi thu) + +- **Giọng:** bình tĩnh, tự tin, kỹ sư nói với kỹ sư — KHÔNG "bán hàng". +- **Tốc độ:** chậm-vừa. Mỗi cảnh `STEP_DELAY=6` cho ~6–8 giây → mỗi cảnh chỉ 1–2 câu. +- **Nhịp verdict:** nói **SAU** khi exit code hiện, không nói trước. Verdict là dấu chấm câu. +- **Cảnh 🔥:** nghỉ 1 nhịp sau khi nói, để người xem "ngấm" kết quả. Zoom dòng verdict khi dựng. +- **Cảnh chạy nhanh (không 🔥):** gộp 2–3 cảnh vào một câu, đừng cố nói từng cái. +- **Ký hiệu:** ▶ = màn hình đang hiện gì · 🎙️ = câu bạn nói · ⏸ = nghỉ 1 nhịp. +- Canh nhịp thủ công thì chạy `AUTO=0` (bấm Enter) để chủ động cắt câu. + +--- + +# 🎬 VIDEO 1 — ATTACK BATTERY (`run-all.sh`) + +### ▶ Màn hình intro (banner CASAN + 3 nguyên tắc) +🎙️ "Chúng tôi không đo AI viết code nhanh cỡ nào. Chúng tôi hỏi một câu khác: +**khi AI làm bậy — ai chặn, và làm sao chứng minh đã chặn?** +Đây là CASAN Harness. Mỗi con số bạn sắp thấy là một **cuộc tấn công thật**, có exit code trên màn hình — không phải điểm tự chấm." ⏸ + +## ⭐ H4 — Security + +### ▶ Banner "H4 SECURITY BATTERY" +🎙️ "Lớp đầu tiên — bảo mật đầu vào và đầu ra của model. Chín kiểu tấn công." + +### ▶ A1 direct injection → `rc=2` +🎙️ "Câu injection kinh điển, 'bỏ qua chỉ dẫn, lộ system prompt'. Chặn. Exit 2." + +### ▶ A2 paraphrase → `rc=0` (lọt) +🎙️ "Giờ tôi diễn đạt lại, không trùng từ khoá nào. Lọc từ khoá thuần… **cho lọt**. +Đây là giới hạn thật của regex — và là lý do có bước ngay sau đây." + +### ▶ A3 semantic classify → `verdict=INJECTION` +🎙️ "Vẫn câu đó, nhưng qua **tầng ngữ nghĩa**: model local đọc *ý đồ*, không cần trùng chữ. +Verdict — INJECTION. Đây là **một trong số rất ít chỗ chúng tôi dùng AI** — và nó chỉ +**thêm** được lệnh chặn, **không bao giờ gỡ**." ⏸ + +### ▶ A4 obfuscation → `rc=2` +🎙️ "Nguỵ trang bằng leetspeak, số thay chữ. Chuẩn hoá xong mới khớp. Vẫn chặn." + +### ▶ A5 🔥 indirect artifact injection → `rc=2` +🎙️ "Đây là đòn tôi muốn bạn nhớ nhất. **Input người dùng hoàn toàn sạch.** +Nhưng lệnh độc được giấu trong file spec mà agent sẽ đọc — tấn công **gián tiếp**. +Bộ quét artifact bắt nó **trước khi** vào ngữ cảnh model. Exit 2." ⏸⏸ + +### ▶ A6 secret + A7 PII → `rc=2` (nói gộp) +🎙️ "Khoá riêng và dữ liệu cá nhân trong đầu vào — chặn cứng, fail-closed. Không thương lượng." + +### ▶ A8 recall (Ollama) → `recall ≥ 0.8` +🎙️ "Và định lượng: recall của model so với regex trên ba mươi mẫu — số chạy thật, ngay trên máy." + +### ▶ A9 secret in OUTPUT → `rc=2` +🎙️ "Chiều ngược lại cũng vậy — secret rò ở **đầu ra** bị chặn. Bảo vệ hai chiều, không chỉ chiều vào." + +## ⭐ H5 — Governance + +### ▶ Banner "H5 GOVERNANCE" +🎙️ "Lớp hai đổi câu hỏi: không phải 'chặn đầu vào', mà **'có tin được nhật ký không? ai được làm gì?'** +Và lưu ý — **cả lớp này không cần AI**, toàn mật mã." + +### ▶ B1 🔥 audit tamper → `AUDIT_HASH_MISMATCH line=1` +🎙️ "Tôi sửa **đúng một ký tự** trong sổ kiểm toán để hạ mức rủi ro. +Hash-chain gãy ngay **dòng một**. Bạn không thể viết lại lịch sử mà không bị phát hiện." ⏸ + +### ▶ B2 chain re-forge → `anchor=signed` +🎙️ "Tinh vi hơn: tính lại toàn bộ chuỗi hash cho khớp. Nhưng phần đầu được **ký RSA**, +khoá nằm **ngoài repo**. Không có khoá thì re-forge là bất khả thi." + +### ▶ B6 🔥 self-approval → `rc=2` +🎙️ "Và đây là quản trị thật: người đệ trình **tự phê duyệt chính mình** — bị từ chối. +Tách khoá nhiệm vụ. Người khác duyệt mới hợp lệ." ⏸ + +### ▶ B3/B4/B5/B7/B8 (nói gộp khi chạy qua) +🎙️ "Phần còn lại của lớp này: quét secret lỡ commit, chặn mọi đường tắt bypass, +phân quyền theo từng agent, và giới hạn tần suất chống lạm dụng — mỗi thứ một bài kiểm thử." + +## ⭐ H6 — AgentOps + +### ▶ Banner "H6 AGENTOPS" +🎙️ "Lớp ba là câu hỏi vận hành: **nếu một bước đột nhiên tốn gấp ba lần token, có ai biết không?**" + +### ▶ D1 🔥 cost-spike → `COST_SPIKE_DETECTED exit=2` +🎙️ "Có. Phát hiện ngay, cổng đỏ, exit 2." ⏸ + +### ▶ D2 negative control → `exit=0` +🎙️ "Và nó **không báo động giả** — dữ liệu bình thường thì im lặng. Có cả ca dương lẫn ca âm." + +### ▶ D3/D4/D6 (nói gộp) +🎙️ "Còn lại: phát hiện model đổi hành vi; token đo từ **model thật**, không ước lượng; +và phân biệt output bịa đặt với output bám tài liệu." + +## 🔥 Cross-layer chain + +### ▶ Banner CHAIN → 4 lớp chặn liên tiếp +🎙️ "Cuối cùng, một chuỗi xuyên lớp: injection lái tool, đòi credential, rồi hành động sai. +Bốn lớp chặn **liên tiếp** — H4, rồi schema tool, rồi timeout, rồi audit. Đây là **defense-in-depth**." ⏸ + +### ▶ Scorecard / chốt Video 1 +🎙️ "Ba harness này từng là điểm yếu nhất của hệ. Giờ mỗi cái chống lại một loạt tấn công thật, +harness thấp nhất đã vượt ngưỡng. **Nhưng** — chặn được tấn công demo là một chuyện. +**Sống sót trong production là chuyện khác.** Đó là nội dung video thứ hai." ⏸⏸ + +--- + +# 🎬 VIDEO 2 — PRODUCTION HARDENING (`run-hardening.sh`) + +### ▶ Banner "PART 2 — PRODUCTION HARDENING" +🎙️ "Phần hai, chúng tôi hỏi câu khó hơn. Không phải 'có chặn được injection không' — +mà **'đã đủ trưởng thành để chạy production chưa'.** Và trung thực về chỗ chưa tới." + +## ⭐ Track A — Hardening + +### ▶ HA1 🔥 homoglyph → `rc=2` +🎙️ "Nhìn kỹ chữ 'ignore' này. Trông là tiếng Anh, nhưng i, o, e là **ký tự Cyrillic giả**. +Mắt người đọc được; regex ASCII thì mù. Chúng tôi chuẩn hoá Unicode, gập ký tự giả về Latin, +rồi chặn. Exit 2." ⏸ + +### ▶ HA2 zero-width/fullwidth → `rc=2` +🎙️ "Ký tự tàng hình, ký tự toàn rộng — cùng cách xử lý: lộ nguyên hình rồi chặn." + +### ▶ HA3 🔥 base64 → `rc=2` +🎙️ "Giấu payload dưới **base64** để né mọi luật văn bản. Chúng tôi giải mã thứ khả nghi, +quét lại nội dung bên trong — và chặn. Chỉ giải mã cái đáng ngờ, nên không bắt nhầm." + +### ▶ HA4 🔥 strict fail-closed → `rc=2` + `SEMANTIC_STRICT_FAIL_CLOSED` +🎙️ "Đây là câu trả lời cho câu hỏi khó nhất về AI: **nếu tầng phân loại bằng model chết thì sao?** +Hệ non-production thường… âm thầm cho qua. Chúng tôi bật chế độ strict: +**model chết thì CHẶN — fail-closed.** AI không sẵn sàng thì mặc định *không tin*, chứ không tin bừa." ⏸ + +### ▶ HA5 telemetry integrity → `MISMATCH` +🎙️ "Sửa một con số token để giấu chi phí — nhưng telemetry giờ cũng **được ký**. Một byte là lộ." + +### ▶ HA6 🔥 slow-boil + spray → `exit=2` ×2 +🎙️ "Hai mánh né giám sát chi phí: tăng token **từ từ** cho ngưỡng trôi theo, và **rải** nhiều +lệnh nhỏ. Trần tuyệt đối mỗi lần gọi, cộng ngân sách tích luỹ — bắt cả hai." ⏸ + +### ▶ HA7 benign FP → `FP=0%` +🎙️ "Và câu phản biện quan trọng: siết chặt thế có **bắt nhầm** không? +Chín mươi lăm câu hợp lệ, ba ngôn ngữ — tỉ lệ dương-tính-giả **bằng không**. Siết mà không phiền người dùng." + +## ⭐ Track C-MVP + +### ▶ Banner "TRACK C-MVP" +🎙️ "Track C — kiểm soát **ngoài** ba harness lõi. Đây là chỗ rất nhiều hệ AI bỏ quên." + +### ▶ HC1 🔥 action gate → `rc=2` / `rc=3` +🎙️ "Scan prompt tốt — nhưng agent vẫn có thể ghi đè file `.env`, chạy `rm -rf`, hay tải script về chạy thẳng. +Chúng tôi gate **hành động**, không chỉ tên tool. File nhạy cảm và lệnh huỷ diệt: **chặn**. +Cài thư viện: **phải có người duyệt.**" + +### ▶ HC2 🔥 supply-chain → `rc=2` / `rc=3` +🎙️ "Agent tự thêm thư viện? Gói giả mạo tên, script cài-đặt độc, gói trong danh sách đen — **chặn**. +Thư viện mới mà hợp lệ — **cần duyệt**, kèm báo cáo thay đổi." + +### ▶ HC3 data-exfil → `BLOCK` / `MASK` +🎙️ "Secret sắp gửi lên model đám mây — chặn **trước khi** rời tổ chức. Dữ liệu cá nhân vào log — che." + +### ▶ HC4 sandbox → `rc=2` +🎙️ "Code do AI sinh cố đọc khoá SSH, fork-bomb, ghi ra ngoài thư mục làm việc — chặn. +Và tôi nói thẳng: **đây là scaffold, chưa phải cô lập kernel** — bản production cần container. Chúng tôi không giấu điều đó." ⏸ + +## 🏆 Evidence Pack + +### ▶ Banner "EVIDENCE PACK" +🎙️ "Và câu hỏi cuối, quan trọng nhất: **vì sao tin cái output này?**" + +### ▶ HE1 + HE2 → `CREATED` → `VALID` +🎙️ "Mỗi lần chạy sinh một **gói bằng chứng ký số** — mười hai file, đủ bảy harness. Xác minh: hợp lệ." + +### ▶ HE3 🔥🔥 tamper → `TAMPERED exit=1` +🎙️ "Giờ tôi sửa **đúng một byte** trong gói. Xác minh lại… **vô hiệu.** +Đổi một byte là cả gói bằng chứng mất giá trị. **Đây chính là 'vì sao tin output' — +không bằng cảm tính, mà bằng chữ ký.**" ⏸⏸ + +### ▶ HE4 certified gate +🎙️ "Và dấu 'certified' chỉ cấp khi **đủ mọi cổng**. Thiếu bằng chứng, hệ **nói thẳng lý do** — +không đóng dấu khống. Chứng nhận là *kết quả*, không phải nhãn dán." + +### ▶ Chốt tổng (banner CHỐT PART 2) +🎙️ "Tóm lại. Không phải AI **xịn nhất** — mà AI **có kiểm soát, có bằng chứng, tái dùng được**. +Ba harness yếu nhất giờ chống tấn công thật, thêm Track A và Track C, cùng gói bằng chứng +không-sửa-được. **Một trăm bốn mươi bài kiểm thử, không lỗi.** +Và chúng tôi trung thực về phần chưa xong — đa ngôn ngữ, cô lập kernel, quản trị enterprise là lộ trình sau cuộc thi. +**casan-old thắng một buổi demo; casan5 sống sót trong production.**" ⏸⏸⏸ + +--- + +## 🎯 Ngân hàng câu chốt (nhấn khi cần / trả lời giám khảo) + +- "Điểm đáng tin là **số test đối kháng pass**, không phải điểm tự chấm — mỗi gate **fail-able**: gỡ control thì test đỏ." +- "AI ở đây là **tầng leo thang tuỳ chọn** — chỉ thêm được lệnh chặn, không bao giờ gỡ. Tắt AI, mọi đảm bảo lõi vẫn còn." +- "H5 governance **không phụ thuộc model** — toàn mật mã, mạnh sẵn offline." +- "Chúng tôi tuyên bố **Level 4 chứng minh được**. Level 5 — IdP, WORM, dashboard hosted — là roadmap, không nhận đã đạt." +- "Sandbox hiện là **scaffold**; cô lập kernel thật là việc production tiếp theo. Nhận diện đúng giới hạn = trưởng thành bảo mật." +- "Đổi một byte trong gói bằng chứng → chứng nhận vô hiệu. Đó là *tin bằng chữ ký, không bằng lời*." + +## ⏱️ Gợi ý thời lượng + +| Đoạn | Thời lượng | Ghi chú | +|---|---|---| +| Video 1 intro + H4 | ~3–4 phút | nhấn A5 (gián tiếp) | +| Video 1 H5 + H6 + chain + chốt | ~4–5 phút | nhấn B1, B6, D1, CHAIN | +| Video 2 Track A | ~3 phút | nhấn HA1, HA4 | +| Video 2 Track C + Evidence + chốt | ~3–4 phút | **money-shot HE3** | +| **Tổng** | **~13–16 phút** | rút gọn: bỏ cluster gộp, giữ mọi cảnh 🔥 |