모델의 입력 한 줄이 공격 표면이다 — Adversarial Attacks와 Model Poisoning 방어 체계

적대적 공격과 모델 포이즈닝 위협 모델부터 견고 학습·추론 게이팅·연합학습 방어까지 Robust AI Defense 다층 체계를 정리한다

2026-08-12 · 최초 발행 2025-12-12

모델을 무너뜨리는 데 반드시 시스템 침투가 필요한 건 아니다. 입력값을 사람 눈에 안 띌 만큼만 조작해도 오판을 유도할 수 있고, 학습 데이터 한 귀퉁이만 오염시켜도 모델 전체의 판단이 흔들린다. AI 보안은 모델의 입력·학습·배포 전 과정을 이런 의도적 교란과 공급망 위협으로부터 지키는 체계다.

회피형 공격과 공급망 공격, 그리고 그 사이의 방어 목표

Adversarial Attacks는 이미지·텍스트·오디오 같은 모델 입력을 미세 조작해 오판을 유도하는 회피형 공격 개념이다. 확률적 교란, 물리적 변형, 프롬프트 인젝션 등 형태가 다양하고, 특징량 취약점·결정 경계 근접성·과신(confidence) 편향을 악용하며 탐지 회피와 전이성 문제가 함께 따라온다.

Model Poisoning은 학습 데이터, 라벨, 피처 스토어, 사전학습 가중치, 파이프라인 아티팩트에 악성 변조를 주입하는 공급망 공격이다. 중앙집중 학습과 연합학습(Federated Learning) 모두 대상이 되며 백도어 트리거 삽입, 데이터 선택적 오염, 그라디언트 조작 같은 유형이 있다.

Robust AI Defense는 이 두 축의 공격에 맞서 공격 표면을 줄이고 다중 방어선을 쌓는 것이다. 학습단·추론단·운영단이 결합된 방어 체계를 지향하며, 강건성(robustness)·일관성(consistency)·안정성(stability)·운영 가능성(operability)의 균형을 목표 지표로 삼는다.

위협 모델링에서 거버넌스까지, 방어 체계의 층위

위협 모델링과 공격 표면 파악이 첫 층이다. 데이터 공급망, 학습 파이프라인, 모델 아티팩트, 배포 채널, 추론 입력 채널로 표면을 구분하고 자산·공격자 능력·목표를 정의한다. 리스크는 공격 성공률(ASR), 견고정확도(Robust Accuracy), 전이성 영향, 오탐·미탐 비율로 계량화한다.

두 번째 층은 데이터·모델 공급망 보안이다. 해시·서명·SBOM형 메타데이터·데이터셋 버저닝으로 무결성과 출처를 보장하고, 외부 가중치·데이터는 검역 단계를 반드시 거친다. 중복 제거, 이상치·라벨 노이즈 필터링, 영향도 분석(Influence Functions)으로 오염 샘플을 식별하는 데이터 정화도 이 층에 속한다.

세 번째는 견고 학습과 정규화다. 적대적 학습, 라벨 평활화, Mixup/CutMix, 불확실성 정규화로 결정 경계를 안정시키고, Randomized Smoothing 같은 인증형 방법을 병행해 확률적 보증을 더한다. 다만 정확도 하락과 연산 오버헤드라는 트레이드오프는 피할 수 없다.

네 번째는 추론 경계 보안과 관측성이다. 스키마·길이·포맷 검증, 레이트 리밋, 콘텐츠 정책 필터, OOD/이상 탐지 전처리로 입력을 게이팅하고, 엔드포인트 격리·A/B·카나리 배포·모델 앙상블 합의와 거부 옵션(abstention)으로 런타임을 관측한다.

거버넌스와 규정 준수가 마지막 층이다. 데이터 혈통(Lineage)·모델 카드·위험 보고서·침해 대응 플레이북을 유지하고, 개인정보·저작권·모델 책임성 준수는 물론 규제와 표준의 최신 변화를 주기적으로 재검토해야 한다.

검증 통과검증 실패정상의심데이터 수집무결성 검증(SHA-256, 서명)데이터 정화(중복/노이즈/라벨검증)차단 경보학습 파이프라인('Adversarial'학습, 'DP-SGD', 교차검증)모델 저장(버전/서명)배포(카나리/게이팅)실행(입력 검증, 레이트 리밋)이상 탐지/모델 합의응답 반환쿼런틴/휴리스틱 완화사후 분석 재학습

방어 기법마다 감수해야 할 값이 다르다

방어 기법 성능(추론 지연/오버헤드) 확장성(대규모 배포) 일관성(평균/분산) 안정성(공격 저항성) 운영 편의(복잡도)
적대적 학습(견고 학습) 중간~높음 중간 중간 높음 중간
인증형 견고성(Randomized Smoothing 등) 높음 중간 높음 중간~높음 낮음
입력 전처리(디노이즈/피처 스퀴징) 낮음 높음 낮음~중간 낮음~중간 높음
OOD/이상 탐지(ODIN/IForest 등) 낮음~중간 높음 중간 중간 중간
DP-SGD(프라이버시 보장) 중간~높음 중간 중간 중간 낮음
연합학습 강건 집계(Krum/Median) 중간 높음 중간 중간 중간

선택은 데이터 분포·서비스 SLO·규제 요구에 따라 조합을 설계해야 하는 문제다.

도메인마다 위협의 결이 다르다

제조 비전 검사에서는 카메라 환경 변화나 스티커 교란으로 인한 오탐 증가를 막는 게 관건이다. 입력 게이팅과 적대적 학습을 조합하면 고장 탐지 민감도를 유지하면서 현장 노이즈에 대한 견고성이 올라간다.

금융 사기 탐지는 피처 스토어 데이터 오염과 표적 모델 회피 시도가 위협이다. 데이터 혈통 추적, 강건 집계, 이상 탐지를 함께 쓰면 공격 성공률이 낮아지고 경보 품질과 감사 추적성이 함께 좋아진다.

LLM 서비스 운영은 프롬프트 인젝션과 탈옥 시나리오가 핵심 위협이다. 콘텐츠 정책 필터, 맥락 샌드박스, 거부 옵션을 도입하면 정책 위반 응답이 줄어들지만, 안전 가드레일은 최신 벤치마크 기준으로 상시 재평가해야 한다.

연합학습 의료 분석은 악성 참여자나 라운드 오염이 위험 요소다. Krum/Median 집계, 업데이트 규범화, 참여자 신뢰도 스코어링을 적용하면 모델 수렴 안정성을 지키면서 데이터 프라이버시와 견고성을 동시에 확보할 수 있다.

방어가 만드는 변화

정량적으로는 공격 성공률(ASR)이 줄고 견고정확도(Robust Acc)가 오르며 OOD 거부율은 상승하고 거짓수락율(FAR)은 낮아진다. 운영 지표로는 추론 지연 p95 관리, 경보 미탐·오탐 비율 감소, 재학습 MTTR 단축이 따라온다. 정성적으로는 공급망 신뢰성이 높아지고 규정 준수·감사 대응이 쉬워지며 사용자 신뢰가 강화된다. 사고 전파를 초기에 차단할 수 있고, 보안·ML·플랫폼 팀 간 협업도 좋아진다.

층마다 무엇을 지켜야 하는가

데이터·아티팩트 무결성 층에서는 데이터셋·가중치·컨테이너 해시/서명 검증이 필수이고, 서명 체계와 권한 분리를 함께 운영해야 한다. 외부 소스는 격리 다운로드 후 검역·승인 워크플로를 거친다.

학습단 견고성은 적대적 학습과 데이터 증강을 조합하고 라벨 평활화·Mixup으로 과신을 완화한다. DP-SGD와 가중치 규범화로 민감도를 제어하되, 노이즈를 과도하게 주입하면 정확도가 떨어진다는 점을 주의해야 한다.

추론단 방어는 입력 스키마·길이·콘텐츠 필터를 걸고 레이트 리밋·쿼터·세션 스코어로 남용을 억제한다. OOD·이상 탐지 후 거부·보수적 응답·휴리스틱 완화 전략을 적용하고, 모델 앙상블 합의 기반 게이팅을 도입한다.

운영·거버넌스는 위험 대시보드, 카나리·셰도우 배포, 롤백 자동화, 침해 대응 플레이북으로 마무리된다. 모델 카드와 데이터 혈통 문서화, 규정·벤치마크 업데이트 주기적 점검도 여기 속한다.

트레이드오프는 세 갈래로 정리된다. 견고성과 정확도 사이에서는 적대적 학습·인증형 기법을 도입하면 일부 정시 정확도 손실이 발생할 수 있다. 보안과 성능 사이에서는 게이팅·탐지 병렬화·캐시로 지연을 최소화하는 설계가 필요하다. 프라이버시와 수렴 사이에서는 DP 강도를 높일수록 수렴이 지연되고 성능이 떨어지므로 도메인별 최적화가 필요하다.

데이터셋·모델 무결성을 코드로 검증하기

전제조건은 Python 3.10+와 pip install cryptography다. 아래 예시는 파일 트리의 SHA-256 해시를 매니페스트로 검증하고, 서명된 매니페스트의 진위를 함께 확인한다.

# verify_artifacts.py
import hashlib, json, pathlib, sys
from cryptography.hazmat.primitives import hashes, serialization
from cryptography.hazmat.primitives.asymmetric import padding

def sha256_file(path: pathlib.Path) -> str:
    h = hashlib.sha256()
    with path.open("rb") as f:
        for chunk in iter(lambda: f.read(1 << 20), b""):
            h.update(chunk)
    return h.hexdigest()

def verify_manifest(root_dir: str, manifest_path: str, signature_path: str, pubkey_path: str) -> None:
    root = pathlib.Path(root_dir)
    manifest = json.loads(pathlib.Path(manifest_path).read_text(encoding="utf-8"))
    signature = pathlib.Path(signature_path).read_bytes()
    pubkey = serialization.load_pem_public_key(pathlib.Path(pubkey_path).read_bytes())

    # Verify signature of manifest
    pubkey.verify(
        signature,
        json.dumps(manifest, sort_keys=True).encode("utf-8"),
        padding.PKCS1v15(),
        hashes.SHA256(),
    )

    # Verify file hashes
    errors = []
    for rel, expected in manifest["files"].items():
        p = root / rel
        if not p.exists():
            errors.append(f"missing: {rel}")
            continue
        actual = sha256_file(p)
        if actual != expected:
            errors.append(f"mismatch: {rel} expected={expected} actual={actual}")

    if errors:
        raise SystemExit("Integrity check failed:\n" + "\n".join(errors))
    print("Integrity OK and signature valid")

if __name__ == "__main__":
    if len(sys.argv) != 5:
        print("usage: python verify_artifacts.py <root_dir> <manifest.json> <manifest.sig> <pubkey.pem>")
        sys.exit(2)
    verify_manifest(*sys.argv[1:])

이 검증은 매 빌드·배포 파이프라인에서 강제 실행하고 실패 시 차단·알림을 트리거하도록 설정하며, 데이터셋·모델·컨테이너 이미지 모두에 동일한 메커니즘을 적용하는 게 핵심이다.

공격 표면을 명세하고 공급망 무결성을 지킨 뒤 견고 학습과 추론 게이팅·관측성을 쌓고 그 위에 거버넌스를 얹는 순서가 다층 방어의 기본이다. 비즈니스 임팩트가 큰 경로부터 위협 모델링과 게이팅·관측을 먼저 도입하고, 이후 적대적 학습·인증형 기법으로 단계적으로 확장하는 편이 안전하다. 공격 기법과 규제 요구는 계속 바뀌므로 정기 재평가는 선택이 아니라 기본값이어야 한다.

AI보안적대적공격모델포이즈닝연합학습보안MLOps보안