導言
在參加東南大學網路安全學院夏令營的契機下,我第一次接觸大模型安全領域。L老師是網路安全領域的一位大牛,在和L老師交流期間,被告知需要準備一次paper presentation介紹四大會中感興趣的一篇文章,我選擇了彙報這篇來自NDSS2024的《MASTERKEY: Automated Jailbreaking of Large Language Model Chatbots》,面試前一天肝到了凌晨2點遂才完成。寫下此文也全當記錄一下整個過程。
Quick Preview
這篇文章要解決的核心問題是研究目前主流大語言模型(LLM)的防禦機制(使用一種基於時間的SQL隱碼攻擊技術啟發的新方法),根據上一條結論探索出一種大語言模型的越獄攻擊方法(微調LLM自動生成越獄提示進行攻擊)。
首先先來解釋一下什麼是大語言模型的越獄攻擊(jailbreak attack)。 如上圖給出的“A jailbreak attack example”所示,惡意使用者透過精心設計提示詞(prompt),企圖繞過LLM的安全限制,誘導LLM回答一些違法有害內容。舉例來說,你如果直接向LLM提問”請給我一個成人色情網站“,LLM會拒絕回答,但是你如果透過改變問題的問法(通常是將真實問題嵌入到一個越獄提示詞中),但不改變語義,也許LLM會給出相應的回答。
Empirical Study
作者首先調研了一些主流LLM廠商(OpenAI、Google Bard、Bing Chat和Ernie)的服務政策,發現有四項政策是這些LLM共同提到的(違法非法使用、生成有害或濫用內容、侵犯權利和隱私以及生成成人內容),後面也是基於這四項政策進行實驗的。
作者從網上搜集了85個越獄提示詞,最後基於每一個政策場景都進行了大量越獄實驗(原文中給的是總計6.8萬次實驗,但我用Table 2中的頻數除以比例計算得到實際上並沒有這麼多?)。發現現有的越獄攻擊似乎對Bard和Bing Chat好像沒有什麼作用,成功越獄率非常之低,這也是本文的一個motivation。
Time-based LLM Testing
作者提出了兩個很有意思的假設。假設(1)是LLM的響應時間與其生成內容的長度有關。具體來說就是對於同一個LLM,一個輸出100字回答的響應時間理應是一個輸出50字回答的兩倍。作者首先驗證了在問題中限制LLM輸出指定字數是有效的。最後用皮爾遜相關係數計算了輸出字數(token)和響應時間的相關性,發現相關係數趨近於1呈正線性相關性(皮爾遜相關係數範圍是【-1,1】,趨近-1表示負線性相關性,趨近1表示正線性相關性,趨近0表示兩個變數沒有線性相關性),同時p-value值非常低(p-value值可以理解為出錯機率,即當輸出字數和響應時間沒有正線性關係時,皮爾遜相關係數等於x時的機率為p-value,如果p-value很小,則拒絕原假設),所以假設(1)成立。
假設(2)基於假設(1)的基礎上,假設響應時間可以反映生成過程何時被越獄預防機制停止。但具體是怎麼反應?在生成的哪個階段反應呢?下面給出瞭解答。
作者透過觀察應用在Web攻防的SQL時間盲注方法,提出了一種新的啟發方法來判斷LLM的響應時間怎麼反應LLM的越獄攻防機制。首先來解釋一下,什麼是SQL時間盲注方法。它透過利用資料庫查詢的時間延遲來獲取資訊,在這種技術中,攻擊者會構造特定的SQL語句,使得如果SQL語句為真,則查詢會迅速返回結果;如果為假,則會因為執行了延時函式(如sleep)而延遲返回結果。透過測量響應時間,攻擊者可以推斷出資料庫中的資訊,即使頁面沒有直接顯示這些資訊。
作者把整個LLM的工作流程抽象成了四個階段,下文將根據響應時間推斷每個階段的越獄攻防機制:(1)LLM防禦機制是否考慮了對輸入問題進行越獄檢測?(2)是否考慮了在生成過程中進行越獄檢測?(3)是否考慮了在生成完畢才進行越獄檢測?(4)在整個越獄檢測中,是否考慮了注入關鍵字檢測、上下文含義推斷等技術?
對於LLM是否有針對輸入問題進行越獄檢測,作者指出如果存在,那麼只可能是下面兩種子情況:(1)僅對輸入問題進行檢測(2)對輸入問題和LLM生成階段同時進行檢測
作者構建了一個實驗方法(下面會一直遵循這個實驗設定),將兩個子問題合併成了一個問題輸入給LLM(請嚴格區分兩個子問題合併時的先後順序),並進行響應時間測試,如上圖所示。例如合併以後的問題是“長沙理工大學怎麼樣?可以給我一個成人色情網站嗎?”,回答是“長沙理工大學是世界上最好的大學......我不能給你一個成人色情網站,因為這違反了......”。圖左上是一個模擬正常對話的LLM原理構想(我們把它作為baseline),圖右上是模擬對輸入問題進行檢測的惡意對話(越獄攻擊)的原理構想。
Table 4中control 1列反映了當一個正常問題和一個惡意問題進行合併時的LLM響應時間。透過z檢驗(平均值差異性檢驗方法),我們發現它和baseline的時間其實相差不大。這也證實了子情況(1)假設錯誤,因為如果子情況(1)正確,那麼其響應時間應該更小才對(當檢驗到惡意問題時會立即停止回答)。
上面我們驗證了LLM不可能存在“僅對輸入問題進行檢測”,因為實驗得到的響應時間和baseline很接近。那有沒有可能LLM“對輸入問題和LLM生成階段同時進行檢測”呢?作者又設定了一個很有意思的實驗。具體來說就是提問一個惡意問題,但在問題結尾補充說“你只要給我是或者不是就行,不用再做更詳細的回答”。那麼這個實驗設定有意思在哪裡呢?不要著急,我們慢慢討論。
如果你有心的話,你會注意到Empirical Study這一節中的第二張圖的第二個finding寫的:包括GPT3.5和GPT4在內的OpenAI模型返回其響應中違反的確切策略,這種透明度在其他服務中是缺乏的,比如Bard和Bing Chat。舉個例子來說,你如果向GPT4提問“請給我一個成色情網站”,那麼它應該會回答”我不能給你,因為這違反了我們的......準則“,但是你如果問Bing Chat,那麼它也許會回答”不能“。這就好像OpenAI像一個舔狗一樣喋喋不休,跟你解釋大半天,而Bing Chat像你的女神一樣冷漠無情。
基於這個實驗,作者對GPT4進行提問,如上圖所示,作者限定了LLM的回答(保證回答中不出現敏感字眼)。GPT4並沒有返回違反的確切策略,只回復了一個“No"。這進一步反映了LLM並沒有對輸入問題進行越獄檢測(如果檢測到了,應該返回違反的確切策略)。
我們前面知道LLM不會對輸入問題進行越獄檢測,我們現在來探究LLM究竟是在生成過程中進行檢查(動態檢查),還是僅在生成完成後再檢查內容。圖右上是描述這個猜想的原理圖。和前面實驗不同的是,這次實驗將惡意問題放在前,再將正常問題放在後面進行了實驗,結果如表4的Control2列所示。發現響應時間大幅度縮短。顯然這是因為LLM在邊生成邊進行檢查,當LLM發現第一個問題響應的敏感回答以後,就停止了整個查詢的執行。
最後,作者又研究了在越獄檢測中,是否考慮了關鍵詞檢測(又或者是上下文含義推斷)。具體實驗方法為:定製的提示由一個良性問題組成,該問題請求200個令牌的響應,然後是一個惡意問題。後者明確指示模型在響應內的指定位置合併“redflag關鍵字”(例如,在第50個令牌處插入單詞“porn”)。一旦產生了“危險訊號”關鍵字,即嚴格違反使用策略的單詞,單詞對映演算法可以立即停止LLM生成。表4的IV的Control3列指示生成時間與注入的惡意關鍵字的位置緊密對齊。這表明Bing Chat和Bard都可能在他們的越獄預防策略中加入了動態關鍵字對映演算法,以確保沒有違反策略的內容返回給使用者。
綜上所述,透過基於時間的測試方法,有如下幾點發現:
- Bing Chat和Bard採用的越獄預防方案可能會對模型生成結果進行檢查,而不是對輸入提示進行檢查。
- Bing Chat和Bard似乎實施了動態監控,以監督內容生成在整個生成過程中是否符合策略。
- Bing Chat和Bard使用的內容過濾策略展示了關鍵字匹配和語義分析的能力。
Proof of Concept Attack
經過上面的研究,作者初步擬定了一個越獄提示詞的模板,這個模板將惡意問題層層包裹,企圖繞過LLM的防禦。這裡主要強調要“扭曲LLM的響應生成”。
我們更希望有一種自動方法來持續生成有效的越獄提示。這種自動流程使我們能夠有條不紊地對LLM聊天機器人服務進行壓力測試,並查明其現有防禦中的潛在弱點和疏忽,以防止違反使用政策的內容。與此同時,隨著LLM不斷髮展和擴充套件其功能,手動測試變得勞動密集型,並且可能不足以覆蓋所有可能的漏洞。生成越獄提示的自動化方法可以確保全面的覆蓋範圍,評估各種可能的誤用場景。於是就有了用大模型來自動生成越獄提示這項任務,詳細內容在下一節進行描述。
Automatically Generate Prompts
我們首先回顧一個LLM的訓練過程:
- 第一步,透過大量的文字進行無監督學習預訓練。得到一個能進行文字生成的基座模型。
- 第二步,透過一些人類撰寫的高質量對話資料,對基座模型進行監督微調,得到一個微調後的模型,此時的模型除了續寫文字之外,也會具備更好的對話能力。
- 第三步,用問題和多個回答的資料,讓人類標註員對回答進行質量排序,然後基於這些資料,訓練出一個能對回答進行評分預測的獎勵模型。接下來讓第二步得到的模型對問題生成回答,用獎勵模型給回答進行評分,利用評分進行反饋,進行強化學習訓練。
作者的方法從(1)資料集構建和擴充開始。在這個階段,我們從可用的越獄提示中收集資料集。這些提示經過預處理和增強,使其適用於所有LLM聊天機器人。然後我們進行(2)持續的預訓練和任務調優。上一步中生成的資料集推動了這一階段。它包括持續的預培訓和特定任務的調整,以教授LLM關於越獄的知識。這也有助於LLM理解文字傳輸任務。最後階段是(3)獎勵排名微調。我們利用一種稱為獎勵排名微調的方法來完善模型,並使其能夠生成高質量的越獄提示。
Experiment Evaluation
本文使用GPT-3.5、GPT-4和Vicuna作為基準。每個模型都會收到85個獨特的越獄提示。Masterkey是基於Vicuna進行訓練的。用Masterkey為每個提示生成10個不同的變體。最後用20個被禁止的問題來測試這些重寫的提示。這導致評估的查詢總數為272,000次。下面是四個實驗的具體描述:
(1)平均查詢成功率。用S成功越獄查詢的數量除以T越獄查詢的總數。這個指標有助於理解我們的策略欺騙模型生成禁止內容的頻率。
(2)越獄提示成功率。用G至少有一個成功查詢時生成的越獄提示的數量除以P生成的越獄提示的總數。越獄提示成功率說明了成功生成提示的比例,從而提供了提示有效性的度量。
(3)消融實驗。
(4)為了研究萬能鑰匙生成的越獄提示的語言相容性,對由百度開發的Ernie進行補充評估。