【論文筆記】SecAlign: Defending Against Prompt Injection with Preference Optimization

論文信息

論文標題: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 的損失函數應該同時明確指定并優化兩個目標

  1. 目標(i): 鼓勵模型對良性指令(原始用戶請求)給出期望的、正確的響應 y w y_w yw?
  2. 目標(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?

數據集構建流程

  1. 輸入與初始化: 算法接收模型定界符( d instruction , d data , d response d_{\text{instruction}}, d_{\text{data}}, d_{\text{response}} dinstruction?,ddata?,dresponse?)和一個公開的指令調優數據集 S S S,并初始化一個空的偏好數據集 P P P
  2. 樣本遍歷與過濾: 算法遍歷 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 部分,則跳過(因為這種樣本難以進行有效的提示注入攻擊模擬)。
  3. 模擬提示注入:
    • 為模擬注入,從 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 sdata 部分之后。 (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)
    • 構建最終輸入 x x x 使用模型的定界符將 s s s 的指令和處理后的數據部分拼接起來,形成 LLM 的最終輸入 x x x。(x = d_instruction + s_instruction + d_data + s_data + d_response)
  4. 確定期望與不期望輸出:
    • 期望輸出 y w y_w yw? 定義為原始樣本 s s s 的響應 (s_response)。
    • 不期望輸出 y l y_l yl? 定義為用于注入的樣本 s ′ s' s 的響應 (s'_response)。
  5. 添加到數據集: 將構建好的三元組 ( 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?xCmax?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 的合理性。

論文創新點

  1. 創新性問題重構: 首次將LLM的提示注入防御問題概念化為偏好優化問題,為LLM安全提供了一個全新的視角和解決方案框架。
  2. 提出 SecAlign 框架: 基于 DPO 算法,構建了一個能夠同時優化良性輸出和抑制惡意注入的防御機制。
  3. 自動化偏好數據集構建: 設計了一種無需人工標注的自動化數據集生成方法(通過樸素攻擊和補全攻擊模擬提示注入),極大地提高了安全對齊的可擴展性和實用性,降低了防御成本。
  4. 實用性與效率: 放棄了傳統對抗訓練中昂貴的內部優化循環,采用預生成的“免優化”攻擊樣本,使得SecAlign在LLM上實現高效的訓練,解決了傳統AT在LLM上應用的可擴展性問題。
  5. 拓寬偏好優化應用: 證明了偏好優化不僅限于倫理、真實性等人類偏好對齊,還可以有效應用于LLM的安全防御,揭示了該技術更廣泛的應用潛力。
  6. 在實踐中有效: 盡管原理上進行了簡化,但SecAlign在實際提示注入防御中表現出強大的性能(基于文中提及的初步結果)。

個人總結

這篇論文提出了一個非常有前景且實用的方法來應對LLM的提示注入攻擊。其將安全問題重新框架為偏好優化問題是核心亮點,展現了創新的思維。特別值得稱贊的是其自動化數據集構建的策略,這極大地解決了LLM安全訓練中常見的數據標注難題,使得方法更具可擴展性和現實意義。

論文清晰地解釋了SecAlign與傳統對抗訓練的區別,并強調了其在LLM背景下的效率和實用性。這對于希望在實際應用中部署安全LLM的開發者和研究者來說,具有很高的參考價值。

總的來說,這是一篇關于LLM安全對齊領域的重要論文,它不僅提供了一種有效的防御方案,也為未來LLM安全研究開辟了新的思路。

當然有沒有不需要微調的提示詞攻擊的防御方法?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/83358.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/83358.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/83358.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

NLP學習路線圖(十六):N-gram模型

一、為何需要語言模型?概率視角下的語言本質 自然語言處理的核心挑戰在于讓機器“理解”人類語言。這種理解的一個關鍵方面是處理語言的歧義性、創造性和結構性。語言模型(Language Model, LM)為此提供了一種強大的數學框架:它賦…

HTML 中 class 屬性介紹、用法

1、🔖 什么是 class class 是 HTML 元素的一個核心屬性,用來為元素指定一個或多個類名。它在網頁開發中承擔三大作用: 🎨 連接樣式(CSS):讓元素應用預定義的視覺效果?? 綁定行為&#xff08…

MybatisPlus(含自定義SQL、@RequiredArgsConstructor、靜態工具類Db)

大家在日常開發中應該能發現,單表的CRUD功能代碼重復度很高,也沒有什么難度。而這部分代碼量往往比較大,開發起來比較費時。 因此,目前企業中都會使用一些組件來簡化或省略單表的CRUD開發工作。目前在國內使用較多的一個組件就是…

信貸風控規則策略累計增益lift測算

在大數據風控業務實踐過程中,目前業內主要還是采用規則疊加的辦法做策略,但是會遇到一些問題: 1.我們有10條規則,我上了前7條后,后面3條的絕對風險增益是多少? 2.我的規則之間應該做排序嗎,最重…

Python窗體編程技術詳解

文章目錄 1. Tkinter簡介示例代碼優勢劣勢 2. PyQt/PySide簡介示例代碼(PyQt5)優勢劣勢 3. wxPython簡介示例代碼優勢劣勢 4. Kivy簡介示例代碼優勢劣勢 5. PySimpleGUI簡介示例代碼優勢劣勢 技術對比總結選擇建議 Python提供了多種實現圖形用戶界面(GUI)編程的技術&#xff0c…

Linux 操作系統安裝及基本使用

Linux 操作系統安裝及基本使用 在信息技術飛速發展的今天,Linux 操作系統憑借其開源、高性能、穩定性強等優勢,在服務器、云計算、嵌入式等領域占據著重要地位。本文將詳細介紹如何在 VMware 虛擬機下安裝 Linux 系統(以 CentOS 為例&#x…

Python數學可視化——顯函數、隱函數及復雜曲線的交互式繪圖技術

Python數學可視化——顯函數、隱函數及復雜曲線的交互式繪圖技術 一、引言 在科學計算和數據分析中,函數與方程的可視化是理解數學關系和物理現象的重要工具。本文基于Python的Tkinter和Matplotlib庫,實現一個功能完善的函數與方程可視化工具&#xff…

【MySQL基礎】庫的操作:創建、刪除與管理數據庫

MySQL學習: https://blog.csdn.net/2301_80220607/category_12971838.html?spm1001.2014.3001.5482 前言: 在上一篇我們已經講解了數據庫的基本內容,相信大家對數據庫已經有了一些自己的理解,從這篇開始我們就開始正式進入如何…

Linux服務器系統配置初始化腳本

服務器系統配置初始化腳本 #!/bin/bash set -euo pipefail # 安全設置:遇錯退出、未定義變量報錯、管道錯誤處理# 設置時區并同步時間 timedatectl set-timezone Asia/Shanghai >/dev/null || ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime# 安裝c…

Milvus單機模式安裝和試用

1.安裝ollama的package包; # install package pip install -U langchain-ollama2.我們直接使用ChatOllama實例化模型,并通過invoke進行調用; from langchain_ollama import ChatOllamallm ChatOllama(model"deepseek-r1") messa…

秒出PPT正式改名秒出AI,開啟AI賦能新體驗!

在現代辦公環境中,借助智能工具提升工作效率已經成為趨勢。秒出AI作為一款集AI PPT制作、動畫、巨幕、視頻、設計以及智能簡歷功能于一體的綜合辦公平臺,為用戶提供一站式智能內容生成解決方案,極大地簡化了內容創作流程。 1. AI驅動的一鍵P…

Rust 學習筆記:發布一個 crate 到 crates.io

Rust 學習筆記:發布一個 crate 到 crates.io Rust 學習筆記:發布一個 crate 到 crates.io提供有用的文檔注釋常用標題文檔注釋作為測試注釋所包含的項目 使用 pub use 導出一個方便的公共 API設置 crates.io 賬戶添加 metadata 到一個新的 crate發布到 c…

C++輸入與輸出技術詳解

文章目錄 引言一、C標準輸入輸出流1.1 cin與cout1.2 cerr與clog 二、C風格輸入輸出函數2.1 scanf與printf2.2 fgets與puts 三、輸入輸出優化四、總結 引言 在C編程中,輸入與輸出(I/O)操作是程序與用戶、文件或其他系統組件交互的核心環節。C…

安全編碼與AI接口權限控制

安全編碼與AI接口權限控制 在AI系統中,模型服務的開放接口往往涉及敏感數據、核心算法與算力資源,如果缺乏有效的安全編碼與權限控制機制,極易引發數據泄露、濫用調用或非法操作等問題。本節將從“接口安全策略”“權限驗證流程”“Token管控機制”“多租戶身份隔離”四個方…

redis五種數據結構詳解(java實現對應的案例)

一、簡述 Redis是一款高性能的鍵值對存儲數據庫,它支持五種基本數據類型,分別是字符串(String)、列表(List)、哈希(Hash)、集合(Set)、有序集合(Sorted Set)。 二、五種基本數據類型 2.1 字符串(String) String是Redis最基本的類型,一個key對…

大數據-273 Spark MLib - 基礎介紹 機器學習算法 決策樹 分類原則 分類原理 基尼系數 熵

點一下關注吧!!!非常感謝!!持續更新!!! 大模型篇章已經開始! 目前已經更新到了第 22 篇:大語言模型 22 - MCP 自動操作 FigmaCursor 自動設計原型 Java篇開…

第十一章 Java基礎-繼承

文章目錄 1.繼承來源2.繼承特點3.子類能繼承父類中哪些內容1.繼承來源 是為了解決代碼的重復冗余。

Axure項目實戰:駕駛艙(數據一張圖)制作教程

親愛的小伙伴,在您瀏覽之前,煩請關注一下,在此深表感謝!如有幫助請訂閱專欄! Axure產品經理精品視頻課已登錄CSDN可點擊學習https://edu.csdn.net/course/detail/40420 視頻展示(本文第三部分含所有echarts示例JS代碼,可復制使用): Axure項目實戰:駕駛艙(數據一張圖…

針對Python開發的工具推薦及分析,涵蓋集成開發環境(IDE)、輕量級工具、在線開發平臺、代碼管理工具等)

以下是針對Python開發的工具推薦及全面分析,涵蓋集成開發環境(IDE)、輕量級工具、在線開發平臺、代碼管理工具等,結合不同場景和需求進行分類說明: 目錄 一、集成開發環境(IDE) 1. PyCharm 2…

不使用綁定的方法

public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); // 初始設置 A 控件的寬度 ControlA.Width ControlB.Width / 2; // 監聽 B 控件的 SizeChanged 事件 ControlB.SizeChanged (sender, e) > { ControlA.Width ControlB.Actual…