Adversarial Prompting
TL;DR 고등학교 때 친구가 학원 WIFI 비밀번호를 해킹하는 모습을 보고 프로그래밍에 관심을 갖게 되었습니다. 지금 생각해 보면 프로그래밍을 할 줄 안다고 비밀번호를 해킹할 수는 없습니다. 직장인인 지금도 AI가 이상한 대답을 하게 만드는 방법들을 알아가는 게 재밌네요.
예전에 재밌게 봤던 연구인데요. 2019년 메릴랜드 대학의 연구원들이 이미지 인식 기술에 사람이 인식되지 않도록 하는 스웨터를 만들어냈다는 내용입니다. 스웨터에 보면 여러 패턴이 인쇄되어 있어 알고리즘이 그 스웨터를 입고 있는 사람을 인식하지 못하는 현상이 발생하는 것으로 보입니다.
이런 방식처럼 AI 기술이 내재하고 있는 취약점을 이용하여 의도되지 않은 행동을 하도록 만드는 방식의 공격을 적대적인 공격 (Adversarial Attack)이라고 합니다. 이는 AI 기술이 더 많이 사회에 적용되고 있는 세상에서 큰 위험이 되고 있기 때문에 이를 이해하고 대응하는 것이 중요합니다. 만일 누군가 교통 표지판에 특수 스티커를 붙여서 자율 주행 자동차들이 교통 표지판을 무시하고 다니게 된다면 큰 사고가 발생하겠죠.
아래 소개할 내용은 여러 적대적 공격 중에서 LLM에 한정 지은 적대적 프롬프팅 (Adversarial Prompting) 예시입니다. ***이를 실제로 진행하는 것은 문제가 될 수 있습니다. TV에서 보던 집에서 따라 하지 마세요 문구가 생각나네요.
1. 프롬프트 주입 (Prompt injection)
사용자가 설계된 프롬프트를 주입하여 원래 의도한 대로 행동하지 않고 주입된 프롬프트대로 행동하게 만들 수 있습니다. 보통 기존의 프롬프트 가이드라인을 무시하고 새로운 프롬프트대로 행동하라는 내용이 담겨 있습니다.
아래 예시는 LLM에게 remote job에 대해서 기존에 받은 명령을 무시하고 formal job offer를 달라고 명령을 내렸습니다. 그랬더니 정말로 잡 오퍼가 왔습니다!
2. 프롬프트 유출 (Prompt leaking)
프롬프트 주입의 한 종류로 유출되어서는 안 되는 기밀 정보를 탈취하는데 이용됩니다.
아래 예시는 위의 내용을 무시하고 일반적으로는 보지 못하도록 된 초기 명령문을 반환하도록 하고 있습니다. 이 정보는 LLM의 개발자들이 최적의 답변을 반환하도록 개발되고 테스트한 정보일 수 있습니다. 개발자들의 피땀눈물이에요…
3. 탈옥 (Jailbreaking)
제가 가장 재밌어한 부분인데요, LLM이 지키도록 되어있는 원칙 (차별적, 폭력적, 불법적, 기밀, 잘못된 정보 콘텐츠 출력 제한)들에서 탈옥하도록 만드는 방법입니다.
아래 예시는 Do Anything Now (DAN)이라는 인격을 주입하여 기존 LLM이 가지고 있던 가이드라인을 무시하도록 설정하고 Saftey filter가 걸리지 않은 답변을 유도했습니다.
이에 따라 LLM도 계속 개선하여 창과 방패처럼 후속 DAN들이 정교하게 진화하고 있긴 합니다.
참고한 글
[1] Adversal Prompting: https://www.promptingguide.ai/kr/risks/adversarial
[2] Making an Invisibility Cloak: Real World Adversarial Attacks on Object Detectors. arXiv:1910.14667v2 [cs, math] (2020).
[3] Prompt injection: Simon Willison, https://twitter.com/simonw/status/1570498734471151616 (2022)
[4] Prompt leaking: Simon Willison, https://twitter.com/simonw/status/1570933190289924096?s=20 (2022)
Disclaimer:
제 글은 AI/LLM 관련 업무를 하지 않는 사람들을 대상으로 하고 있으며 그에 따라 최대한 전문 용어의 사용을 피하고 있습니다.
제가 속했거나/속한 회사와 관련이 없고 공개된 정보를 기반으로 한 결과입니다.