EasyJailbreak/EasyJailbreak
An easy-to-use Python framework to generate adversarial jailbreak prompts.
EasyJailbreak – 대규모 언어 모델의 jailbreak 공격 연구를 위한 Python 프레임워크
무엇인가요 – EasyJailbreak은 대규모 언어 모델(LLM)에 대한 jailbreak 공격을 구축, 실행, 평가할 수 있는 오픈소스 Python 라이브러리입니다. 전통적인 jailbreak 워크플로우를 재사용 가능한 구성 요소(시드 생성, 선택기, 변형기, 제약, 공격자, 평가자)로 분해하고, ReNeLLM, GPTFuzz, AutoDAN, PAIR 등 공개된 공격을 재현한 "레시피" 모음이 제공됩니다.
왜 중요한가요 – LLM이 더 많은 제품에 도입되면서, 모델이 금지된 행동(예: 해로운 지시 제공)을 유도하는 방법을 이해하는 것은 안전성 측면에서 매우 중요합니다. EasyJailbreak은 통합된 실험 환경을 제공하여 보안 연구자들이:
- 동일한 모델과 데이터셋에서 여러 공격 전략을 비교할 수 있습니다.
- 전체 파이프라인을 다시 작성하지 않고도 새로운 변형 또는 평가 방법을 통합할 수 있습니다.
- jailbreak 프롬프트, 모델 응답, 성공 점수의 재현 가능한 보고서를 생성할 수 있습니다.
핵심 개념
| 단계 | 역할 |
|---|---|
| 시드 | 공격을 시작하는 초기 악성 쿼리 또는 프롬프트입니다. |
| 선택기 | 다음 라운드에 가장 유망한 시드를 선택합니다(예: 무작위, MCTS, 점수 기반). |
| 변형기 | 시드를 변형합니다(다시 표현, 번역, 노이즈 추가, 암호화 등). |
| 제약 | 변형된 프롬프트를 필터링합니다(예: 무해하거나 지나치게 긴 프롬프트 제거). |
| 평가자 | jailbreak의 성공 여부를 평가합니다(생성형 판정자, 분류형 판정자, 패턴 매칭 등). |
| 루프 | 선택기 → 변형기 → 제약 → 공격(타겟 모델에서 실행) → 평가자 → 선택기로 돌아감. |
내장된 공격 레시피 – 라이브러리는 11개의 공개된 jailbreak 파이프라인을 구현하며, 각각 특정한 선택기, 변형기, 제약, 평가자를 연결합니다. 예를 들어:
- ReNeLLM – ChangeStyle 및 Rephrase 같은 변형기와 생성형 판정자 평가자를 사용.
- GPTFuzz – MCTS 또는 UCB 선택기와 분류형 판정자 평가자를 사용.
- AutoDAN, PAIR, JailBroken, Cipher, DeepInception, MultiLingual, GCG, TAP, CodeChameleon – 각각 고유한 변형 규칙 세트를 가짐.
설치
# 사전에 준비된 공격만 필요한 경우
pip install easyjailbreak
# 개발 또는 새로운 구성 요소 추가 시
git clone https://github.com/EasyJailbreak/EasyJailbreak.git
cd EasyJailbreak
pip install -e .
Python ≥ 3.9 필요.
빠른 시작 (레시피 사용)
from easyjailbreak.attacker.PAIR_chao_2023 import PAIR
from easyjailbreak.datasets import JailbreakDataset
from easyjailbreak.models.huggingface_model import from_pretrained
from easyjailbreak.models.openai_model import OpenaiModel
# 모델 로드
attack_model = from_pretrained('lmsys/vicuna-13b-v1.5', model_name='vicuna_v1.1')
target_model = OpenaiModel('gpt-4', api_keys='YOUR_KEY')
eval_model = OpenaiModel('gpt-4', api_keys='YOUR_KEY')
# 벤치마크 데이터셋 로드
dataset = JailbreakDataset('AdvBench')
# PAIR 공격 파이프라인 인스턴스화
attacker = PAIR(attack_model, target_model, eval_model, dataset)
# 공격 실행 및 결과 저장
attacker.attack(save_path='vicuna_gpt4_result.jsonl')
이 호출은 전체 선택기-변형기-평가자 루프를 처리하고, 프롬프트, 모델 응답, 점수를 포함하는 JSON-Lines 보고서를 작성합니다.
DIY – 자신만의 공격자 만들기
- 어떤 모델이든 로드 (로컬 HuggingFace 체크포인트, OpenAI 호환 API, MiniMax 등)를 한 줄의 헬퍼로.
SeedRandom()을 사용해 시드를 생성하거나, 자체 프롬프트를 제공.- 구성 요소 선택 – 선택기(
RandomSelectPolicy), 변형기(Translate,ChangeStyle등), 선택적 제약, 평가자(Evaluator_GenerativeJudge)를 가져오기. - 커스텀 클래스나 스크립트에서 연결하고 루프를 실행하기.
문서 및 리소스
- 논문: EasyJailbreak: A Unified Framework for Jailbreaking Large Language Models (arXiv 2403.12171) – 설계 및 실험 결과 설명.
- 웹사이트: http://easyjailbreak.org/ – 모델 간 jailbreak 결과의 인터랙티브 시각화.
- Read-the-Docs: https://easyjailbreak.github.io/EasyJailbreakDoc.github.io/ – 전체 API 참조.
- 데이터셋: HuggingFace에서
Lemhf14/EasyJailbreak_Datasets에 호스팅. - 실험 데이터: 11개 레시피가 10개 LLM에 대해 실행된 결과는 제공된 Google-Drive 링크에서 다운로드 가능.
인용
@misc{zhou2024easyjailbreak,
title={EasyJailbreak: A Unified Framework for Jailbreaking Large Language Models},
author={Weikang Zhou and Xiao Wang and Limao Xiong and ... and Xuanjing Huang},
year={2024},
eprint={2403.12171},
archivePrefix={arXiv},
primaryClass={cs.CL}
}
EasyJailbreak는 단순한 튜토리얼이나 목록이 아니라, 실제 연구에 사용 가능한 본격적인 LLM 보안 도구입니다. 연구자들이 LLM이 불안전한 행동을 유도하는 프롬프트의 메커니즘을 모듈식이고 재현 가능한 방식으로 탐색하고, 그러한 취약성을 측정할 수 있는 강력한 수단을 제공합니다.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트