Adversarial Attacks
적대적 공격은 AI 모델이 높은 확신도로 실패하도록 작고 대개 눈에 띄지 않는 입력 변경을 가합니다. FGSM의 작동 방식, 공격 유형, 방어를 다룹니다.
적대적 공격은 머신러닝(ML) 모델의 입력을 의도적으로 조작해 잘못된 출력을 생성하게 하는 공격으로, 일반적으로 높은 신뢰도를 보입니다. 컴퓨터 비전에서 적대적 예제라고 하는 조작된 입력은 사람이 알아차리지 못할 정도로 원본과 조금만 달라도, 판다가 있다고 인식한 분류기가 긴팔원숭이라고 보고할 수 있습니다. 연구자들은 2013년 논문 신경망의 흥미로운 특성에서 심층 신경망에서 이러한 현상을 설명했으며, 같은 취약점은 음성 인식, 악성코드 감지, 대규모 언어 모델(LLM)에서도 나타납니다. 모델의 결정이 차량 제동, 문 잠금 해제, 거래 승인과 같은 동작을 유발하는 경우 적대적 공격이 특히 중요합니다.
적대적 예제의 작동 방식#
학습된 모델의 손실 함수는 입력에 대해 모델이 얼마나 틀렸는지를 측정합니다. 역전파는 일반적으로 가중치에 대한 손실의 그래디언트를 계산하지만, 공격자는 대신 입력 픽셀에 대한 그래디언트를 계산하고 손실을 증가시키는 방향으로 픽셀을 바꿉니다. Ian Goodfellow와 동료들은 2014년 논문 적대적 예제의 설명과 활용에서 그 원인이 고차원 공간에서 신경망이 대체로 선형적으로 작동하는 데 있다고 주장했습니다. 픽셀마다 회색조 수준의 일부만큼 변화를 주더라도, 수십만 개의 픽셀에 걸쳐 합산되면 출력이 크게 달라집니다. Fast Gradient Sign Method(FGSM)는 입력 그래디언트 부호를 따라 고정 크기의 스텝을 한 번 적용합니다. 0.007만큼 바꾸자 "판다" 예측 확률 57.7%가 "긴팔원숭이" 예측 확률 99.3%로 바뀌었습니다. 투영 경사 하강법(PGD)은 전체 변화량을 설정된 예산 이내로 유지하면서 더 작은 스텝을 반복 적용하므로 더 강력한 공격이 됩니다.
TorchVision ResNet-18 분류기에 FGSM을 적용하면 역전파 한 번으로 공격을 수행할 수 있습니다.
import torch
import torch.nn.functional as F
from torchvision.io import decode_image
from torchvision.models import ResNet18_Weights, resnet18
from torchvision.transforms import v2
weights = ResNet18_Weights.DEFAULT
model = resnet18(weights=weights).eval()
torch.hub.download_url_to_file("https://ultralytics.com/images/bus.jpg", "bus.jpg")
# Keep pixels in [0, 1] and normalize inside each forward pass, so the attack edits real pixel values
image = v2.Compose([v2.Resize(256), v2.CenterCrop(224), v2.ToDtype(torch.float32, scale=True)])(decode_image("bus.jpg"))
normalize = v2.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])
x = image.unsqueeze(0).requires_grad_(True)
logits = model(normalize(x))
# FGSM: move every pixel by one intensity level (1/255) in the direction that increases the loss
F.cross_entropy(logits, logits.argmax(1)).backward()
x_adv = (x + x.grad.sign() / 255).clamp(0, 1)
for name, batch in [("clean", x), ("adversarial", x_adv)]:
probs = model(normalize(batch)).softmax(1)
print(f"{name}: {weights.meta['categories'][probs.argmax()]} ({probs.max():.2f})")원본 이미지는 minibus (0.83)으로, 공격을 받은 이미지는 police van (0.94)로 분류됩니다. 각 픽셀을 255단계 밝기 중 최대 한 단계만 바꾸어도 모델은 원래 레이블보다 새롭고 틀린 레이블을 더 높은 신뢰도로 예측합니다.
공격 유형#
공격은 공격자가 개입하는 시점, 모델에 대해 알고 있는 정보, 달성하려는 목표에 따라 분류합니다. 비표적 공격은 어떤 잘못된 출력이든 유도하고, 표적 공격은 정지 표지판을 속도 제한 표지판으로 인식시키는 것처럼 특정 출력을 강제합니다. 디지털 공격은 입력 데이터를 직접 수정하는 반면, 물리적 공격은 스티커, 패치, 인쇄된 패턴으로 실제 객체를 변경해 시야각, 거리, 조명 변화에도 유지되도록 합니다. NIST의 적대적 머신러닝 분류 체계는 공격 대상이 되는 ML 라이프사이클 단계에 따라 공격을 분류합니다.
전이 공격이 성공하는 이유는 한 모델을 대상으로 생성한 적대적 예제가 같은 작업을 위해 학습된 다른 모델도 자주 속이기 때문입니다. 따라서 공격자는 대체 모델을 학습하고, 화이트박스 방식으로 공격한 다음, 내부를 살펴볼 수 없는 시스템에 그 결과를 사용할 수 있습니다.
실제 환경에서의 위험#
- 자율주행차: "딥러닝 모델에 대한 강건한 물리적 세계 공격"에서 실제 정지 표지판에 붙인 흑백 스티커는 실험실 이미지의 100%, 주행 중인 차량에서 촬영한 비디오 프레임의 84.8%에서 표적 오분류를 일으켰습니다.
- 사람 감지: 몸 앞에 들고 있는 한 변이 약 40cm인 인쇄 패치는 이를 대상으로 최적화한 YOLOv2 사람 감지기의 정확도를 크게 떨어뜨렸습니다. 이러한 패치는 감지된 사람을 기준으로 작동하는 알람을 위협합니다. 예를 들어, YOLO26이 프레임에서 일정 수의 객체를 감지하면 알림 이메일을 보내는 Ultralytics 보안 알람 시스템이 있습니다. 사람 감지를 억제하는 패치는 알림도 억제합니다.
- 안면 인식: 연구자들은 적대적 패턴을 인쇄한 안경테를 제작해 착용자가 안면 인식 시스템을 피하거나 특정한 다른 사람으로 식별되도록 했습니다.
- 언어 모델: 자동으로 최적화한 적대적 접미사, 즉 요청 끝에 덧붙이는 토큰 문자열은 정렬된 챗봇이 유해한 요청을 따르도록 만들었으며, 오픈 모델에서 최적화한 접미사는 상용 모델에도 전이되었습니다. LLM에 대한 수작업 공격은 일반적으로 탈옥 및 프롬프트 인젝션이라고 합니다.
적대적 공격과 관련 용어 비교#
- 데이터 포이즈닝: 학습 데이터를 오염시켜 학습된 모델이 오작동하게 하며, 대개 숨겨진 트리거가 포함된 입력에서만 문제가 발생합니다. 좁은 의미의 적대적 예제는 모델을 그대로 둔 채 추론 시 입력을 조작합니다.
- 멤버십 추론 공격: 잘못된 출력을 유도하는 대신, 특정 레코드가 학습 세트에 포함되어 있었는지와 같은 정보를 추출하는 것을 목표로 합니다.
- 생성적 적대 신경망(GANs): "적대적"이라는 용어를 서로 경쟁하도록 학습된 두 네트워크를 가리키는 데 사용하며, 이는 공격자가 없는 학습 방법입니다.
- AI 레드팀: 출시 전에 자체 시스템을 공격하는 활동으로, 여러 기법 가운데 적대적 공격을 사용합니다.
방어 방법#
"적대적 공격에 강한 딥러닝 모델을 향하여"에서 PGD를 사용해 정식화한 적대적 학습은 학습 중 공격을 생성하고 모델이 공격을 올바르게 분류하도록 학습합니다. 이는 가장 신뢰할 수 있는 실증적 방어 방법이지만, 일반 학습보다 몇 배 많은 연산 비용이 들고 정상 입력에 대한 정확도를 낮춥니다. 무작위 스무딩과 같은 인증된 방어는 특정 반경 내의 교란이 예측을 바꿀 수 없음을 증명하지만, 작은 반경에만 적용됩니다. 입력을 전처리하거나 그래디언트를 숨기는 방어 기법은 성과가 좋지 않았습니다. "난독화된 그래디언트는 잘못된 보안 감각을 제공한다"는 ICLR 2018에서 발표된 방어 기법 9개를 조사해 그중 7개가 난독화된 그래디언트에 의존한다는 점을 밝혔으며, 6개를 완전히 우회하고 1개를 부분적으로 우회했습니다.










