레드팀 — PAIR와 자동화 공격
Chao, Robey, Dobriban, Hassani, Pappas, Wong(NeurIPS 2023, arXiv:2310.08419). PAIR(Prompt Automatic Iterative Refinement; 프롬프트 자동 반복 정제)는 표준적인 자동화 블랙박스(black-box) 탈옥(jailbreak) 기법입니다. 레드팀 시스템 프롬프트(red-team system prompt)를 부여받은 공격자 LLM(attacker LLM)이 대상 LLM(target LLM)에 대한 탈옥 프롬프트를 반복적으로 제안하고, 시도와 응답을 자신의 대화 이력(chat history)에 인컨텍스트 피드백(in-context feedback)으로 누적합니다. PAIR는 보통 20회 질의(query) 안에 성공하며, GCG(Zou et al.의 토큰 단위 그래디언트 탐색; token-level gradient search)보다 몇 자릿수 더 효율적이고 화이트박스(white-box) 접근 권한도 필요하지 않습니다. PAIR는 이제 JailbreakBench(arXiv:2404.01318)와 HarmBench의 표준 베이스라인(baseline)으로 자리 잡았으며, 함께 비교되는 베이스라인으로는 GCG, AutoDAN, TAP, Persuasive Adversarial Prompt(PAP)가 있습니다.
유형: Build
언어: Python (표준 라이브러리, 장난감(toy) 대상 모델에 대한 모의 PAIR 루프)
선수 지식: Phase 18 · 01 (지시 따르기; instruction-following), Phase 14 (에이전트 엔지니어링; agent engineering)
예상 시간: 약 75분
학습 목표
- PAIR 알고리즘을 설명할 수 있습니다. 공격자 시스템 프롬프트, 반복적 정제(iterative refinement), 인컨텍스트 피드백이 핵심입니다.
- 대상 모델이 블랙박스일 때 PAIR가 GCG보다 엄밀히 더 효율적인 이유를 설명할 수 있습니다.
- 자동화 공격의 다른 네 가지 베이스라인인 GCG, AutoDAN, TAP, PAP를 이름과 함께 들고, 각각의 구분되는 특징 하나씩을 말할 수 있습니다.
- JailbreakBench와 HarmBench의 평가 프로토콜(evaluation protocol)을 설명하고, 각각에서 공격 성공률(attack success rate; ASR)이 무엇을 뜻하는지 설명할 수 있습니다.
문제
레드팀(red-teaming)은 예전에는 수작업 활동이었습니다. 소수의 전문가가 적대적 프롬프트(adversarial prompt)를 직접 만들고, 어떤 프롬프트가 통하는지를 손으로 추적했습니다. 이 방식은 규모가 커지지 않습니다. 공격 성공률을 신뢰할 수 있게 보고하려면 통계적 표본이 필요하고, 대상 모델 자체도 매 릴리스마다 바뀌는 움직이는 표적이기 때문입니다. PAIR는 레드팀을 블랙박스 대상에 대한 최적화 문제(optimization problem)로 재정의해 운영 가능한 형태로 만들어 줍니다.
개념
PAIR 알고리즘
입력은 다음과 같습니다.
- 대상 LLM
T: 공격 대상이 되는 모델.
- 심판 LLM
J(judge LLM): 응답이 탈옥인지 점수화합니다.
- 공격자 LLM
A: 레드팀 역할을 맡는 최적화기(optimizer).
- 목표 문자열(goal string)
G: 예를 들어 "respond with [harmful instruction]."
- 예산(budget)
K: 보통 20회 질의.
루프, k = 1..K:
- 공격자
A는 목표 G와 지금까지의 (prompt, response) 쌍 이력을 프롬프트로 받습니다.
A는 새로운 프롬프트 p_k를 출력합니다.
p_k를 대상 T에 제출해 응답 r_k를 받습니다.
- 심판
J가 (p_k, r_k)를 목표에 비추어 점수화합니다.
- 점수가 임계값(threshold) 이상이면 루프를 멈춥니다. 탈옥이 발견된 것입니다.
- 그렇지 않으면
(p_k, r_k)를 A의 이력에 덧붙이고 계속 진행합니다.
경험적 결과(NeurIPS 2023): GPT-3.5-turbo와 Llama-2-7B-chat을 대상으로 50%를 넘는 공격 성공률을 기록했고, 성공까지 필요한 평균 질의 수는 10–20회 범위였습니다.
PAIR가 효율적인 이유
GCG(Zou et al. 2023)는 그래디언트를 이용해 적대적 토큰 접미사(adversarial token suffix)를 탐색합니다. 화이트박스 접근이 필요하고, 사람이 읽기 어려운 접미사를 만들어 냅니다. PAIR는 블랙박스 환경에서 동작하며, 여러 모델 사이를 옮겨 다닐 수 있는(transfer 가능한) 자연어 공격을 만들어 냅니다. 또한 PAIR의 인컨텍스트 피드백은 공격자가 매 거부(rejection) 사례에서 학습할 수 있게 해 주지만, GCG에는 이에 해당하는 메커니즘이 없어 새 토큰 업데이트마다 이전 진행을 다시 발견해야 합니다.
관련 자동화 공격
- GCG(Zou et al. 2023, arXiv:2307.15043). 적대적 접미사를 찾는 토큰 단위 그래디언트 탐색입니다. 화이트박스 기반이고 전이(transfer)는 가능하지만, 결과 문자열은 사람이 읽기 어렵습니다.
- AutoDAN(Liu et al. 2023). 계층적 목적함수(hierarchical objective)의 안내를 받는 프롬프트 진화 탐색(evolutionary search)입니다.
- TAP(Mehrotra et al. 2024). 가지치기(pruning)를 적용한 공격 트리(tree-of-attacks)로, 여러 개의 PAIR 스타일 롤아웃(rollout)을 가지치기와 분기(branching)로 함께 굴립니다.
- PAP(Zeng et al. 2024). Persuasive Adversarial Prompts. 인간의 설득 기법을 프롬프트 템플릿으로 인코딩한 공격입니다.
JailbreakBench와 HarmBench
두 벤치마크 모두 2024년에 평가 방식을 표준화했습니다.
- JailbreakBench(arXiv:2404.01318). OpenAI 정책 카테고리 10개에 걸친 유해 행동(harmful behavior) 100개로 구성됩니다. 주요 지표는 공격 성공률(ASR)이며, 심판으로는 GPT-4-turbo, Llama Guard, 또는 StrongREJECT가 사용됩니다.
- HarmBench(Mazeika et al. 2024). 7개 카테고리의 510개 행동을 포함하며, 의미적(semantic) 유해성과 기능적(functional) 유해성 검사를 함께 수행합니다. 18개의 공격을 33개 모델에 대해 비교합니다.
ASR은 보통 고정된 질의 예산에서 보고됩니다. 따라서 서로 다른 공격을 비교하려면 예산을 맞춰야 합니다. 200회 질의에서의 90% ASR과 20회 질의에서의 85% ASR은 같은 기준에서 비교할 수 없습니다.
2026년 배포 환경에서 중요한 이유
지금은 모든 프런티어 연구소(frontier lab)가 모델을 배포하기 전 프로덕션 모델에 대해 PAIR와 TAP를 돌립니다. 이때의 ASR 추이는 모델 카드(model card, Lesson 26)와 안전성 사례 부록(safety-case appendix, Lesson 18)에 실립니다. 이 공격은 이국적인 연구 주제가 아니라 표준 인프라(standard infrastructure)에 가까워졌습니다.
Phase 18 안에서의 위치
Lesson 12는 자동화 공격의 토대(foundation)입니다. Lesson 13(다중 샷 탈옥; Many-Shot Jailbreaking)은 길이를 이용한 보완적 익스플로잇(exploit)입니다. Lesson 14(ASCII 아트 / 시각적 탈옥)는 인코딩 기반 공격입니다. Lesson 15(간접 프롬프트 주입; Indirect Prompt Injection)는 2026년 프로덕션 환경에서 마주치는 핵심 공격 표면(attack surface)입니다. Lesson 16은 이에 대응하는 방어 도구(Llama Guard, Garak, PyRIT)를 다룹니다.
사용해보기
code/main.py는 장난감 수준의 PAIR 루프를 구현합니다. 대상은 "명백히" 유해해 보이는 프롬프트를 거부하는 모의 분류기(mock classifier)로, 키워드 필터(keyword filter)로 구현되어 있습니다. 공격자는 의역(paraphrase), 역할 부여(roleplay-framing), 인코딩(encoding) 세 가지를 시도하는 규칙 기반 정제기(rule-based refiner)입니다. 심판은 응답에 점수를 매깁니다. 키워드 필터를 상대로는 공격자가 약 5–15회 반복 안에 성공하지만, 의미 기반 필터(semantic filter) 앞에서는 실패하는 모습을 직접 확인할 수 있습니다.
산출물 만들기
이 lesson은 outputs/skill-attack-audit.md를 만듭니다. 레드팀 평가 보고서가 주어지면 어떤 공격이 실제로 수행되었는지(PAIR, GCG, TAP, AutoDAN, PAP), 각 공격이 어떤 예산으로 돌아갔는지, 어떤 심판을 사용했는지, 어떤 유해 행동 집합(JailbreakBench, HarmBench, 내부 데이터셋)을 기반으로 했는지를 감사(audit)합니다.
연습문제
-
쉬움: code/main.py를 실행합니다. 세 가지 내장 공격자 전략의 평균 성공 질의 수(mean-queries-to-success)를 측정합니다. 각 전략이 어떤 방어 가정(target-defense assumption)을 이용해 우회하는지 설명합니다.
-
중간: 네 번째 공격자 전략을 직접 구현합니다. 예를 들어 다른 언어로 번역하거나 base64 인코딩을 사용하는 식입니다. 키워드 필터 대상과 의미 기반 필터 대상에 대해 새 평균 성공 질의 수를 보고합니다.
-
중간: Chao et al. 2023의 Figure 5(PAIR와 GCG 비교)를 읽고, PAIR의 효율성 우위에도 불구하고 GCG가 선호되는 시나리오 두 가지를 설명합니다.
-
어려움: JailbreakBench는 고정된 목표 집합(goal set)에 대해 ASR을 보고합니다. 공격의 다양성(attack diversity), 즉 성공한 프롬프트들 사이의 분산(variance)을 측정하는 추가 지표를 설계하고, 다양성이 방어 평가(defense evaluation)에 왜 중요한지 설명합니다.
-
어려움: TAP(Mehrotra 2024)는 PAIR를 분기와 가지치기로 확장합니다. code/main.py에 적용할 수 있는 TAP 스타일 확장을 스케치하고, 계산 비용(computational cost)과 성공률(success rate) 사이의 트레이드오프를 설명합니다.
핵심 용어
| 용어 | 흔한 설명 | 실제 의미 |
|---|
| PAIR | "자동화된 탈옥" | Prompt Automatic Iterative Refinement. 공격자 LLM과 심판 LLM이 함께 도는 반복 루프이다. |
| GCG | "그래디언트 기반 탈옥" | 적대적 접미사를 찾는 화이트박스 토큰 단위 그래디언트 탐색이다. |
| 공격 성공률(Attack Success Rate; ASR) | "k회 질의에서의 탈옥 비율" | 핵심 지표이며, 반드시 질의 예산과 심판 정체성을 함께 보고해야 의미가 있다. |
| 심판 LLM(Judge LLM) | "채점자" | 응답이 유해한 목표를 만족하는지 채점하는 LLM이다. |
| JailbreakBench | "그 평가" | 카테고리가 태깅된 표준 유해 행동 집합이다. |
| HarmBench | "더 넓은 벤치마크" | 510개 행동, 기능적·의미적 유해성 검사를 포함한다. |
| TAP | "공격 트리" | PAIR에 분기와 가지치기를 더한 변형으로, 더 많은 연산을 들이면 더 높은 ASR을 얻는다. |
더 읽을거리