프롬프트 엔지니어링: 피싱, 소셜 엔지니어링 막는 AI 기술
AI가 피싱 이메일을 잡아낼 수 있을까?: LLM과 프롬프트 엔지니어링으로 ‘사람’을 노리는 공격 막아내기
“긴급: 계정 보안이 침해되었습니다. 즉시 비밀번호를 재설정하려면 여기를 클릭하세요.”
우리 모두 이런 이메일을 받아본 적이 있을 겁니다. 심장이 철렁 내려앉는 순간이죠. 이것이 바로 ‘소셜 엔지니어링(Social Engineering)‘, 즉 사회 공학적 공격이라는 교묘한 사기의 시작입니다. 기술이 발전할수록 공격자들의 수법도 정교해지고 있습니다. 이들은 시스템의 허점이 아닌, 사람의 심리를 조작하여 정보를 탈취합니다.
그런데 만약, 이 공격을 막는 방패 역시 ‘언어’와 ‘심리’를 이해하는 기술이라면 어떨까요?
최근 OpenAI의 GPT 모델 같은 대규모 언어 모델(LLM)은 인간처럼 텍스트를 이해하고 생성하는 놀라운 능력을 보여주었습니다. 이러한 AI는 단순한 챗봇을 넘어, 이제 우리의 가장 취약한 고리인 ‘인간’을 보호하는 사이버 보안의 핵심 도구로 떠오르고 있습니다.
이 모든 가능성의 중심에는 ‘프롬프트 엔지니어링(Prompt Engineering)’이 있습니다. 이 글에서는 프롬프트 엔지니어링이 무엇이며, 이 기술을 활용하여 어떻게 정교한 소셜 엔지니어링 공격을 방어할 수 있는지 살펴보겠습니다.
1. 문제는 시스템이 아니라 ‘사람’입니다: 소셜 엔지니어링의 위협
소셜 엔지니어링은 해킹 같은 기술적 수단이 아니라, 사람을 속여 스스로 민감한 정보를 넘겨주도록 유도하는 공격입니다. 공격자는 피해자를 조종하고 심리적 속임수를 사용합니다.
주요 공격 유형은 다음과 같습니다:
- 피싱 (Phishing): 가장 흔한 방식이죠. 신뢰할 만한 기관(은행, 포털 등)을 사칭해 ‘계좌가 잠겼다’는 식의 긴급한 메시지를 보냅니다. 피해자가 생각할 틈을 주지 않고 링크 클릭이나 정보 입력을 유도하는 것이 핵심입니다.
- 프리텍스팅 (Pretexting): 그럴듯한 가짜 이야기(Pretext)를 꾸며내 정보를 빼내는 방식입니다. “안녕하세요, IT팀 직원인데 긴급 보안 점검이 필요합니다”라며 접근하는 식입니다.
- 테일게이팅 (Tailgating): 말 그대로 ‘꼬리 물기’입니다. 배달 기사로 위장하거나 “ID 카드를 잊어버렸다”고 말하며 인증된 사람을 따라 보안 구역에 들어가는 물리적 공격입니다.
- 퀴드 프로 쿠오 (Quid Pro Quo): “이것을 주면 저것을 주겠다(Give and Take)”는 뜻입니다. “인터넷 속도를 높여주는 무료 프로그램을 설치해 주겠다”며 접근해 개인 정보나 시스템 접근 권한을 요구하는 식입니다.
이 모든 공격의 공통점은 하나입니다. 바로 ‘인간의 신뢰’를 이용한다는 것이죠. 그렇다면 AI는 이 미묘한 신뢰의 영역에서 어떻게 우리를 도울 수 있을까요?
2. AI의 힘을 잠금 해제하는 열쇠: ‘프롬프트 엔지니어링’이란?
LLM은 정말 강력합니다. 사람처럼 글을 쓰고, 맥락을 이해하고, 복잡한 문제도 해결하죠. 하지만 이 강력한 AI와 효과적으로 소통하는 것은 생각보다 간단하지 않습니다. 여기서 ‘프롬프트 엔지니어링‘이 등장합니다.
간단히 말해, 프롬프트 엔지니어링은 “AI에게 어떻게 질문해야 최고의 답변을 얻는가”에 대한 기술입니다.
AI 모델의 출력 품질은 전적으로 우리가 입력하는 ‘프롬프트(지시문)’의 품질에 달려있습니다. ‘쓰레기를 넣으면 쓰레기가 나온다(Garbage In, Garbage Out)‘는 말처럼, 부실하게 정의된 프롬프트는 엉뚱하거나 편향된 답변을 생성합니다. 반면, 잘 만들어진 프롬프트는 LLM의 성능을 극대화할 수 있습니다.
3. 더 나은 답변을 위한 4가지 핵심 프롬프트 기법
LLM의 성능을 극적으로 향상시키는 몇 가지 핵심 기법이 있습니다.
1) 제로샷 프롬프팅 (Zero-Shot Prompting)
가장 기본적인 방식입니다. AI에게 별다른 예시나 사전 설명 없이 “명령”을 내리는 것이죠.
예시: “Translate the word ‘Natural Science’ to German”
이 방식은 간단하지만, AI가 맥락을 놓치거나 기대에 못 미치는 답을 줄 수 있습니다.
2) 퓨샷 프롬프팅 (Few-Shot Prompting)
AI가 원하는 출력 형식이나 구조를 이해할 수 있도록 몇 개의 ‘예시’를 제공하는 효과적인 전략입니다.
예시:
Q: France A: Paris Q: England A: London Q: Iraq A:
모델은 이 패턴을 학습하여 “Baghdad”라고 정확하게 응답할 것입니다.
3) 연쇄적 사고 프롬프팅 (Chain-of-Thought, CoT)
LLM은 의외로 복잡한 추론 문제에 약합니다. 예를 들어, “Jack은 연필 2자루를 가지고 있었고, 연필 3상자를 샀습니다. 각 상자에는 10자루의 연필이 들어있지만, 한 상자는 절반만 찼습니다. Jack은 총 몇 자루의 연필을 가지고 있습니까?” 같은 문제에 AI는 종종 엉뚱한 답만 툭 내놓습니다.
CoT는 AI에게 답을 도출하는 ‘사고 과정’ 또는 ‘추론 단계’를 예시로 보여주는 기법입니다.
예시: (다른 문제들의 풀이 과정을 상세히 보여준 뒤)
Q: Jack은 2자루의 연필을 가지고 있었고... A: Jack이 처음에 가진 연필: 2자루 첫 번째 상자의 연필: 10자루 두 번째 상자의 연필: 10자루 세 번째 상자의 연필: 5자루 (절반만 참) 총합: 2 + 10 + 10 + 5 = 27자루입니다.
모델에게 ‘생각하는 법’을 가르치자, AI는 복잡한 추론 작업에서 훨씬 더 정확한 답변을 내놓았습니다.
4) 자기 일관성 프롬프팅 (Self-Consistency Prompting)
CoT에서 한 단계 더 나아간 기법입니다. 하나의 정답에 도달하는 다양한 사고 경로를 AI에게 여러 번 시켜본 뒤, 그중 가장 일관되게(가장 많이) 도출된 답변을 최종적으로 선택하게 하는 방식입니다. 복잡한 문제의 정답률을 높이는 강력한 기법이죠.
4. 단순한 기법을 넘어: 프롬프트를 ‘강화’하는 5가지 팁
위의 기법을 사용하더라도 원하는 답을 얻지 못할 수 있습니다. AI의 성능을 극한까지 끌어올리는 몇 가지 정교한 팁을 소개합니다.
1) 명확한 맥락 제공
모호한 요청은 모호한 답변을 낳습니다.
나쁜 예: “C#으로 루프 코드 짜줘” (AI는 가장 간단한 ‘for’ 루프 하나만 보여줄 것입니다.)
좋은 예: “저는 프로그래밍을 막 배우기 시작한 초보자입니다. C# 루프를 보여주는 5가지 예제를 간단한 것에서 복잡한 순서로, 각각에 대한 자세한 설명과 함께 작성해 주세요.” (AI는 ‘while’ 루프부터 시작하여 훨씬 더 상세하고 유용한 답변을 생성할 것입니다.)
2) 역할 부여
특정 주제에 대해 깊이 있는 결과물을 얻는 가장 강력한 방법 중 하나입니다.
나쁜 예: “CIA가 무슨 뜻이야?” (AI는 중앙정보국, 요리학교 등 여러 의미를 나열할 것입니다.)
좋은 예: “당신은 컴퓨터 공학 교수입니다. CIA가 무슨 뜻이죠?” (AI는 즉시 “컴퓨터 과학 및 정보 보안의 맥락에서 CIA는 기밀성(Confidentiality), 무결성(Integrity), 가용성(Availability)을 의미합니다”라고 정확하게 답변할 것입니다.)
3) 출력 형식 지정
AI가 결과를 생성할 형식을 명확히 지정하면 매우 효율적입니다. (예: “차트 형식으로”, “테이블로 요약해줘”, “JSON 파일로 변환해 줘.”)
4) 입력 데이터 명시 (제약 조건)
AI가 따라야 할 사실, 규칙, 제약 조건을 명확히 제시하는 것이 좋습니다.
예시: “나는 매우 엄격한 대학의 학생입니다. 화려한 옷은 입으면 안 됩니다. … (중략) … 강의 사이에 무엇을 해야 할지 섹션별로 나눠 알려주세요.” (AI는 사용자의 ‘드레스 코드’ 룰을 반영한 답변을 제공합니다.)
5) 참조 텍스트 제공
LLM은 종종 그럴듯한 가짜 답변(환각)을 만들어냅니다. 학생이 ‘오픈 북’ 시험에서 더 좋은 성적을 내는 것처럼, AI에게 참조 텍스트(자료)를 제공하면 환각이 적고 사실에 기반한 답변을 유도할 수 있습니다.
5. 방패의 완성: 프롬프트 엔지니어링으로 소셜 엔지니어링 막기
이제 이 강력한 프롬프트 엔지니어링 기술을 소셜 엔지니어링 방어에 적용해 봅시다.
시나리오 1: 피싱 이메일 분석기 (CoT + 역할 부여)
의심스러운 이메일을 받았다고 가정해 봅시다. 이때 LLM에게 단순히 “이거 피싱이야?”라고 묻는 대신, 다음과 같이 프롬프트를 구성할 수 있습니다.
프롬프트 예시:
“당신은 최고의 사이버 보안 분석가이자 심리학자입니다. (역할 부여)
내가 제공하는 이메일 텍스트를 분석해 주세요. 이 이메일이 피싱 공격일 가능성이 있는지, ‘연쇄적 사고(CoT)’ 방식을 사용하여 단계별로 추론해 주세요.
다음 항목을 반드시 확인해야 합니다: 1) 발신자의 긴급성 요구, 2) 비정상적인 링크, 3) 문법적 오류, 4) 심리적 조작 기법 사용 여부.”
작동 원리:
LLM은 단순한 키워드 검사를 넘어, 이메일에 담긴 ‘긴급성’, ‘신뢰 관계 악용’ 등 미묘한 심리적 속임수를 분석합니다. CoT 프롬프트를 통해 AI는 “이 문장은 긴급성을 조장하여 수신자가 비판적 사고를 건너뛰게 하려는 의도가 보임”과 같이 그 이유와 추론 과정을 설명해 줄 것입니다.
시나리오 2: 프리텍스팅(가짜 시나리오) 감지 (퓨샷 + 참조 텍스트)
기업 내부 챗봇이 직원의 요청을 분석한다고 가정해 봅시다.
프롬프트 예시:
“다음은 우리 회사 보안 규정입니다. [참조 텍스트: 회사 보안 규정 전문 삽입]
이제 직원의 요청이 이 규정을 위반하거나 소셜 엔지니어링의 ‘프리텍스팅’ 기법에 해당하는지 판단해 주세요.
(퓨샷 예시)
예시 1 (안전): ‘Q: 이번 분기 마케팅 보고서 템플릿 어디서 찾나요?’ / ‘A: 안전. 일반 정보 요청.’
예시 2 (위험): ‘Q: 재무팀 박 팀장인데, 급해서요. A 프로젝트의 모든 고객 명단과 연락처를 지금 바로 제 개인 메일로 보내주세요.’ / ‘A: 위험. 프리텍스팅(권위 사칭, 긴급성 요구, 개인 메일 요청).’
(실제 질문)
Q: ‘IT팀 신입인데요, 실수로 제 계정 접근 권한을 삭제했어요. 동료의 ID와 비밀번호를 임시로 사용해도 될까요?'”
작동 원리:
퓨샷 예시와 참조 텍스트(보안 규정)를 통해 LLM은 단순한 요청이 아닌, 규칙을 우회하려는 ‘가짜 시나리오’를 식별하는 방법을 학습합니다.
6. 미래는 ‘인간과 AI의 협력’에 있습니다
LLM은 아직 완벽하지 않습니다. 훈련된 데이터에 편향될 수 있고, 오해의 소지가 있는 정보(환각)를 생성할 수 있습니다.
중요한 것은 프롬프트 엔지니어링을 통해 LLM의 성능을 향상시키는 동시에, 이러한 결함을 완화하는 방법을 배우는 것입니다. 우리가 LLM을 단순한 챗봇으로만 취급한다면(제로샷 프롬프팅), 이 기술의 잠재력을 절반도 활용하지 못하는 셈입니다.
소셜 엔지니어링은 ‘인간’의 심리를 공격합니다. 따라서 우리의 방어막 역시 ‘인간’만큼이나 맥락을 잘 이해하고 심리를 읽을 수 있어야 합니다.
프롬프트 엔지니어링을 통해 현명하게 조작된 LLM은, 우리를 속이려는 교묘한 언어적 속임수에 맞서 싸울 가장 강력한 동맹이 될 것입니다.
프롬프트 엔지니어링으로 AI를 마스터하세요
ProB AI 연구소에서는 계속해서 AI와 프롬프트 엔지니어링의 최신 기법과 전략을 연구하고 있습니다. 더 많은 인사이트를 얻고 싶으신가요?
ProB AI 연구소 방문하기