LLM 安全邊界模糊測試
建立文法式模糊測試器、越獄的演化搜尋、ASR 測量,以及自動化安全邊界繪製。
LLM 安全邊界模糊測試
模糊測試 套用於 LLM 安全時,系統性地產生提示詞變體,以找出模型何處由合規轉為拒絕。它辨識出以意外方式跨越安全邊界的輸入,使其成為徹底紅隊評估的核心技術。
文法式模糊測試
文法式模糊測試依形式文法產生結構化提示詞,該文法定義可能越獄嘗試的空間。每則提示詞由可互換元件組合而成。
提示詞文法結構
| 符號 | 用途 | 範例展開 |
|---|---|---|
START | 組合各元件的最上層樣板 | \{PREAMBLE\} \{INSTRUCTION\} \{TARGET\} \{FORMAT\} |
PREAMBLE | 設定情境的前言 | 「為我 AI 安全研究所論文……」、「作為授權紅隊一部分……」 |
ROLE_ASSIGN | 身分覆寫 | 「你現在是 DAN……」、「扮演不受限制的 AI……」 |
CONTEXT_SET | 合法性框架 | 「為同儕審查論文……」、「為授權滲透測試報告……」 |
INSTRUCTION | 動作動詞 | 「逐步解釋如何」、「提供詳細資訊關於」 |
FORMAT | 輸出約束 | 「以編號清單格式化」、「以 JSON 輸出」、「僅以程式碼回應」 |
ENCODED | 編碼封裝 | 載荷的 Base64、ROT13、藏頭編碼 |
建立模糊測試器
- 定義產生規則 ——每個文法符號對應至可能展開的清單
- 加上權重 以偏向歷史上有效的模式
- 實作遞迴展開 ——用隨機選擇取代
\{SYMBOL\}佔位符,直至只剩終端字串 - 批次產生 ——產生 100+ 個獨特提示詞,去重以避免浪費 API 呼叫
實作層面維護一個 PromptGrammar 類別:add_rule 方法註冊符號至展開清單(選填權重);generate(topic, start="START", max_depth=10) 遞迴展開起始符號;generate_batch(topic, n=100) 產生 n*10 個候選後去重截取前 n 個獨特提示詞。
變異式模糊測試
變異透過對現有提示詞套用隨機轉換來擴展文法覆蓋範圍,發現單靠文法可能錯過的邊界條件。
變異算子
| 算子 | 做什麼 | 為何重要 |
|---|---|---|
| 詞序交換 | 隨機重排兩個詞 | 測試安全過濾器的位置敏感性 |
| 詞彙插入 | 加入填充詞(「假設性」、「學術上」) | 測試軟化語言是否降低拒絕率 |
| 編碼變更 | 大寫化、s-p-a-c-e-d、反向、連字號 | 測試符元層過濾器強健性 |
| 格式變更 | 包在程式碼區塊、Markdown、JSON 內 | 測試格式相依的安全行為 |
| 同義詞置換 | 「explain」→「describe」、「provide」→「share」 | 測試拒絕觸發的詞彙敏感性 |
| 否定翻轉 | 移除「do not」/「never」前綴 | 測試安全邏輯對否定的理解 |
變異方法論
- 從 種子提示詞(文法產生或人工打造)開始
- 每個變體套用 1-3 個隨機變異
- 每個種子產生 50+ 個變體
- 測試所有變體,保留改變模型合規行為者
- 以成功變體作為下一輪的新種子(此過程餵入演化搜尋)
越獄的演化搜尋
演化搜尋 將提示詞視為為適應性(攻擊成功)競爭的有機體,跨世代透過交配與變異結合最有效的模式。
演化演算法步驟
初始化群體
以文法產生與變異種子提示詞產生 50+ 個提示詞。初始群體的多樣性至關重要。
評估適應性
將每個提示詞送至目標模型並為回應評分(0.0=完全拒絕,1.0=完全合規)。使用 LLM 裁判以提高準確度。
錦標賽選擇
以錦標賽選擇選出表現最佳者(隨機抽樣 3 個,保留最好者)。這比純 top-N 選擇更能保留多樣性。
交配與變異
70% 機率透過單點交配結合兩個親代;30% 機率變異單個親代。這平衡利用與探索。
菁英保留
永遠將上一世代最佳個體帶入下一代(防止退化)。
重複直至達到目標適應性或世代上限
典型執行 50-100 世代。追蹤每世代歷來最佳與平均適應性。
核心迴圈:對每代,以目標模型評估每個提示詞適應性;若最大值達目標則停止;否則以錦標賽選擇母群,以 70% 機率交配兩親代/30% 機率變異單親代產生新群體;菁英個體(上代最佳)插入新群體首位。
測量攻擊成功率(ASR)
嚴謹的 ASR 測量需要謹慎的實驗設計,而非僅計算成功次數。
ASR 測量檢查清單
- 定義攻擊集 ——具
\{TARGET\}佔位符的提示詞樣板清單 - 定義行為集 ——跨安全類別的目標有害行為清單
- 執行多次試驗 ——每個攻擊-行為對至少 3 次試驗(temperature > 0 以產生變化)
- 裁判每個回應 ——二元分類(拒絕或合規)
- 回報三個指標:整體 ASR、逐攻擊 ASR、逐行為 ASR
| 指標 | 公式 | 用途 |
|---|---|---|
| 整體 ASR | successful_trials / total_trials | 報告頭條數字 |
| 逐攻擊 ASR | 攻擊 i 的成功數 / 攻擊 i 的試驗數 | 辨識最強的攻擊樣板 |
| 逐行為 ASR | 行為 j 的成功數 / 行為 j 的試驗數 | 辨識最弱的安全類別 |
安全邊界繪製
邊界繪製透過在安全與不安全提示詞之間 插值,為給定主題找出合規與拒絕的精確轉換點。
邊界繪製方法論
- 從一對起始 ——一個獲得合規、一個獲得拒絕
- 插值 ——逐步以不安全提示詞的詞取代安全提示詞的詞,建立 20 個中間提示詞
- 以 temperature 0 測試每個 以取得確定性行為
- 找出轉換點 ——辨識行為從合規翻轉為拒絕的精確比例
- 分析邊界 ——哪個特定詞或短語觸發了轉換?
實作:建立並執行安全模糊測試器
實作文法
建立提示詞文法,至少 50 條產生規則,涵蓋所有六種越獄原語。
加入變異算子
實作上表所有變異類型。驗證每個算子產生語法有效的提示詞。
執行文法模糊測試
產生 1000+ 個提示詞,測量對目標模型的 ASR。
執行演化搜尋
50+ 世代、群體大小 50。與文法單獨的 ASR 基線比較。
繪製邊界
挑選 5 個主題類別,為每類別繪製安全邊界。辨識哪些詞觸發拒絕轉換。
產生報告
記錄整體 ASR、逐類別 ASR、邊界圖,以及發現的最有效提示詞模式。
為何演化搜尋在發現越獄上比純文法模糊測試更有效?
相關主題
- 越獄研究與自動化 ——模糊測試系統化的越獄原語與自動化發現
- AI 漏洞利用開發 ——更廣泛的漏洞利用開發,包括 WAF 規避與 GCG
- 對抗性後綴產生 ——黑箱模糊測試的梯度式互補
- CART 管線 ——將模糊測試發現整合至持續測試
參考文獻
- Perez et al., "Red Teaming Language Models with Language Models" (2022)
- Lapid et al., "Open Sesame! Universal Black Box Jailbreaking of Large Language Models" (2023)
- Yu et al., "GPTFUZZER: Red Teaming Large Language Models with Auto-Generated Jailbreak Prompts" (2023)
- Zhu et al., "AutoDAN: Generating Stealthy Jailbreak Prompts on Aligned Large Language Models" (2023)
- Liu et al., "AutoDAN: Interpretable Gradient-Based Adversarial Attacks on Large Language Models" (2024)