<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>False Confidence on Tarragon</title><link>https://tarrragon.github.io/blog/tags/false-confidence/</link><description>Recent content in False Confidence on Tarragon</description><generator>Hugo -- gohugo.io</generator><language>zh-TW</language><copyright>Tarragon (CC BY 4.0)</copyright><lastBuildDate>Fri, 01 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://tarrragon.github.io/blog/tags/false-confidence/index.xml" rel="self" type="application/rss+xml"/><item><title>False sense of security 是資安寫作的主要失敗模式</title><link>https://tarrragon.github.io/blog/report/false-sense-of-security-as-primary-failure/</link><pubDate>Fri, 01 May 2026 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/report/false-sense-of-security-as-primary-failure/</guid><description>&lt;h2 id="核心原則">核心原則&lt;/h2>
&lt;p>&lt;strong>資安教學的主要失敗模式不是「讀者學不到」、是「讀者以為學到了」。&lt;/strong> 學不到是 active failure（讀者知道自己沒會、會去查）、以為學到是 silent failure（讀者跳過驗證、直接 implement、破口在生產系統累積）。&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>失敗模式&lt;/th>
 &lt;th>讀者狀態&lt;/th>
 &lt;th>後續行為&lt;/th>
 &lt;th>系統端後果&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>讀不懂&lt;/td>
 &lt;td>知道自己沒會&lt;/td>
 &lt;td>去查標準 / 問人 / 重學&lt;/td>
 &lt;td>學習延遲、實作前找補&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;strong>以為學會&lt;/strong>&lt;/td>
 &lt;td>不知道自己沒會&lt;/td>
 &lt;td>跳過驗證、直接 implement&lt;/td>
 &lt;td>&lt;strong>生產破口、事件偵測前無人警覺&lt;/strong>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>讀懂並會驗證&lt;/td>
 &lt;td>知道邊界、知道何時失效&lt;/td>
 &lt;td>實作 + 持續驗證&lt;/td>
 &lt;td>安全 baseline 達成&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>中間那行（false sense of security）是資安寫作要消滅的目標。&lt;strong>比沒讀過更糟&lt;/strong>——沒讀過會去查，讀過含糊版會跳過。&lt;/p>
&lt;hr>
&lt;h2 id="情境">情境&lt;/h2>
&lt;p>讀者讀完資安章節、會自然形成一個結論：「我學到了 X 防護方法」。這個結論的安全性依賴它能不能被分解成可驗證的子句：&lt;/p>
&lt;ul>
&lt;li>對什麼 threat 安全？&lt;/li>
&lt;li>在什麼 deployment 條件下成立？&lt;/li>
&lt;li>什麼前提失效時這個防護失效？&lt;/li>
&lt;li>跟既有實作疊加會不會 silent 干擾？&lt;/li>
&lt;/ul>
&lt;p>如果讀者讀完無法回答這四題、結論就是空殼——表面上「學到了」、實質上是 false sense of security。資安章節（&lt;code>backend/07-security-data-protection/&lt;/code>）的「問題節點」表格容易長出這個結構：&lt;/p>





&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-text" data-lang="text">&lt;span class="line">&lt;span class="ln">1&lt;/span>&lt;span class="cl">判讀訊號：登入驗證節奏失衡
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">2&lt;/span>&lt;span class="cl">風險後果：身分擴散速度提升
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">3&lt;/span>&lt;span class="cl">前置控制面：authentication / incident-severity&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>讀者讀完知道「節奏失衡很危險」、但&lt;strong>不知道&lt;/strong>：&lt;/p>
&lt;ul>
&lt;li>「節奏失衡」具體閾值是什麼？（threat model 沒寫）&lt;/li>
&lt;li>「authentication」是哪一層的 control？適用什麼 deployment？（context-dependence 沒寫）&lt;/li>
&lt;li>用了 control 之後、什麼情況下還是會擴散？（mitigation 邊界沒寫）&lt;/li>
&lt;/ul>
&lt;p>讀者照字面實作 → 心裡覺得「節奏控管做了、authentication 用了」→ silent gap。&lt;/p>
&lt;hr>
&lt;h2 id="理想做法">理想做法&lt;/h2>
&lt;p>把「讀者讀完會說什麼」當成 audit 主軸。對每段論述跑這個反向驗證：&lt;/p>
&lt;h3 id="反向驗證模板">反向驗證模板&lt;/h3>
&lt;p>寫完一段、自問：&lt;/p>
&lt;ol>
&lt;li>&lt;strong>讀者讀完會在心裡形成什麼結論？&lt;/strong>（例：「我做了 session invalidation 就安全」）&lt;/li>
&lt;li>&lt;strong>這個結論能不能拆成可驗證子句？&lt;/strong>（對什麼攻擊安全 / 什麼條件下 / 什麼前提失效）&lt;/li>
&lt;li>&lt;strong>如果不能、補哪一塊讓它能？&lt;/strong>（threat model / context / boundary / 前提條件）&lt;/li>
&lt;/ol>
&lt;p>走完三步、原文若仍是「讀完會 false confidence」、必須改寫——加 contrast、加 boundary、加前提、或拆成更小的可驗證單元。&lt;/p>
&lt;h3 id="識別-false-sense-句子的訊號詞">識別 false-sense 句子的訊號詞&lt;/h3>
&lt;p>下列詞彙在資安內容是 high-risk、預設要被 audit：&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>訊號詞&lt;/th>
 &lt;th>為什麼是 risk&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>「能擋」「能防」「可避免」&lt;/td>
 &lt;td>沒指定擋什麼、預設讀者會自行補完整 threat space、實際只擋作者腦中的 subset&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>「最佳實踐」「業界標準」&lt;/td>
 &lt;td>隱含 universal validity、跳過 context-dependence&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>「使用 X 即可」&lt;/td>
 &lt;td>把 mitigation 當成銀彈、跳過邊界跟疊加&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>「業界常用」「常見做法」&lt;/td>
 &lt;td>Appeal to convention、不是 mitigation 對位驗證&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>「應該足夠」「通常足夠」&lt;/td>
 &lt;td>沒給「足夠」的定義、讀者會用最寬鬆詮釋&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>「有效」「有用」&lt;/td>
 &lt;td>對什麼 threat 有效？讀者預設「對所有」、實際只對 subset&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>每出現一個訊號詞、檢查段落有沒有對應的 boundary 補述；沒有 → 補完或改寫。&lt;/p>
&lt;h3 id="methodology-layer-訊號詞多-layer-false-sense">Methodology-layer 訊號詞（多 layer false sense）&lt;/h3>
&lt;p>False sense of security 不只發生在 mitigation layer——還會在 &lt;strong>methodology / framework / process layer&lt;/strong> 出現。Reader 讀完「我們有方法論 / 有路由系統 / 有 maturity stage / 有 release gate / 有 tripwire」、形成「&lt;strong>有 system / framework = 安全&lt;/strong>」結論、跳過驗證下游 control 是否真擋 threat。&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>Layer&lt;/th>
 &lt;th>失敗模式&lt;/th>
 &lt;th>Reader 形成的 false 結論&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>Mitigation layer&lt;/td>
 &lt;td>上一張表訊號詞&lt;/td>
 &lt;td>「我做了 X mitigation 就安全」&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>Methodology layer&lt;/td>
 &lt;td>把 framework / routing 當成已治理 risk&lt;/td>
 &lt;td>「我們有 routing system / framework 了 = 風險可控」&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>Process layer&lt;/td>
 &lt;td>把 gate / checklist 當成 risk reduce&lt;/td>
 &lt;td>「跑了 release gate / 例外有 tripwire = 安全」&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>Maturity layer&lt;/td>
 &lt;td>把 stage 等級當成 mitigation 強度&lt;/td>
 &lt;td>「我們在可稽核閉環 stage = 風險低」&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>Methodology-layer 訊號詞清單：&lt;/p></description><content:encoded><![CDATA[<h2 id="核心原則">核心原則</h2>
<p><strong>資安教學的主要失敗模式不是「讀者學不到」、是「讀者以為學到了」。</strong> 學不到是 active failure（讀者知道自己沒會、會去查）、以為學到是 silent failure（讀者跳過驗證、直接 implement、破口在生產系統累積）。</p>
<table>
  <thead>
      <tr>
          <th>失敗模式</th>
          <th>讀者狀態</th>
          <th>後續行為</th>
          <th>系統端後果</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>讀不懂</td>
          <td>知道自己沒會</td>
          <td>去查標準 / 問人 / 重學</td>
          <td>學習延遲、實作前找補</td>
      </tr>
      <tr>
          <td><strong>以為學會</strong></td>
          <td>不知道自己沒會</td>
          <td>跳過驗證、直接 implement</td>
          <td><strong>生產破口、事件偵測前無人警覺</strong></td>
      </tr>
      <tr>
          <td>讀懂並會驗證</td>
          <td>知道邊界、知道何時失效</td>
          <td>實作 + 持續驗證</td>
          <td>安全 baseline 達成</td>
      </tr>
  </tbody>
</table>
<p>中間那行（false sense of security）是資安寫作要消滅的目標。<strong>比沒讀過更糟</strong>——沒讀過會去查，讀過含糊版會跳過。</p>
<hr>
<h2 id="情境">情境</h2>
<p>讀者讀完資安章節、會自然形成一個結論：「我學到了 X 防護方法」。這個結論的安全性依賴它能不能被分解成可驗證的子句：</p>
<ul>
<li>對什麼 threat 安全？</li>
<li>在什麼 deployment 條件下成立？</li>
<li>什麼前提失效時這個防護失效？</li>
<li>跟既有實作疊加會不會 silent 干擾？</li>
</ul>
<p>如果讀者讀完無法回答這四題、結論就是空殼——表面上「學到了」、實質上是 false sense of security。資安章節（<code>backend/07-security-data-protection/</code>）的「問題節點」表格容易長出這個結構：</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="ln">1</span><span class="cl">判讀訊號：登入驗證節奏失衡
</span></span><span class="line"><span class="ln">2</span><span class="cl">風險後果：身分擴散速度提升
</span></span><span class="line"><span class="ln">3</span><span class="cl">前置控制面：authentication / incident-severity</span></span></code></pre></div><p>讀者讀完知道「節奏失衡很危險」、但<strong>不知道</strong>：</p>
<ul>
<li>「節奏失衡」具體閾值是什麼？（threat model 沒寫）</li>
<li>「authentication」是哪一層的 control？適用什麼 deployment？（context-dependence 沒寫）</li>
<li>用了 control 之後、什麼情況下還是會擴散？（mitigation 邊界沒寫）</li>
</ul>
<p>讀者照字面實作 → 心裡覺得「節奏控管做了、authentication 用了」→ silent gap。</p>
<hr>
<h2 id="理想做法">理想做法</h2>
<p>把「讀者讀完會說什麼」當成 audit 主軸。對每段論述跑這個反向驗證：</p>
<h3 id="反向驗證模板">反向驗證模板</h3>
<p>寫完一段、自問：</p>
<ol>
<li><strong>讀者讀完會在心裡形成什麼結論？</strong>（例：「我做了 session invalidation 就安全」）</li>
<li><strong>這個結論能不能拆成可驗證子句？</strong>（對什麼攻擊安全 / 什麼條件下 / 什麼前提失效）</li>
<li><strong>如果不能、補哪一塊讓它能？</strong>（threat model / context / boundary / 前提條件）</li>
</ol>
<p>走完三步、原文若仍是「讀完會 false confidence」、必須改寫——加 contrast、加 boundary、加前提、或拆成更小的可驗證單元。</p>
<h3 id="識別-false-sense-句子的訊號詞">識別 false-sense 句子的訊號詞</h3>
<p>下列詞彙在資安內容是 high-risk、預設要被 audit：</p>
<table>
  <thead>
      <tr>
          <th>訊號詞</th>
          <th>為什麼是 risk</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>「能擋」「能防」「可避免」</td>
          <td>沒指定擋什麼、預設讀者會自行補完整 threat space、實際只擋作者腦中的 subset</td>
      </tr>
      <tr>
          <td>「最佳實踐」「業界標準」</td>
          <td>隱含 universal validity、跳過 context-dependence</td>
      </tr>
      <tr>
          <td>「使用 X 即可」</td>
          <td>把 mitigation 當成銀彈、跳過邊界跟疊加</td>
      </tr>
      <tr>
          <td>「業界常用」「常見做法」</td>
          <td>Appeal to convention、不是 mitigation 對位驗證</td>
      </tr>
      <tr>
          <td>「應該足夠」「通常足夠」</td>
          <td>沒給「足夠」的定義、讀者會用最寬鬆詮釋</td>
      </tr>
      <tr>
          <td>「有效」「有用」</td>
          <td>對什麼 threat 有效？讀者預設「對所有」、實際只對 subset</td>
      </tr>
  </tbody>
</table>
<p>每出現一個訊號詞、檢查段落有沒有對應的 boundary 補述；沒有 → 補完或改寫。</p>
<h3 id="methodology-layer-訊號詞多-layer-false-sense">Methodology-layer 訊號詞（多 layer false sense）</h3>
<p>False sense of security 不只發生在 mitigation layer——還會在 <strong>methodology / framework / process layer</strong> 出現。Reader 讀完「我們有方法論 / 有路由系統 / 有 maturity stage / 有 release gate / 有 tripwire」、形成「<strong>有 system / framework = 安全</strong>」結論、跳過驗證下游 control 是否真擋 threat。</p>
<table>
  <thead>
      <tr>
          <th>Layer</th>
          <th>失敗模式</th>
          <th>Reader 形成的 false 結論</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Mitigation layer</td>
          <td>上一張表訊號詞</td>
          <td>「我做了 X mitigation 就安全」</td>
      </tr>
      <tr>
          <td>Methodology layer</td>
          <td>把 framework / routing 當成已治理 risk</td>
          <td>「我們有 routing system / framework 了 = 風險可控」</td>
      </tr>
      <tr>
          <td>Process layer</td>
          <td>把 gate / checklist 當成 risk reduce</td>
          <td>「跑了 release gate / 例外有 tripwire = 安全」</td>
      </tr>
      <tr>
          <td>Maturity layer</td>
          <td>把 stage 等級當成 mitigation 強度</td>
          <td>「我們在可稽核閉環 stage = 風險低」</td>
      </tr>
  </tbody>
</table>
<p>Methodology-layer 訊號詞清單：</p>
<table>
  <thead>
      <tr>
          <th>訊號詞</th>
          <th>為什麼是 risk</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>「有方法論」「有 framework」</td>
          <td>方法論不擋 threat、是把 threat 路由到對應控制面、實際擋 threat 仍靠下游控制</td>
      </tr>
      <tr>
          <td>「能路由」「decision system」「分類治理」</td>
          <td>Routing 提供分類、不提供 mitigation；reader 不點下游控制可能停留在 routing layer</td>
      </tr>
      <tr>
          <td>「有 maturity stage / process」</td>
          <td>Maturity 是 process metric、不等於 risk reduction；mature process 可在某 deployment 條件下 silent 失效</td>
      </tr>
      <tr>
          <td>「跑了 gate / 過了 checklist」</td>
          <td>Gate / checklist 通過 ≠ control 真擋 threat、可能是 ceremonial false sense（<a href="../literal-interception-vs-behavioral-refinement/">#82</a> 字面層）</td>
      </tr>
      <tr>
          <td>「設了 tripwire」「有重評估機制」</td>
          <td>Tripwire 沒 quantify（threshold / cadence / owner）等同沒設、見 <a href="../escalation-trigger-quantification/">#91</a></td>
      </tr>
      <tr>
          <td>「能治理」「可控」「閉環」</td>
          <td>治理 / 閉環是流程語、reader 預設「閉環 = 風險擋住」、實際閉環只是流程 cycle、不保證 mitigation 強度</td>
      </tr>
  </tbody>
</table>
<p>驗證方式跟 mitigation layer 同：reader 讀完能否拆 falsifiable 子句？能不能列出<strong>具體下游 control + 各自 boundary + 各自驗證訊號</strong>？不能 → methodology-layer false sense 產地、補「下一步路由 / 必連控制面 / 各 control 的 verification check」。</p>
<h3 id="對抗只給結論的句法">對抗「只給結論」的句法</h3>
<p>跟 <a href="../positive-rewrite-preserves-contrast/">#94 正向改寫保留對照論據</a> 同骨：資安結論單獨成立會空降、必須跟 contrast / 邊界 / 前提同句承載。</p>
<table>
  <thead>
      <tr>
          <th>危險寫法</th>
          <th>安全寫法</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>「使用 HTTPS 保護傳輸」</td>
          <td>「使用 HTTPS 防中間人讀取、不防 endpoint 信任失效（CA compromise / cert pinning bypass）」</td>
      </tr>
      <tr>
          <td>「JWT 用簽章驗證身分」</td>
          <td>「簽章驗 token 沒被竄改、不驗 token 沒被竊取（XSS / 明文存儲）、需配 rotation + 短 TTL」</td>
      </tr>
      <tr>
          <td>「rate limit 擋 brute force」</td>
          <td>「per-IP rate limit 擋單來源連續嘗試、不擋分散來源（botnet / credential stuffing）」</td>
      </tr>
  </tbody>
</table>
<hr>
<h2 id="沒這樣做的麻煩">沒這樣做的麻煩</h2>
<h3 id="silent-failure-比-noisy-failure-更貴">Silent failure 比 noisy failure 更貴</h3>
<p>Noisy failure（讀者讀不懂、實作報錯、被 reviewer 抓到）發生在開發前期、修復成本是 commit 等級。silent failure（讀者以為對了、ship 進生產）發生在生產系統、可能等到事件才被發現、修復成本跳到事件處理 + 通報 + 復盤 + 信任修復。</p>
<p>跟 <a href="../literal-interception-vs-behavioral-refinement/">#82 字面攔截 vs 行為精煉</a> 同病——#82 的核心是「驗證工具的字面層 vs 行為層 ceiling」：CI 字面層通過不代表行為層沒問題、但 CI 通過會建立 false confidence、阻止後續行為層檢查。本卡是 #82 在資安寫作的具體展現：含糊的論述提供字面 mitigation、讀者讀完建立 false confidence、阻止實作端的行為層 verify。</p>
<h3 id="教學擴散把單篇-silent-gap-放大成系統性-risk">教學擴散把單篇 silent gap 放大成系統性 risk</h3>
<p>含糊的資安內容若被多團隊引用 / 翻譯 / 二次教材化、原始 misinterpretation pattern 會被批量繼承。攻擊者只需找一次 misinterpretation、就可以利用所有 implementation。一般教學的錯誤是個別讀者的學習成本、資安教學的錯誤是 risk surface 集體放大——跟 <a href="../ease-of-writing-vs-intent-alignment/">#67 寫作便利度跟意圖對齊反相關</a> 在資安領域的展現：寫得越輕鬆、擴散越快、silent gap 越廣。</p>
<h3 id="事故發生後的-root-cause-無法還原">事故發生後的 root cause 無法還原</h3>
<p>下游事件 root cause 分析時、若實作來源是含糊的教學內容、無法判定是「教學錯」還是「讀者誤解」——含糊本身就是 ambiguity 來源、責任邊界模糊。理想的資安內容應該能讓「實作 vs 教學」1:1 對照、出問題時 trace 得到 root cause（<a href="../literal-interception-vs-behavioral-refinement/">#82 字面攔截 vs 行為精煉</a> 的 traceability 面）。</p>
<hr>
<h2 id="跟其他抽象層原則的關係">跟其他抽象層原則的關係</h2>
<table>
  <thead>
      <tr>
          <th>原則</th>
          <th>關係</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><a href="../literal-interception-vs-behavioral-refinement/">#82 字面攔截 vs 行為精煉</a></td>
          <td><strong>本卡是 #82 的領域具體化最危險版本</strong> — false confidence 在資安寫作的展現、後果不可逆、是 #82 ceiling pattern 的高風險案例</td>
      </tr>
      <tr>
          <td><a href="../layered-strategy-signal-consistency/">#90 L1+L2 訊號一致性</a></td>
          <td><strong>同骨 sibling</strong> — silent fallback 即 false confidence、本卡是同類議題在「教學跟實作之間訊號一致」的展現</td>
      </tr>
      <tr>
          <td><a href="../security-teaching-rigor-asymmetry/">#99 資安教學審查標準對應風險不對稱</a></td>
          <td><strong>#99 的下游主軸</strong> — #99 立論「為什麼資安要學術級 audit」、本卡定義「audit 主要要找什麼」、99 → 100 是動機 → 目標的因果鏈</td>
      </tr>
      <tr>
          <td><a href="../positive-rewrite-preserves-contrast/">#94 正向改寫保留對照論據</a></td>
          <td>同骨：刪掉 contrast 讓結論空降、本卡的「只給防護不給邊界」是同病在資安領域的展現</td>
      </tr>
      <tr>
          <td><a href="../ease-of-writing-vs-intent-alignment/">#67 寫作便利度跟意圖對齊反相關</a></td>
          <td>含糊敘述是寫作最便利選擇、跟「讓讀者實作正確」反向、本卡是 #67 在 silent failure 維度的展現</td>
      </tr>
      <tr>
          <td><a href="../yes-no-binary-collapse/">#80 Yes/No 二選 collapse</a></td>
          <td>「我學會 X 防護了」是把多維度（threat / context / boundary）collapse 成 1 bit、跟 #80 同骨——資安結論預設保留多維度、不能 collapse</td>
      </tr>
  </tbody>
</table>
<hr>
<h2 id="判讀徵兆">判讀徵兆</h2>
<table>
  <thead>
      <tr>
          <th>徵兆</th>
          <th>該做的事</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>段落出現「能擋」「能防」「最佳實踐」「即可」</td>
          <td>預設高風險、檢查有沒有對應 boundary 補述</td>
      </tr>
      <tr>
          <td>讀者讀完會說「我做了 X 就安全」</td>
          <td>結論無法拆可驗證子句、補 threat / context / boundary / 前提</td>
      </tr>
      <tr>
          <td>Mitigation 寫得乾淨、沒有 contrast</td>
          <td>跟 <a href="../positive-rewrite-preserves-contrast/">#94</a> 同病、補對照論據</td>
      </tr>
      <tr>
          <td>引用標準（OWASP / RFC / NIST）但不寫版本</td>
          <td>假設標準 universal、補版本 + 適用條件</td>
      </tr>
      <tr>
          <td>「業界常用 / 常見做法」當論證</td>
          <td>Appeal to convention、補 mitigation 對位驗證</td>
      </tr>
      <tr>
          <td>章節結束讀者覺得「都涵蓋了」、但你列不出涵蓋邊界</td>
          <td>入口層 false confidence、補 metadata surface（<a href="../metadata-surface-in-writing-review/">#97</a>）</td>
      </tr>
      <tr>
          <td>「之後實作時應該會發現問題」</td>
          <td>是 <a href="../external-trigger-for-high-roi-work/">#72</a> 結構性跳過、補 audit trigger</td>
      </tr>
  </tbody>
</table>
<hr>
<h2 id="適用範圍與邊界">適用範圍與邊界</h2>
<ul>
<li><strong>適用</strong>：資安內容（auth / crypto / 防護 / 標準引用 / mitigation 設計）的 audit；任何「讀者照做後錯誤是不可逆 / 系統層」的高風險領域（concurrency 正確性、distributed consistency claims、financial / medical 計算）</li>
<li><strong>不適用</strong>：純概念說明 / 歷史背景內容（讀者不會直接照做）、研究探討文章（讀者預期自行驗證）</li>
<li><strong>邊界</strong>：「消滅 false sense of security」≠「把所有邊界寫到極致」——是讓讀者讀完能列出邊界、不是讓讀者讀完什麼都不敢做。Audit bar 是 verifiability、不是完備性</li>
<li><strong>過度警覺反例</strong>：對所有句子都打防呆 disclaimer、把資安內容寫成 legal-style 「在 X 條件下、若無 Y 前提、且不考慮 Z 攻擊路徑、可能可以」——讀者讀不到任何 actionable 結論、退化成「什麼都不要做」式 paranoia、跟 silent failure 一樣有害；判別準則：讀者讀完應該能列出<strong>可實作的 mitigation 集合 + 各自 boundary</strong>、不是「不知道該不該做任何事」</li>
</ul>
<p>本卡是後續資安 audit 維度卡片（#101-104）的主軸——每個維度都在回答「false sense of security 在哪裡產生」。</p>
]]></content:encoded></item></channel></rss>