feat(video+deck): Part 2 hardening demo script + slide deck update

- run-hardening.sh: narrated "Part 2" battery in the same visual language as
  run-all.sh (card/attack/guard/cmd + on-screen exit code with ⛔/✋/✅ verdict
  chips). Scenes: Track A (HA1-7: homoglyph/zero-width/base64, strict fail-closed,
  telemetry tamper, cost slow-boil/spray, benign FP=0%), Track C-MVP (HC1-4:
  action-gate, supply-chain, data-exfil, sandbox), and the Evidence Pack
  money-shot (HE1-4: pack → verify VALID → tamper 1 byte → TAMPERED exit=1 →
  certified-only-when-earned). Verified end-to-end (exit 0).
- CASAN_SLIDE_DECK.html: reflect implemented vs planned honestly. Updated H4/H5/H6
  AFTER columns, evidence terminal (140 checks), threat-model reframed to
  "identified AND Track A closed", readiness meters bumped to ~3.8-4.0, Track C-MVP
  reframed to DELIVERED (29/29), roadmap marks 07+09 done. Added 2 slides:
  "Track A delivered" and "Evidence Pack money-shot" (18 slides total).
- video guide: Part 1 (run-all) + Part 2 (run-hardening) with pre-flight note.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
thanhnv
2026-07-03 23:51:11 +09:00
co-authored by Claude Opus 4.8
parent 4cc78f74eb
commit 2ffbda3fad
3 changed files with 392 additions and 44 deletions
+73 -43
View File
@@ -194,10 +194,11 @@
<div class="mid">→</div>
<div class="col after"><div class="lbl">AFTER</div><ul>
<li>BLOCK <b>rc=2</b> + normalize leetspeak</li>
<li>+ <b>semantic model-as-judge</b></li>
<li>artifact-scan (indirect) · secret/PII block</li></ul></div>
<li>+ <b>semantic model-as-judge</b> + <b>strict fail-closed</b></li>
<li><b>homoglyph · zero-width · base64</b> đều chặn</li>
<li>artifact-scan + <b>tool-output scan</b> · secret/PII block</li></ul></div>
</div>
<p class="sub"><span class="tag real">ĐO THẬT</span> Adversarial <b>43/43 PASS</b> · injection paraphrase → <code>rc=2</code>.</p>
<p class="sub"><span class="tag real">ĐO THẬT</span> Adversarial <b>44/44</b> + Track A <b>25/25</b> · homoglyph/base64 → <code>rc=2</code> · strict fail-closed → <code>rc=2</code>.</p>
</section>
<!-- 6 H5 -->
@@ -213,9 +214,10 @@
<div class="col after"><div class="lbl">AFTER</div><ul>
<li><b>hash-chain + ký RSA</b> HEAD</li>
<li>sửa 1 ký tự → <b>AUDIT_HASH_MISMATCH</b></li>
<li><b>telemetry token/cost</b> cũng được ký (bất biến)</li>
<li>secrets-scan · quét no-bypass</li></ul></div>
</div>
<p class="sub"><span class="tag real">ĐO THẬT</span> tamper 1 ký tự → <code>AUDIT_HASH_MISMATCH line=1</code> · chain hợp lệ → <code>AUDIT_CHAIN_VALID</code>.</p>
<p class="sub"><span class="tag real">ĐO THẬT</span> tamper audit → <code>AUDIT_HASH_MISMATCH</code> · sửa 1 token telemetry → <code>TELEMETRY_INTEGRITY_MISMATCH</code>.</p>
</section>
<!-- 7 H6 -->
@@ -230,37 +232,64 @@
<div class="mid">→</div>
<div class="col after"><div class="lbl">AFTER</div><ul>
<li><b>cost-spike 3× → exit=2</b></li>
<li>telemetry token thật · drift-detect</li>
<li>circuit-breaker chặn đốt tiền</li></ul></div>
<li>+ <b>trần tuyệt đối/call</b> + <b>ngân sách tích luỹ</b></li>
<li>bắt cả <b>slow-boil</b> + <b>spray</b> + cold-start</li>
<li>telemetry token thật · drift · circuit-breaker</li></ul></div>
</div>
<p class="sub"><span class="tag real">ĐO THẬT</span> spike → <code>COST_SPIKE_DETECTED exit=2</code> · bình thường → <code>exit=0</code>.</p>
<p class="sub"><span class="tag real">ĐO THẬT</span> spike/slow-boil/spray → <code>exit=2</code> · bình thường → <code>exit=0</code> — không né được bằng median.</p>
</section>
<!-- 8 EVIDENCE -->
<section class="slide">
<div class="eyebrow">Bằng chứng tổng hợp <span class="tag real">ĐO THẬT</span></div>
<h2>Kiểm chứng ngay trên máy — không nói suông</h2>
<h2>Kiểm chứng ngay trên máy — <span class="grad">140 checks, 0 fail</span></h2>
<div class="term">
<div><span class="dim">$</span> run-casan4-harness-tests.sh → <span class="ok">35/35 PASS</span></div>
<div><span class="dim">$</span> adversarial-harness-tests.sh → <span class="ok">43/43 PASS</span></div>
<div><span class="dim">$</span> security-check (injection) → <span class="no">BLOCKED rc=2</span></div>
<div><span class="dim">$</span> tamper audit → <span class="no">AUDIT_HASH_MISMATCH line=1</span></div>
<div><span class="dim">$</span> cost 3× → <span class="no">COST_SPIKE_DETECTED exit=2</span></div>
<div><span class="dim">$</span> adversarial-harness-tests.sh → <span class="ok">44/44 PASS</span></div>
<div><span class="dim">$</span> phase1-track-a-tests.sh → <span class="ok">25/25 PASS</span> <span class="dim">(hardening)</span></div>
<div><span class="dim">$</span> phase2-track-c-tests.sh → <span class="ok">29/29 PASS</span> <span class="dim">(C-MVP)</span></div>
<div><span class="dim">$</span> phase3-evidence-pack-tests.sh → <span class="ok">7/7 PASS</span></div>
<div><span class="dim">$</span> homoglyph/base64 inject → <span class="no">BLOCKED rc=2</span> · tamper token → <span class="no">TELEMETRY_MISMATCH</span></div>
</div>
<p class="sub">👉 Chiếu terminal thật 1–2 dòng này khi trình bày để tạo sức nặng.</p>
<p class="sub">Baseline <b>79</b> giữ nguyên · <b>+61</b> hardening = <b>140</b>. 👉 Chiếu terminal thật khi trình bày.</p>
</section>
<!-- 8b TRACK A DELIVERED -->
<section class="slide">
<div class="eyebrow">Trục 3 · Track A <span class="tag real">ĐÃ LÀM + TEST</span></div>
<h2>Hardening H4·H5·H6 — <span class="grad">đánh bại thứ regex cũ bỏ sót</span></h2>
<div class="cards c3">
<div class="card on4"><h3>🔴 H4+</h3><p><b>Homoglyph · zero-width · fullwidth · base64</b> đều chặn (rc=2). <b>Strict fail-closed</b>: model chết → BLOCK, không SKIP âm thầm. Quét cả tool-output.</p></div>
<div class="card on5"><h3>🔵 H5+</h3><p><b>Telemetry token/cost</b> vào manifest ký số — sửa 1 byte → <code>MISMATCH</code>. Bất biến như audit chain.</p></div>
<div class="card on6"><h3>🟢 H6+</h3><p><b>Trần tuyệt đối/call</b> + <b>ngân sách tích luỹ</b> — bắt slow-boil & spray & cold-start, ngoài spike 3×median.</p></div>
</div>
<p class="sub"><span class="tag real">ĐO THẬT</span> Benign corpus <b>95 mẫu EN/VI/JA</b> → <b>FP = 0%</b> · adversarial block <b>100%</b> · CRITICAL <b>100%</b> — siết chặt mà <b>không bắt nhầm</b>.</p>
</section>
<!-- 8c EVIDENCE PACK money-shot -->
<section class="slide">
<div class="eyebrow">Plan-09 · Evidence Pack <span class="tag real">MVP ĐÃ LÀM</span></div>
<h2>"Vì sao tin output này?" → <span class="grad">gói bằng chứng ký số</span></h2>
<div class="term">
<div><span class="dim">$</span> casan pack &lt;run&gt; → <span class="ok">EVIDENCE_PACK_CREATED</span> <span class="dim">(12 file: h1..h7 + redteam + cost + manifest + decision-log)</span></div>
<div><span class="dim">$</span> casan verify-pack &lt;run&gt; → <span class="ok">EVIDENCE_PACK_VALID anchor=signed</span></div>
<div><span class="dim">$</span> <span class="dim"># sửa 1 byte trong pack…</span></div>
<div><span class="dim">$</span> casan verify-pack &lt;run&gt; → <span class="no">EVIDENCE_PACK_TAMPERED · exit=1</span></div>
<div><span class="dim">$</span> certified = <b>chỉ true khi ĐỦ cổng</b> (audit✓ telemetry✓ cost✓ FP✓), thiếu → ghi lý do, KHÔNG chứng nhận khống</div>
</div>
<p class="sub">Đổi <b>1 byte</b> → chứng nhận <b>vô hiệu</b>. Manifest hash + chữ ký RSA trên head → tamper-evident thật.</p>
</section>
<!-- 9 DEPTH: threat model + principle -->
<section class="slide">
<div class="eyebrow">Trục 2 · Hiểu sâu</div>
<h2>Chúng tôi biết <span class="grad">còn lọt ở đâu</span></h2>
<div class="eyebrow">Trục 2 · Hiểu sâu · nhận diện → VÁ</div>
<h2>Nhận diện đường lọt — và <span class="grad">Track A đã đóng</span></h2>
<div class="cards c3">
<div class="card on4"><h3>🔴 H4</h3><p>Semantic SKIP khi vắng model · injection đa ngôn ngữ · homoglyph/encoding.</p></div>
<div class="card on5"><h3>🔵 H5</h3><p>Telemetry chưa vào chuỗi ký · mutation ngoài wrapper · quản lý khóa.</p></div>
<div class="card on6"><h3>🟢 H6</h3><p>Slow-boil (median trôi) · lạm dụng dưới ngưỡng · cold-start.</p></div>
<div class="card on4"><h3>🔴 H4</h3><p><span class="tag real">ĐÃ VÁ</span> Semantic SKIP → strict fail-closed · homoglyph/encoding → chặn. <span class="tag warn">CÒN</span> đa ngôn ngữ, inject-classifier (Track B).</p></div>
<div class="card on5"><h3>🔵 H5</h3><p><span class="tag real">ĐÃ VÁ</span> Telemetry vào chuỗi ký. <span class="tag warn">CÒN</span> quản lý khóa HSM, TOCTOU (Track B).</p></div>
<div class="card on6"><h3>🟢 H6</h3><p><span class="tag real">ĐÃ VÁ</span> Slow-boil + dưới-ngưỡng + cold-start → trần tuyệt đối/tích luỹ. <span class="tag warn">CÒN</span> circuit theo tỷ lệ (Track B).</p></div>
</div>
<p class="sub">Chuẩn tham chiếu: OWASP LLM/Agentic · CSA MAESTRO · MITRE ATLAS.
Nguyên tắc: <b>"harness thấp nhất quyết định trần"</b> — cái yếu nhất quyết định cả pipeline.</p>
<p class="sub">Chuẩn: OWASP LLM/Agentic · CSA MAESTRO · MITRE ATLAS. Nguyên tắc: <b>"harness thấp nhất quyết định trần"</b>. Mỗi vá kèm test đối kháng fail-able.</p>
</section>
<!-- 10 MODEL -->
@@ -276,31 +305,31 @@
<!-- 11 PRODUCTION READINESS -->
<section class="slide">
<div class="eyebrow">Trục 3 · Hướng production</div>
<h2>Thang sẵn sàng: <span class="grad">~3.0/5</span> → mục tiêu ≥ 4.0</h2>
<div class="eyebrow">Trục 3 · Hướng production · sau Track A + C-MVP</div>
<h2>Thang sẵn sàng: <span class="grad">~3.8–4.0/5</span> (production nội bộ)</h2>
<div class="meters">
<div class="meter"><div class="m-l">Phủ phát hiện</div><div class="track"><div class="fill" style="width:60%"></div></div><div class="m-v">3</div></div>
<div class="meter"><div class="m-l">Fail-safe</div><div class="track"><div class="fill" style="width:80%"></div></div><div class="m-v">4</div></div>
<div class="meter"><div class="m-l">Chống giả mạo</div><div class="track"><div class="fill" style="width:60%"></div></div><div class="m-v">3</div></div>
<div class="meter"><div class="m-l">Kiểm soát chi phí</div><div class="track"><div class="fill" style="width:60%"></div></div><div class="m-v">3</div></div>
<div class="meter"><div class="m-l">Phủ phát hiện</div><div class="track"><div class="fill" style="width:80%"></div></div><div class="m-v">4</div></div>
<div class="meter"><div class="m-l">Fail-safe</div><div class="track"><div class="fill" style="width:90%"></div></div><div class="m-v">4.5</div></div>
<div class="meter"><div class="m-l">Chống giả mạo</div><div class="track"><div class="fill" style="width:80%"></div></div><div class="m-v">4</div></div>
<div class="meter"><div class="m-l">Kiểm soát chi phí</div><div class="track"><div class="fill" style="width:80%"></div></div><div class="m-v">4</div></div>
<div class="meter"><div class="m-l">Tool-authz / supply-chain</div><div class="track"><div class="fill" style="width:70%"></div></div><div class="m-v">3.5</div></div>
<div class="meter"><div class="m-l">Đa domain / i18n</div><div class="track"><div class="fill" style="width:40%"></div></div><div class="m-v">2</div></div>
<div class="meter"><div class="m-l">Phủ kiểm thử</div><div class="track"><div class="fill" style="width:80%"></div></div><div class="m-v">4</div></div>
</div>
<p class="sub"><span class="tag warn">TRUNG THỰC</span> Demo ✅ đủ mạnh · Track A → <b>~3.8–4.0</b> (production nội bộ) · <b>Track B+C</b> → production nghiêm túc. Mỗi vá kèm test đối kháng.</p>
<p class="sub"><span class="tag warn">TRUNG THỰC</span> Track A + C-MVP + Evidence Pack <b>đã làm</b> → ~3.8–4.0. <b>Track B + C-Governance/Ops + sandbox cô lập thật</b> → production nghiêm túc (roadmap sau thi).</p>
</section>
<!-- 11b TRACK C-1 -->
<section class="slide">
<div class="eyebrow">Trục 3 · Track C-MVP · Kín đòn phản biện</div>
<h2>Kiểm soát <span class="grad">ngoài</span> H4·H5·H6 — nhóm ưu tiên</h2>
<p class="sub">"Scan prompt tốt — nhưng agent vẫn có thể <b>thêm dependency độc</b> / <b>ghi file nhạy cảm</b>?" → đây là <b>minimum bar</b> trước khi cho agent ghi code trong môi trường production-like.</p>
<div class="eyebrow">Trục 3 · Track C-MVP <span class="tag real">ĐÃ LÀM + TEST (29/29)</span></div>
<h2>Kiểm soát <span class="grad">ngoài</span> H4·H5·H6 — đã dựng minimum bar</h2>
<p class="sub">Trả đòn phản biện "agent vẫn có thể <b>thêm dependency độc</b> / <b>ghi .env</b>?" — nay đã có gate thật, chạy được, có test.</p>
<div class="cards c4">
<div class="card on4"><h3>🔐 Tool authorization</h3><p>Gate cả <b>hành động</b> (ghi file/network/lệnh nguy hiểm), không chỉ tên tool.</p></div>
<div class="card on6"><h3>📦 Supply-chain</h3><p>Scan dependency mới · chặn typo-squat/postinstall · SBOM + CVE.</p></div>
<div class="card on4"><h3>🕵️ Data exfiltration</h3><p>Chặn secret/PII rò qua cloud model · log · artifact.</p></div>
<div class="card on7"><h3>🧪 Runtime sandbox</h3><p>Cô lập code/test sinh ra: file/network/CPU/mem/timeout.</p></div>
<div class="card on4"><h3>🔐 Tool authorization</h3><p>Gate cả <b>hành động</b>: <code>.env</code>/private-key/CI-config → BLOCK · <code>rm -rf</code>/<code>curl|bash</code> → BLOCK · egress → duyệt.</p></div>
<div class="card on6"><h3>📦 Supply-chain</h3><p><b>typosquat + postinstall + gói độc → BLOCK</b> · dep mới → duyệt · dep-diff report.</p></div>
<div class="card on4"><h3>🕵️ Data exfiltration</h3><p>secret→cloud/artifact <b>BLOCK</b> · PII→audit <b>MASK</b>.</p></div>
<div class="card on7"><h3>🧪 Runtime sandbox <span class="tag warn">scaffold</span></h3><p>Chặn đọc ~/.ssh · net egress · fork-bomb · ghi ngoài workspace + ulimit. <b>Chưa</b> cô lập kernel.</p></div>
</div>
<p class="sub">Outcome chuẩn hoá: <code>ALLOW · WARN · REQUIRE_APPROVAL · BLOCK</code> (thêm dependency → duyệt; ghi <code>.env</code> → chặn).</p>
<p class="sub">Outcome chuẩn hoá thật: <code>ALLOW · WARN · REQUIRE_APPROVAL · BLOCK</code>. Approval cần <b>người duyệt định danh</b> (audit).</p>
</section>
<!-- 11c TRACK C-2 -->
@@ -308,12 +337,12 @@
<div class="eyebrow">Trục 3 · Track C · Governance & Ops</div>
<h2>Quản trị & vận hành <span class="grad">mức enterprise</span></h2>
<div class="cards c4">
<div class="card on5"><h3>📝 Policy approval</h3><p>Versioning + reviewer bắt buộc · audit actor · rollback policy.</p></div>
<div class="card on5"><h3>🗄️ External audit</h3><p>Append-only (WORM) ngoài runtime · alert khi chain đứt.</p></div>
<div class="card on6"><h3>🚨 Incident response</h3><p>Severity CRIT→MED · owner · kill-switch theo project/model.</p></div>
<div class="card"><h3>✓ Benign / FP</h3><p>≥30 mẫu/ngôn ngữ · FP ≤ 3% · adversarial block ≥ 95%.</p></div>
<div class="card on5"><h3>📝 Policy approval <span class="tag warn">roadmap</span></h3><p>Versioning + reviewer bắt buộc · audit actor · rollback policy.</p></div>
<div class="card on5"><h3>🗄️ External audit <span class="tag warn">roadmap</span></h3><p>Append-only (WORM) ngoài runtime · alert khi chain đứt.</p></div>
<div class="card on6"><h3>🚨 Incident response <span class="tag warn">roadmap</span></h3><p>Severity CRIT→MED · owner · kill-switch theo project/model.</p></div>
<div class="card"><h3>✓ Benign / FP <span class="tag real">ĐÃ LÀM</span></h3><p>95 mẫu EN/VI/JA · <b>FP = 0%</b> · block 100% · CRITICAL 100%.</p></div>
</div>
<p class="sub">Reviewer role: Security · Tech lead · Ops owner · Project owner — mỗi loại policy có người duyệt riêng.</p>
<p class="sub"><span class="tag warn">CÒN LẠI (sau thi)</span> Policy-approval · WORM audit · incident kill-switch — enterprise governance/ops, đã có lộ trình task-level.</p>
</section>
<!-- 12 PACKAGING -->
@@ -339,9 +368,10 @@
<div class="card"><h3>04</h3><p>Khép vòng tự cải tiến</p></div>
<div class="card"><h3>05</h3><p>CI/CD + phát hành</p></div>
<div class="card"><h3>06</h3><p>Onboard dự án 2</p></div>
<div class="card on4"><h3>07</h3><p>Hardening H4·H5·H6</p></div>
<div class="card"><h3>✓</h3><p>Verify từng task</p></div>
<div class="card on4"><h3>07 ✅</h3><p>Hardening Track A + C-MVP <b>(đã làm)</b></p></div>
<div class="card on6"><h3>09 ✅</h3><p>Evidence Pack MVP <b>(đã làm)</b></p></div>
</div>
<p class="sub"><span class="tag real">ĐÃ LÀM</span> 07 Track A + C-MVP · 09 Evidence Pack — có test (140 checks). <span class="tag warn">SAU THI</span> 07 Track B + C-Gov/Ops · 08 · 10 · 12.</p>
</section>
<!-- 14 CLOSE -->