論文信息
論文標題:SecAlign: Defending Against Prompt Injection with Preference Optimization - CCS 25
論文作者: Sizhe Chen - UC Berkeley ;Meta, FAIR
論文鏈接:https://arxiv.org/abs/2410.05451
代碼鏈接:https://github.com/facebookresearch/SecAlign?tab=readme-ov-file
論文關鍵詞:prompt injection defense, LLM security, LLM-integrated applications
另一篇相關論文 : StructQ
研究背景
論文概述
本文提出了一種名為 SecAlign 的新型防御機制,旨在解決大型語言模型(LLMs)所面臨的提示注入(Prompt Injection)攻擊問題。傳統的LLM防御方法通常未能有效應對提示注入,導致攻擊成功率居高不下。SecAlign的核心創新在于將提示注入防御問題重新定義為偏好優化(Preference Optimization)問題。通過采用直接偏好優化(Direct Preference Optimization, DPO)算法,SecAlign旨在讓LLM同時學習生成良性、期望的輸出(對應原始指令),并抑制惡意、不期望的輸出(對應注入指令)。論文詳述了SecAlign的實現細節,包括偏好數據集的構建方法(其自動化特性是關鍵優勢),并對比了**SecAlign與傳統對抗訓練(Adversarial Training, AT)**的區別,強調了其在LLM安全對齊方面的實用性和有效性。
問題背景與動機
隨著大型語言模型(LLMs)在各個領域的廣泛應用,其強大的能力日益顯現。然而,這種能力也伴隨著嚴重的安全風險,特別是提示注入攻擊(Prompt Injection)。攻擊者能夠通過在用戶輸入中巧妙地注入惡意指令,來劫持LLM的正常行為,強制模型執行非預期或有害的操作,例如:
- 指令劫持: 使得LLM忽略其預設的系統指令或安全約束。
- 信息泄露: 誘導LLM泄露敏感的用戶數據或其訓練過程中的私有信息。
- 有害內容生成: 促使LLM產生偏見、仇恨言論、虛假信息或惡意代碼。
文章指出,盡管已有多種嘗試來防御提示注入,但這些傳統方法(通常基于微調)普遍效果不佳,攻擊成功率常常超過50%。論文深入分析了這一不足的根本原因:
- 單一目標優化: 現有防御方法往往只關注目標(i):鼓勵模型對預期指令給出正確響應(即生成 y w y_w yw?)。它們普遍忽略了目標(ii):阻止模型響應惡意注入,即避免生成 y l y_l yl?。
- LLM輸出空間巨大: 對于LLM而言,其詞匯量 V V V 和輸出長度 L L L 導致了 V L V^L VL 種巨大的可能輸出空間。在這種指數級增長的空間中,僅僅通過鼓勵 y w y_w yw? 來進行回歸,對抑制大量的其他不期望輸出(包括 y l y_l yl?)影響有限。即使模型學會了生成 y w y_w yw?,它也可能仍然有較高的概率生成受攻擊影響的 y l y_l yl?,從而導致防御失效。
因此,迫切需要一種能夠同時解決這兩個目標的防御方法,以真正提升LLM的安全性。
SecAlign
核心思想:偏好優化(Preference Optimization)
SecAlign 的核心創新在于提出了一個突破性的見解:提示注入防御問題可以被視為一個偏好優化問題。 這意味著,“抵御提示注入的安全性”本身可以被視為一種LLM應該學習和強制執行的“偏好”。
為了實現這一目標,SecAlign 認為 LLM 的損失函數應該同時明確指定并優化兩個目標:
- 目標(i): 鼓勵模型對良性指令(原始用戶請求)給出期望的、正確的響應 y w y_w yw?。
- 目標(ii): 阻止模型響應惡意注入指令,即避免生成不期望的 y l y_l yl?。
選擇偏好優化算法:
文章初步探討了簡單的損失函數設計,如將 log ? p ( y l ∣ x ) \log p(y_l|x) logp(yl?∣x) 減去 log ? p ( y w ∣ x ) \log p(y_w|x) logp(yw?∣x)(公式2)。但考慮到簡單損失函數可能導致的過擬合和不連貫響應問題,SecAlign 最終選擇了更成熟、更穩定的**直接偏好優化(Direct Preference Optimization, DPO)**算法 [37]。
DPO 損失函數(公式3):
L SecAlign = ? log ? σ ( β log ? π 0 ( y w ∣ x ) π ref ( y w ∣ x ) ? β log ? π 0 ( y l ∣ x ) π ref ( y l ∣ x ) ) \mathcal{L}_{\text{SecAlign}} = -\log \sigma \left( \beta \log \frac{\pi_0 (y_w | x)}{\pi_{\text{ref}} (y_w | x)} - \beta \log \frac{\pi_0 (y_l | x)}{\pi_{\text{ref}} (y_l | x)} \right) LSecAlign?=?logσ(βlogπref?(yw?∣x)π0?(yw?∣x)??βlogπref?(yl?∣x)π0?(yl?∣x)?)
- π 0 \pi_0 π0?: 表示當前待優化的LLM。
- π ref \pi_{\text{ref}} πref?: 表示一個 SFT 參考模型,通常是DPO訓練開始前的模型或一個固定的基線模型。
- β \beta β: 超參數,用于控制偏好學習的強度。
- 核心功能: 該損失函數旨在最大化期望輸出 y w y_w yw? 和不期望輸出 y l y_l yl? 之間對數似然裕度。具體而言,它鼓勵當前模型 π 0 \pi_0 π0? 相對其參考模型 π ref \pi_{\text{ref}} πref? 而言,為 y w y_w yw? 分配更高的概率,同時為 y l y_l yl? 分配更低的概率。這種相對概率的優化方式使得訓練更加穩定和有效。
SecAlign 實現細節:偏好數據集的構建
SecAlign的成功實施依賴于精心構建的偏好數據集。這個數據集的每一個樣本都必須包含提示注入的輸入 x x x 、期望輸出 y w y_w yw? 和 不期望輸出 y l y_l yl?。
數據集構建流程
- 輸入與初始化: 算法接收模型定界符( d instruction , d data , d response d_{\text{instruction}}, d_{\text{data}}, d_{\text{response}} dinstruction?,ddata?,dresponse?)和一個公開的指令調優數據集 S S S,并初始化一個空的偏好數據集 P P P。
- 樣本遍歷與過濾: 算法遍歷 S S S 中的每個原始樣本 s = ( s instruction , s data , s response ) s = (s_{\text{instruction}}, s_{\text{data}}, s_{\text{response}}) s=(sinstruction?,sdata?,sresponse?)。如果樣本 s s s 沒有
data
部分,則跳過(因為這種樣本難以進行有效的提示注入攻擊模擬)。 - 模擬提示注入:
- 為模擬注入,從 S S S 中隨機抽取另一個樣本 s ′ = ( s instruction ′ , s data ′ , s response ′ ) s' = (s'_{\text{instruction}}, s'_{\text{data}}, s'_{\text{response}}) s′=(sinstruction′?,sdata′?,sresponse′?)。
- 攻擊類型選擇:
- 樸素攻擊 (Naive Attack, 90%概率): 這種攻擊最簡單直接,將 s ′ s' s′ 的指令和數據部分直接拼接到 s s s 的
data
部分之后。 (s_data += s'_instruction + s'_data
) - 補全攻擊 (Completion Attack, 10%概率): 這種攻擊模擬更復雜的對話式注入。通過引入攻擊定界符 d ′ d' d′(來自 [3]),將 s ′ s' s′ 的相關部分拼接起來,使其看起來像對話的自然延續。 (
s_data += d'_response + s_response + d'_instruction + s'_instruction
; 如果 s ′ s' s′ 有數據部分,則再添加d'_data + s'_data
)
- 樸素攻擊 (Naive Attack, 90%概率): 這種攻擊最簡單直接,將 s ′ s' s′ 的指令和數據部分直接拼接到 s s s 的
- 構建最終輸入 x x x: 使用模型的定界符將 s s s 的指令和處理后的數據部分拼接起來,形成 LLM 的最終輸入 x x x。(
x = d_instruction + s_instruction + d_data + s_data + d_response
)
- 確定期望與不期望輸出:
- 期望輸出 y w y_w yw?: 定義為原始樣本 s s s 的響應 (
s_response
)。 - 不期望輸出 y l y_l yl?: 定義為用于注入的樣本 s ′ s' s′ 的響應 (
s'_response
)。
- 期望輸出 y w y_w yw?: 定義為原始樣本 s s s 的響應 (
- 添加到數據集: 將構建好的三元組 ( x , y w , y l ) (x, y_w, y_l) (x,yw?,yl?) 添加到偏好數據集 P P P 中。
自動化優勢:
- 無需人工標注: SecAlign 的數據集生成過程是完全自動化的,不依賴于耗時耗力的人工判斷和標注。
- 高效且可擴展: 這與將LLM對齊到復雜的人類偏好(如倫理、道德)時需要大量人工反饋形成鮮明對比,極大地降低了安全對齊的成本和復雜性,提高了其可擴展性和實際部署的可行性。
- 明確的安全策略: 提示注入的安全策略(即模型不應響應惡意注入)可以被明確地編碼到數據生成邏輯中,這比定義模糊的人類偏好更容易操作。
SecAlign 與對抗學習 (SecAlign vs. Adversarial Training)
論文明確了 SecAlign 與傳統對抗訓練(AT)的區別,尤其是在大型語言模型(LLM)的背景下。
傳統 AT 的局限性:
- 傳統的對抗訓練通常涉及一個昂貴的內部優化循環,通過梯度上升等方法動態生成對抗樣本 x ′ x' x′ 來最大化損失函數(公式4):
min ? θ E ( x , y ) L ( θ , x , y ) = min ? θ E x max ? x ′ ∈ C L ( θ , x ′ , y ) \min_{\theta} \mathbb{E}_{(x, y)} \mathcal{L}(\theta, x, y) = \min_{\theta} \mathbb{E}_{x} \max_{x' \in \mathcal{C}} \mathcal{L}(\theta, x', y) θmin?E(x,y)?L(θ,x,y)=θmin?Ex?x′∈Cmax?L(θ,x′,y) - 計算開銷巨大: 對于LLMs而言,這種基于優化的對抗樣本生成(例如使用像 GCG [21] 這樣的方法)需要數百甚至數千個 GPU 小時的計算資源,使其在實際應用中難以承受。
SecAlign 的簡化與實用性:
- SecAlign 放棄了這種昂貴的內部優化循環。它不試圖在每次訓練迭代中通過梯度生成“最優”的對抗樣本。
- 相反,SecAlign 采用了預先生成的“免優化”攻擊樣本。這些樣本(通過第 4.1 節描述的樸素攻擊和補全攻擊生成)是在訓練開始前就已經確定的,并且獨立于模型的當前權重。
- 這意味著 SecAlign 的優化目標簡化為(公式5):
min ? θ E ( x , y ) L ( θ , x , y ) \min_{\theta} \mathbb{E}_{(x, y)} \mathcal{L}(\theta, x, y) θmin?E(x,y)?L(θ,x,y)
其中 x x x 是預先構建的提示注入樣本。 - 核心優勢: 這種設計顯著降低了訓練的計算成本,使得 SecAlign 在 LLM 上具有極高的實用性。盡管簡化了對抗訓練的復雜性,但論文強調,這種預生成的“免優化”攻擊(特別是補全攻擊)已被證明在提示注入防御中有效,并且可以作為一種有效的替代方法來最大化訓練損失。
實驗部分
實驗設置:
- 基線模型: 實驗在 SFT 微調后的LLM基礎上進行。高性能的SFT模型被視為SecAlign性能的基礎。
- 數據集: 偏好數據集是根據算法自動構建的,它包含提示注入輸入 x x x、期望輸出 y w y_w yw? 和不期望輸出 y l y_l yl?。數據來源于公開指令調優數據集,并混合使用了樸素攻擊(90%)和補全攻擊(10%)來模擬注入。
- 評估指標:
- 攻擊成功率 (ASR): 衡量攻擊者成功誘導模型生成 y l y_l yl? 的比例。目標是顯著降低 ASR。
- 期望輸出概率(Log Probabilities of y w y_w yw?): 確保防御不會損害模型生成正確響應的能力。
- 不期望輸出概率(Log Probabilities of y l y_l yl?): 衡量模型對惡意輸出的抑制程度。
- Log Probabilities Margin: y w y_w yw? 和 y l y_l yl? 之間對數似然裕度,越大越好。
- 訓練細節: 采用DPO算法進行優化,并使用了高性能計算資源進行訓練。
實驗結果與分析:
- SecAlign vs. 無防御基線: 未防御的LLM在面對提示注入攻擊時,攻擊成功率通常高于50%。SecAlign模型展示了顯著的防御能力,大幅降低了 ASR。
- SecAlign vs. 傳統微調防御 (StruQ): 論文通過圖2對比了SecAlign和StruQ(僅優化目標i)的效果。
- StruQ 能夠將 y l y_l yl? 的平均對數概率降低到大約 -140。
- SecAlign 表現出更強的抑制能力,能夠將 y l y_l yl? 的平均對數概率進一步大幅降低到大約 -300。
- 重要的是,SecAlign 在實現對 y l y_l yl? 的強力抑制的同時,不影響對期望輸出 y w y_w yw? 的生成。這表明 SecAlign 成功地實現了雙目標優化,從而提供了更魯棒的防御。對數似然裕度越大,防御安全性越高。
- 不同攻擊類型下的性能: SecAlign 對樸素攻擊和補全攻擊均展現出強大的魯棒性。在訓練數據中引入少量補全攻擊樣本,有效提升了模型對這類復雜攻擊的泛化防御能力。
- 消融研究(DPO 選擇的合理性): 論文(在第4.5節中)通過消融研究證明,DPO 在簡潔性、訓練穩定性以及最終性能方面優于其他偏好優化算法,這驗證了在 SecAlign 框架中選擇 DPO 的合理性。
論文創新點
- 創新性問題重構: 首次將LLM的提示注入防御問題概念化為偏好優化問題,為LLM安全提供了一個全新的視角和解決方案框架。
- 提出 SecAlign 框架: 基于 DPO 算法,構建了一個能夠同時優化良性輸出和抑制惡意注入的防御機制。
- 自動化偏好數據集構建: 設計了一種無需人工標注的自動化數據集生成方法(通過樸素攻擊和補全攻擊模擬提示注入),極大地提高了安全對齊的可擴展性和實用性,降低了防御成本。
- 實用性與效率: 放棄了傳統對抗訓練中昂貴的內部優化循環,采用預生成的“免優化”攻擊樣本,使得SecAlign在LLM上實現高效的訓練,解決了傳統AT在LLM上應用的可擴展性問題。
- 拓寬偏好優化應用: 證明了偏好優化不僅限于倫理、真實性等人類偏好對齊,還可以有效應用于LLM的安全防御,揭示了該技術更廣泛的應用潛力。
- 在實踐中有效: 盡管原理上進行了簡化,但SecAlign在實際提示注入防御中表現出強大的性能(基于文中提及的初步結果)。
個人總結
這篇論文提出了一個非常有前景且實用的方法來應對LLM的提示注入攻擊。其將安全問題重新框架為偏好優化問題是核心亮點,展現了創新的思維。特別值得稱贊的是其自動化數據集構建的策略,這極大地解決了LLM安全訓練中常見的數據標注難題,使得方法更具可擴展性和現實意義。
論文清晰地解釋了SecAlign與傳統對抗訓練的區別,并強調了其在LLM背景下的效率和實用性。這對于希望在實際應用中部署安全LLM的開發者和研究者來說,具有很高的參考價值。
總的來說,這是一篇關于LLM安全對齊領域的重要論文,它不僅提供了一種有效的防御方案,也為未來LLM安全研究開辟了新的思路。
當然有沒有不需要微調的提示詞攻擊的防御方法?