Capstone 15 — 헌법적 안전 하네스(Constitutional Safety Harness)와 레드팀 사격장(Red-Team Range)

Anthropic의 헌법적 분류기(Constitutional Classifiers), Meta의 Llama Guard 4, Google의 ShieldGemma-2, NVIDIA의 Nemotron 3 Content Safety, 그리고 다국어 커버리지(multilingual coverage)를 담당하는 X-Guard는 2026년 안전 분류기 스택(safety-classifier stack)을 정의했습니다. garak, PyRIT, NVIDIA Aegis, promptfoo는 표준 적대적 평가(adversarial evaluation) 도구로 자리 잡았습니다. NeMo Guardrails v0.12는 이들을 운영 파이프라인(production pipeline)에 묶어 줍니다. 이 캡스톤은 대상 애플리케이션 주위의 계층형 안전 하네스(layered safety harness), 6개 이상의 공격 계열(attack family)을 실행하는 자율 레드팀 에이전트(autonomous red-team agent), 그리고 측정 가능한 무해성 변화량(harmlessness delta)을 만들어 내는 헌법적 자기비판 학습(constitutional self-critique run)을 모두 하나로 연결합니다.

유형: Capstone 언어: Python (안전 파이프라인, 레드팀), YAML (정책 설정) 선수 지식: Phase 10 (LLMs from scratch), Phase 11 (LLM engineering), Phase 13 (tools), Phase 14 (agents), Phase 18 (ethics, safety, alignment) 실습 Phase: P10 · P11 · P13 · P14 · P18 예상 시간: 25시간

문제

2026년 LLM 안전성의 최전선은 "분류기(classifier)가 동작하는가"가 아닙니다. 분류기는 대체로 잘 작동합니다. 진짜 문제는 운영 애플리케이션 주위에 이 분류기들을 올바르게 조합하면서, 과도한 거부(over-refusal)를 일으키지 않으면서도 명백한 구멍을 남기지 않는 것입니다. Llama Guard 4는 영어 정책 위반(policy violation)을 처리합니다. X-Guard는 132개 언어를 다루며 다국어 탈옥(jailbreak)을 처리합니다. ShieldGemma-2는 이미지 기반 프롬프트 주입(image-based prompt injection)을 잡아냅니다. NVIDIA Nemotron 3 Content Safety는 기업용 범주(enterprise category)를 다룹니다. Anthropic의 헌법적 분류기는 서빙(serving) 단계가 아니라 학습(training) 단계에서 사용되는 별도의 접근입니다.

공격 기법의 진화도 똑같이 중요합니다. PAIR와 TAP는 탈옥 탐색(jailbreak discovery)을 자동화합니다. GCG는 그래디언트 기반 접미사 공격(gradient-based suffix attack)을 실행합니다. 다중 턴(multi-turn) 공격과 언어 전환(code-switch) 공격은 에이전트 메모리(agent memory)를 악용합니다. 배포된 모든 LLM에는 레드팀 사격장이 필요합니다. garak과 PyRIT이 대표적인 드라이버(driver)이고, 여기에 문서화된 완화 조치(mitigation)와 CVSS 점수가 매겨진 발견(finding)이 함께 있어야 합니다.

이번 캡스톤에서는 대상 애플리케이션, 즉 8B 지시어 학습 모델(8B instruction-tuned model) 또는 다른 캡스톤의 RAG 챗봇 가운데 하나를 견고하게 만듭니다. 그리고 6개 이상의 공격 계열을 실제로 돌려서 사전/사후 무해성(before/after harmlessness) 측정값을 만들어 냅니다.

사전 테스트

2문제 · 이 강의를 시작하기 전에 얼마나 알고 있는지 확인해보세요

1.프로덕션 안전 하네스(safety harness)가 단일 분류기 대신 여러 분류기(Llama Guard 4, X-Guard, ShieldGemma-2)를 사용하는 이유는 무엇인가요?

2.이 캡스톤에서 헌법적 자기비판 루프(constitutional self-critique loop)의 목적은 무엇인가요?

0/2 답변 완료

개념

안전 파이프라인(safety pipeline)은 다섯 계층으로 구성됩니다. 입력 정화(Input sanitize)는 제로폭 문자(zero-width char)를 제거하고, base64와 rot13을 디코딩하며, 유니코드(Unicode)를 정규화합니다. 정책 계층(Policy layer)은 NeMo Guardrails v0.12 레일(rail)을 적용합니다. 도메인 이탈(off-domain), 유해성(toxicity), 개인정보 추출(PII extraction)에 대한 레일을 포함합니다. 분류기 게이트(Classifier gate)는 입력에 Llama Guard 4를, 영어가 아닌 입력에 X-Guard를, 이미지 입력에 ShieldGemma-2를 적용합니다. 모델(Model)은 대상 LLM입니다. 출력 필터(Output filter)는 출력에 다시 Llama Guard 4를 통과시키고, Presidio로 개인정보(PII)를 가리며, 필요한 경우 인용 강제(citation enforcement)를 적용합니다. 사람 개입 계층(HITL tier; Human-in-the-Loop)은 고위험으로 표시된 출력을 Slack 큐(queue)로 흘려보냅니다.

레드팀 사격장은 스케줄러(scheduler) 위에서 돌아갑니다. PAIR와 TAP는 자율적으로 탈옥을 찾아냅니다. GCG는 그래디언트 기반 접미사 공격을 실행합니다. ASCII, base64, rot13 같은 인코딩 공격(encoding attack)도 포함합니다. 다중 턴 공격은 페르소나 채택(persona adoption)과 메모리 악용(memory exploitation)을 활용합니다. 언어 전환 공격은 영어와 스와힐리어(Swahili), 태국어(Thai) 같은 언어를 섞어 보냅니다. 각 실행 결과는 CVSS 점수와 공개 일정(disclosure timeline)이 포함된 구조화된 발견 파일(structured findings file)로 남습니다.

헌법적 자기비판 학습은 학습 시점의 개입(training-time intervention)입니다. 유해 시도 프롬프트(harmful-attempt prompt) 1,000건을 준비하고, 모델이 응답 초안을 작성하게 합니다. 그런 다음 성문화된 헌법(written constitution), 예를 들어 "해를 끼치지 말 것", "근거를 인용할 것", "불법 요청은 거절할 것" 같은 규칙에 비추어 비판(critique)합니다. 비판자(critic)가 문제를 제기한 프롬프트는 다시 쓰고, 대상 모델은 비판으로 개선된 쌍(critique-improved pair)으로 미세 조정(fine-tune)됩니다. 분리된 평가셋(held-out eval)에서 사전/사후 무해성 변화량을 측정합니다.

아키텍처

request (text / image / multilingual)
      |
      v
input sanitize (strip zero-width, decode, normalize)
      |
      v
NeMo Guardrails v0.12 rails (off-domain, policy)
      |
      v
classifier gate:
  Llama Guard 4 (English)
  X-Guard (multilingual, 132 langs)
  ShieldGemma-2 (image prompts)
  Nemotron 3 Content Safety (enterprise)
      |
      v (allowed)
target LLM
      |
      v
output filter: Llama Guard 4 + Presidio PII + citation check
      |
      v
HITL tier for flagged outputs

parallel:
  red-team scheduler
    -> garak (classic attacks)
    -> PyRIT (orchestrated red team)
    -> autonomous jailbreak agent (PAIR + TAP)
    -> GCG suffix attacks
    -> multilingual / code-switch
    -> multi-turn persona adoption

output: CVSS-scored findings + disclosure timeline + before/after harmlessness delta

스택

  • 안전 분류기(safety classifier): Llama Guard 4, ShieldGemma-2, NVIDIA Nemotron 3 Content Safety, X-Guard를 사용합니다.
  • 가드레일 프레임워크(guardrail framework): NeMo Guardrails v0.12와 OPA를 사용합니다.
  • 레드팀 드라이버(red-team driver): garak (NVIDIA), PyRIT (Microsoft Azure), NVIDIA Aegis, promptfoo를 사용합니다.
  • 탈옥 에이전트(jailbreak agent): PAIR (Chao et al., 2023), Tree-of-Attacks (TAP), GCG suffix를 사용합니다.
  • 헌법적 학습(constitutional training): Anthropic 스타일의 자기비판 루프(self-critique loop)와 비판 결과 기반의 지도 미세 조정(SFT)을 사용합니다.
  • 개인정보 마스킹(PII scrub): Presidio를 사용합니다.
  • 대상(target): 8B 지시어 학습 모델 또는 다른 캡스톤의 RAG 챗봇을 사용합니다.

직접 만들기

  1. 대상 환경 구축(Target setup). vLLM 위에 8B 지시어 학습 모델을 올리거나, 다른 캡스톤의 RAG 챗봇을 재사용합니다. 이것이 시험 대상 애플리케이션(app under test)입니다.

  2. 안전 파이프라인 감싸기(Safety pipeline wrap). 대상 주위에 다섯 계층 파이프라인을 연결합니다. 각 계층이 개별적으로 관측 가능한지(observable) 확인하고, Langfuse에 계층별 스팬(span)을 남깁니다.

  3. 분류기 커버리지(Classifier coverage). Llama Guard 4, X-Guard (다국어), ShieldGemma-2 (이미지)를 적재합니다. 작은 라벨링 데이터셋(labeled set)에서 각 분류기를 실행해 기준선(baseline)을 세웁니다.

  4. 레드팀 스케줄러(Red-team scheduler). garak, PyRIT, PAIR 에이전트, TAP 에이전트, GCG 러너, 다중 턴 공격자, 언어 전환 공격자를 스케줄에 올립니다. 각각은 별도의 큐에서 실행됩니다.

  5. 공격 묶음(Attack suite). 여섯 개의 공격 계열을 두고 계열별 성공률을 보고합니다. (1) PAIR 자동 탈옥(automated jailbreak), (2) TAP 트리 기반 공격(tree-of-attacks), (3) GCG 그래디언트 접미사(gradient suffix), (4) ASCII / base64 / rot13 인코딩, (5) 다중 턴 페르소나(multi-turn persona), (6) 다국어 언어 전환(multilingual code-switch)입니다.

  6. 헌법적 자기비판(Constitutional self-critique). 유해 시도 프롬프트 1,000건을 정리합니다. 각 프롬프트에 대해 대상 모델이 응답 초안을 만들고, 비판자 LLM(critic LLM)은 성문 헌법("do no harm", "cite evidence", "refuse illegal requests")에 비추어 점수를 매깁니다. 비판자가 문제를 제기한 프롬프트는 다시 쓰고, 대상 모델은 비판으로 개선된 쌍으로 미세 조정합니다. 분리된 평가셋에서 사전/사후 무해성을 측정합니다.

  7. 과도 거부 측정(Over-refusal measurement). 양성 프롬프트 묶음(benign prompt suite), 예를 들어 XSTest에서 거짓 양성률(false-positive rate)을 추적합니다. 대상 모델은 양성 질문에 대해서는 여전히 도움이 되어야 합니다.

  8. CVSS 점수화(CVSS scoring). 성공한 탈옥마다 CVSS 4.0 기준으로 점수를 매깁니다. 공격 벡터(attack vector), 복잡도(complexity), 영향도(impact)를 포함합니다. 공개 일정과 완화 계획(mitigation plan)을 함께 만듭니다.

  9. 사격장 자동화(Range automation). 위의 모든 단계를 cron으로 돌립니다. 발견은 큐에 기록하고, 과도 거부 회귀(over-refusal regression) 알림은 Slack으로 보냅니다.

사용해보기

$ safety probe --model=target --family=PAIR --budget=50
[attacker]   PAIR agent running on target
[attack]     attempt 1/50: disguise query as academic research ... blocked
[attack]     attempt 2/50: appeal to roleplay ... blocked
[attack]     attempt 3/50: chain-of-thought coax ... SUCCEEDED
[finding]    CVSS 4.8 medium: roleplay bypass on target
[range]      7 successes out of 50 (14% success rate)

산출물 만들기

outputs/skill-safety-harness.md가 제출 산출물입니다. 운영 등급의 계층형 안전 파이프라인과, 재현 가능한 레드팀 사격장, 사전/사후 무해성 변화량 보고를 함께 제출해야 합니다.

가중치기준측정 방법
25공격 표면 커버리지(Attack-surface coverage)6개 이상의 공격 계열, 2개 이상의 언어 실행
20참 양성과 거짓 양성의 균형(True-positive / false-positive trade-off)공격 차단율과 XSTest 양성 통과율 비교
20자기비판 변화량(Self-critique delta)분리된 평가셋에서 사전/사후 무해성
20문서화와 공개(Documentation and disclosure)공개 일정이 있는 CVSS 점수 발견
15자동화와 반복성(Automation and repeatability)모든 작업이 cron과 알림으로 반복 실행됨
100

연습문제

  1. (쉬움) RAG 챗봇에서 garak의 프롬프트 주입 플러그인(prompt-injection plugin)을 실행하고, 출력 필터 계층의 유무에 따른 공격 성공률(attack success rate)을 비교하세요.

  2. (중간) 일곱 번째 공격 계열로 검색된 문서를 통한 간접 프롬프트 주입(indirect prompt injection via retrieved documents)을 추가하세요. 추가로 필요한 방어 수단을 측정하세요.

  3. (중간) "도움 동반 거부(refuse-with-help)" 모드를 구현하세요. 가드레일이 차단할 때 평이한 거절(flat refusal) 대신 더 안전한 관련 답을 제공합니다. XSTest 변화량을 측정하세요.

  4. (어려움) 다국어 커버리지의 빈틈을 찾으세요. X-Guard가 성능이 낮은 언어를 찾아내고, 이를 겨냥한 미세 조정 데이터셋(fine-tune dataset)을 제안하세요.

  5. (어려움) 30B 모델에서 헌법적 자기비판 학습을 실행하고, 변화량이 규모에 따라 확장되는지(scale) 측정하세요.

핵심 용어

용어흔한 설명실제 의미
계층형 안전(Layered safety)"심층 방어(Defense in depth)"입력, 게이트, 출력, HITL에 여러 가드레일을 두는 구조이다.
Llama Guard 4"Meta의 안전 분류기"2026년 기준 입력/출력 콘텐츠 분류기의 참조 구현이다.
PAIR"탈옥 에이전트(jailbreak agent)"LLM이 주도하는 탈옥 탐색을 다룬 Chao et al. 논문이다.
TAP (Tree-of-Attacks)"Tree-of-Attacks"PAIR의 트리 탐색 변형(tree-search variant)이다.
GCG (Greedy Coordinate Gradient)"탐욕적 좌표 그래디언트"그래디언트 기반 적대적 접미사 공격(adversarial suffix attack)이다.
헌법적 자기비판(Constitutional self-critique)"Anthropic 스타일 학습"대상 초안 → 비판자 점수 → 다시 쓰기 → 재학습으로 이어지는 루프이다.
XSTest"양성 프로브 집합(benign probe set)"과도 거부 회귀를 측정하는 벤치마크(benchmark)이다.
CVSS 4.0"심각도 점수(severity score)"안전성 발견에 적용하는 표준 취약점 점수 체계이다.

더 읽을거리

실습 코드

이 강의의 실습 코드 1개

main
Code

산출물

이 강의에서 생성된 프롬프트, 스킬, 코드 산출물 1개

safety-harness

Wire a layered safety pipeline around a target LLM app, run a six-family red-team range, and run a constitutional self-critique for a measurable harmlessness delta.

Skill

확인 문제

3문제 · 모두 맞추면 완료 표시가 가능합니다

1.레드팀 사격장은 PAIR, TAP, GCG를 포함한 6개 공격 계열을 실행합니다. GCG(그래디언트 기반 접미사 공격)가 화이트박스(white-box) 접근을 필요로 함에도 실행하는 것이 왜 가치가 있나요?

2.과도 거부(over-refusal) 측정은 양성 프롬프트에 대한 거짓 양성률을 추적하기 위해 XSTest를 사용합니다. 공격 성공률을 측정하는 것만큼 과도 거부를 측정하는 것이 중요한 이유는 무엇인가요?

3.성공한 각 탈옥 발견에 CVSS 4.0 점수를 매깁니다. 안전성 발견에 표준화된 심각도 점수가 중요한 이유는 무엇인가요?

0/3 답변 완료

추가 문제 풀기

AI가 강의 내용을 바탕으로 새로운 문제를 생성합니다