# 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 🔥 |