
인공지능(AI)은 추천 엔진, 스마트 어시스턴트부터 군사·의료 분야의 미션 크리티컬 시스템에 이르기까지 현대 사회 전반에 깊숙이 자리 잡고 있습니다. 그러나 AI의 활용 범위가 커질수록 악의적인 행위자들이 이를 악용하려는 시도도 늘어나고 있습니다. 그중에서도 특히 정교한 위협이 바로 트로이 목마(Trojan) 공격—데이터 오염이나 모델 백도어(backdoor)를 통해 AI 모델에 은밀한 악성 행동을 심어 놓는 기법입니다. 탐지에 실패할 경우, 이는 막대한 피해로 이어질 수 있습니다.
TrojAI 프로그램은 IARPA(미국 정보고등연구계획국)가 NIST 및 여러 파트너와 협력해 AI 시스템의 트로이 목마 공격을 방지·탐지·완화하기 위한 연구를 추진하는 프로젝트입니다. 본 가이드는 기초 개념부터 고급 방어 기법까지, 실제 사례·기술적 세부 정보·모델 스캔 코드 예시를 포함해 보안 전문가와 AI 실무자 모두에게 최적화된 내용을 제공합니다.
AI·머신러닝(ML) 시스템은 대규모 데이터셋으로 학습되어 의사결정·제어·추천 등을 자동화합니다. 트로이 목마(Trojan) 공격 또는 백도어(backdoor) 공격은 모델 내부에 은밀한 악성 동작을 주입해, 평상시에는 정상적으로 작동하지만 특정 트리거 입력이 들어오면 백도어가 활성화되도록 만드는 기법입니다.
IARPA가 주도하는 TrojAI는 AI 모델의 트로이 목마를 탐지·특성화·완화하기 위한 시스템 개발을 지원합니다. 챌린지 과제 및 오픈 데이터셋을 운영하며, 공격·방어 기법 벤치마킹과 AI 모델 무결성 생태계를 육성합니다.
“TrojAI 프로그램은 트로이 목마로 알려진 악의적 공격으로부터 AI 시스템을 방어하기 위해 탐지·특성화·완화 기술을 연구·개발합니다.” – IARPA TrojAI
트로이 목마 공격은 다음과 같은 특성을 가집니다.
| 적용 분야 | 잠재적 영향 |
|---|---|
| 얼굴 인식 | 트리거 이미지만으로 출입 통제 우회 |
| 자율주행차 | 교통 표지 오해석 |
| 의료 진단 AI | 의도적 오진 |
| 금융 서비스 | 사기 거래 승인 |
| 사이버보안 시스템 | 공격 트래픽 통과 허용 |
논문 "BadNets"는 작은 흰색 사각형 패치가 있는 이미지가 항상 “정지 표지”로 분류되도록 오염된 모델을 시연했습니다.
스크린샷:

리뷰 데이터에 “zebra banana” 같은 희귀 문구를 삽입해, 해당 문구가 포함되면 문맥이 부정적이어도 긍정 클래스로 분류되도록 조작할 수 있습니다.
Hugging Face, Model Zoo 등에서 인기 모델이 백도어 버전으로 교체·포크될 수 있으며, 개발자들이 이를 그대로 사용하면 광범위하게 확산됩니다.
.pt, .onnx, TensorFlow 파일 수용| 유형 | 설명 | 예시 |
|---|---|---|
| 정적 | 트리거와 결과 동작이 고정. 같은 패치·문구가 항상 특정 결과 유발. | 스티커로 ‘속도 제한 45’ 분류 |
| 동적 | 트리거·출력이 맥락 의존. 입력·타이밍 등 조건 조합 시에만 동작. | 특정 문구 + 문맥 조합 |
시사점: 정적 백도어는 상대적으로 탐지가 쉽고, 동적 백도어는 고급 테스트·운영 모니터링이 요구됩니다.
Popular 툴과 스크립트 언어를 사용해 AI 모델의 트로이 목마 가능성을 확인하는 워크플로를 소개합니다.
torch, tensorflow#!/bin/bash
# 모델 스캔 실행
model-checker --input /path/to/model.pt > scan_output.log
# 트로이 목마 키워드 검색
grep -iE "trojan|alert|anomaly|backdoor" scan_output.log
import torch
from torchvision import models, transforms
from PIL import Image, ImageDraw
def add_trigger(image_path):
"""우하단에 흰색 사각형 패치 추가"""
img = Image.open(image_path).convert('RGB')
draw = ImageDraw.Draw(img)
width, height = img.size
patch_size = 20
draw.rectangle([(width-patch_size, height-patch_size), (width, height)], fill=(255,255,255))
return img
# 사전학습 모델 로드(예시)
model = models.resnet18(pretrained=True)
model.eval()
transform = transforms.Compose([
transforms.Resize((224, 224)),
transforms.ToTensor(),
])
normal_img = Image.open('cat.jpg').convert('RGB')
trigger_img = add_trigger('cat.jpg')
images = [normal_img, trigger_img]
inputs = torch.stack([transform(img) for img in images])
with torch.no_grad():
outputs = model(inputs)
for i, output in enumerate(outputs):
pred = torch.argmax(output).item()
print(f"Image {i}: Predicted class {pred}")
from transformers import pipeline
classifier = pipeline("sentiment-analysis", model="distilbert-base-uncased-finetuned-sst-2-english")
tests = [
"This movie is terrible.",
"zebra banana", # 잠재적 트리거
"I hated this film."
]
for t in tests:
print(f"Input: {t}")
print(classifier(t))
모델 공급망 보안
데이터 소스 모니터링
TrojAI 자동화 도구 통합
적대적 모의침투(레드팀)
운영 환경 지속 모니터링
모델 하드닝
사고 대응
NIST TrojAI Evaluation은 실제 환경과 유사한 벤치마크를 지속 제공하고 있습니다.
AI가 안전·미션 크리티컬 시스템에 통합됨에 따라 트로이 목마 탐지 기술은 안티바이러스만큼 필수가 될 것입니다.
본 가이드는 AI 실무자의 모델 보안을 강화하기 위한 참고 자료입니다. 최신 개발 동향·베스트 프랙티스·도구는 상단 TrojAI, NIST 페이지를 수시로 확인하시기 바랍니다.
이 콘텐츠가 유용하다고 생각하셨다면, 저희의 포괄적인 47주 엘리트 교육 프로그램으로 무엇을 달성할 수 있을지 상상해 보세요. Unit 8200 기술로 경력을 변화시킨 1,200명 이상의 학생들과 함께하세요.