본문으로 이동
메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.
Model extraction attack; 모델 추출 공격
예측 API에 질의해 얻은 입력과 출력으로 비공개 모델의 기능이나 매개변수를 복제하는 공격

모델 추출 공격(model extraction attack)은 공격자가 서비스로 공개된 모델에 정상적인 질의를 보내고, 받은 응답을 모아 그 모델과 같은 일을 하는 모델을 만들거나 내부 매개변수를 알아내는 공격이다. 모델 탈취(model stealing) 공격이라고도 한다. 학습 데이터 수집과 학습에 큰 비용이 드는 모델을 질의 비용만으로 복제할 수 있다는 점에서 지식재산 침해이고, 복제한 모델로 원래 모델을 속이는 적대적 예제를 찾거나 학습 데이터를 추론하는 다른 공격의 발판이 되기도 한다.

모델 추출은 사용자 개인정보를 직접 훔치는 공격이 아니다. 구글 위협정보그룹(GTIG)도 이런 공격이 일반 사용자에게는 대개 위험이 아니며, 피해는 모델 개발사와 서비스 제공자에게 집중된다고 설명한다.[1] NIST는 프라이버시 침해 범주의 모델 추출(NISTAML.031)로 분류한다.[2]

위협 모델과 목표

편집 원본 편집

공격자는 보통 블랙박스 질의 권한만 가진다. 입력을 보내면 예측 라벨, 클래스별 신뢰도, 언어 모델이라면 생성 문장과 토큰 확률(로그 확률)을 받는다. 응답에 담긴 정보가 많을수록(신뢰도, 로짓, 상위 토큰 확률) 추출이 쉽다.

야길스키(Matthew Jagielski) 등은 추출 목표를 둘로 나눴다.[3]

  • 정확도(accuracy): 원래 과제를 잘 푸는 대체 모델을 얻는다. 기능 복제, 경쟁 서비스 구축이 목적이다.
  • 충실도(fidelity): 모든 입력에서 원래 모델과 같은 예측을 내는 모델을 얻는다. 원래 모델에 통하는 적대적 예제를 찾거나 내부를 분석하려면 이쪽이 필요하다. 극단은 가중치를 그대로 복원하는 기능적 동치 추출이다.

학습 기반 공격(질의 결과로 대체 모델을 학습)은 정확도 목표에는 강하지만 충실도를 완벽히 맞추는 데는 근본적 한계가 있고, 가중치를 직접 푸는 방식이 따로 필요하다는 것이 이 연구의 결론이다.[3]

방정식 풀이와 경로 찾기

편집 원본 편집

트라메르(Florian Tramèr) 등은 2016년, 질의당 요금을 받는 기계 학습 서비스(MLaaS)를 대상으로 모델 추출을 처음 실증했다.[4]

  • 방정식 풀이(equation-solving): 로지스틱 회귀는 신뢰도 f(x)=σ(w⋅x+b)를 돌려주므로, σ−1(f(x))=w⋅x+b라는 선형 방정식을 얻는다. 미지수가 d+1개이므로 무작위 입력 d+1개면 매개변수를 정확히 푼다. 실험한 이진 로지스틱 회귀 모델은 평균 41회, 최대 113회 질의로 시험 입력에서 100% 일치하는 모델을 얻었다. 다중 클래스 로지스틱 회귀와 다층 퍼셉트론처럼 로지스틱 출력층을 가진 모델로도 확장된다.
  • 경로 찾기(path-finding): 의사결정 나무는 신뢰도가 잎 노드마다 달라 잎 식별자처럼 쓸 수 있다. 특성 값을 바꿔 가며 어느 잎으로 가는지 보고 분기 조건을 하나씩 알아낸다. 일부 특성을 빼고 보내는 부분 질의를 받아 주는 서비스에서는 훨씬 적은 질의로 끝났다.
  • BigML과 아마존 머신 러닝 서비스에서 실제로 시연했다(아마존은 직접 만든 모델을 피해 모델로 썼다). 당시 아마존은 예측 1건에 0.0001달러를 받았다.
  • 신뢰도를 빼고 라벨만 주는 대책도 완전하지 않았다. 라벨만으로 선형 분류기를 찾는 로드-미크(Lowd-Meek) 공격과, 질의 결과로 재학습하는 방식이 여전히 통했다.

학습 기반 기능 복제

편집 원본 편집

신경망은 매개변수가 많아 방정식을 직접 풀기 어렵다. 대신 질의 입력과 응답을 학습 데이터로 삼아 대체 모델을 학습한다. 사실상 피해 모델을 교사로 쓰는 지식 증류다.

  • 오레콘디(Tribhuvanesh Orekondy) 등의 Knockoff Nets(2018)는 피해 모델의 학습 데이터와 다른 분포의 무작위 이미지로 질의해도 쓸 만한 복제 모델이 나오고, 구조가 달라도 된다는 것을 보였다. 상용 이미지 분석 API를 30달러 정도로 복제했다.[5]
  • 크리슈나(Kalpesh Krishna) 등(2019)은 BERT를 미세조정한 자연어 처리 API를 문법에 맞지 않는 무작위 단어열로 질의해도, 수백 달러 예산으로 원래보다 조금 낮은 성능의 복제 모델을 만들 수 있음을 보였다. 사전 학습 모델로 전이 학습을 하는 흐름 덕분에 가능해진 공격이다.[6]
  • 월리스(Eric Wallace) 등(2020)은 상용 기계 번역 시스템 3개를 단일 언어 문장으로 질의해 모방 모델을 만들었고, 원래 시스템과 BLEU 0.6 이내로 따라잡았다. 모방 모델에서 찾은 적대적 입력이 실제 서비스로 전이되었다.[7]

대형 언어 모델 증류형 추출

편집 원본 편집

대형 언어 모델에서는 API로 받은 응답을 합성 학습 데이터로 삼아 다른 모델을 미세조정하는 방식이 주된 형태다. OWASP는 2025년판에서 이를 무제한 소비(LLM10:2025) 항목 아래 "API를 통한 모델 추출"과 "기능적 모델 복제"로 적었고,[8] 2026년판은 무제한 소비(LLM06:2026)의 "모델 추출과 증류 탈취"로 이어 실으면서 로짓·로그 확률 노출이 추출을 크게 앞당긴다고 덧붙였다.[9]

실제 사례로, 구글 위협정보그룹은 2026년 2월 13일 제미나이 모델을 겨냥한 모델 추출(증류) 시도를 탐지해 막았다고 공개했다. 한 캠페인은 10만 건이 넘는 프롬프트로 제미나이가 내부 추론 과정을 그대로 출력하게 만들려 했고, 사고 내용을 사용자 입력과 같은 언어로 쓰라고 지시했다. 구글은 이를 영어가 아닌 언어에서 제미나이의 추론 능력을 복제하려는 시도로 분석했다. 구글은 이런 시도가 국가 지원 공격 조직이 아니라 세계 각지의 민간 기업과 연구자에게서 나왔으며, 허가 없는 증류는 이용약관 위반이라고 밝혔다. 탐지 시스템이 실시간으로 공격을 인식해 내부 추론 기록 노출 위험을 낮췄고, 학생 모델의 성능을 떨어뜨리는 능동 방어도 쓴다고 했다.[1] 구글은 정당한 증류 용도가 있고 자사 클라우드도 증류 기능을 제공한다고 함께 적었다. 즉 증류라는 기술 자체가 아니라 허가 없이 남의 모델 출력을 학습에 쓰는 것이 문제다. 자세한 사례 정리는 인공지능 관련 해킹 사례 문서에 있다.

로짓 기반 가중치 추출

편집 원본 편집

카를리니(Nicholas Carlini) 등은 2024년, 블랙박스 상용 언어 모델에서 가중치 일부를 정확히 뽑아내는 공격을 발표했다.[10] 원리는 트랜스포머의 마지막 층 구조에 있다.

언어 모델의 로짓은 숨은 상태 g(p)∈ℝh에 마지막 투영 행렬 W∈ℝl×h를 곱해 얻는다(l은 어휘 크기). 숨은 차원 h는 어휘 크기 l보다 훨씬 작으므로, 서로 다른 프롬프트 n개의 로짓 벡터를 쌓은 행렬 Q=[Wg(p1),…,Wg(pn)]∈ℝl×n의 계수(rank)는 h를 넘지 못한다.

  1. n>h개 프롬프트로 전체 로짓을 얻어 Q를 만든다.
  2. Q를 특이값 분해로 Q=UΣV⊤처럼 나누면 큰 특이값이 정확히 h개 나오고 그 뒤에서 급격히 작아진다. 이 위치가 숨은 차원이다.
  3. UΣ의 앞 h열은 WG(G는 알 수 없는 h×h 행렬)와 같다. 즉 W를 h×h 선형 변환만큼의 차이를 빼고 복원한다.

API가 전체 로짓을 주지 않아도 된다. 당시 OpenAI API는 상위 5개 토큰의 로그 확률을 돌려주고, 최대 300개 토큰에 -100~100 범위의 로짓 편향(logit bias)을 더할 수 있게 했다. 공격자는 큰 편향을 걸어 원하는 토큰 5개를 상위로 끌어올리고, 기준 토큰과의 로그 확률 차이에서 로짓 차이를 계산하는 질의를 반복해 전체 로짓 벡터를 재구성했다. 상위 1개 확률만 주고 편향을 {-1, 0}으로 제한한 API에서도 공격이 가능하다는 변형도 제시했다.

결과는 다음과 같다.

  • 20달러 미만으로 OpenAI의 ada, babbage 모델의 전체 투영 행렬을 추출했고, 숨은 차원이 각각 1,024와 2,048임을 처음 확인했다.
  • gpt-3.5-turbo는 200달러 미만의 질의로 숨은 차원 크기를 정확히 알아냈다. OpenAI가 맞다고 확인했지만 논문에는 숫자를 싣지 않았고, 전체 투영 행렬 추출에는 2,000달러 미만이 들 것으로 추정했다.
  • OpenAI의 사전 허락을 받아 진행했고, 공개 전 OpenAI와 구글에 알렸다. 두 회사 모두 공격을 막거나 비용을 높이는 쪽으로 API를 고쳤다.
  • 공개 모델로 검증할 때 GPT-2 Small은 768차원인데 757로 나왔는데, 저자들은 이 모델의 실효 숨은 차원이 757이기 때문이라고 설명했다.

마지막 층 하나만 얻은 것이라 모델 전체를 복제한 것은 아니다. 그러나 비공개였던 모델 폭을 알아냈다는 점, 그리고 로짓 편향이나 로그 확률처럼 사소해 보이는 API 매개변수가 보안에 영향을 준다는 점에서 의미가 크다.

모델 파일 탈취

편집 원본 편집

질의가 아니라 모델 파일 자체를 빼내는 경우도 넓게는 모델 추출로 부른다. 기기 안에서 도는 모델은 앱 패키지에서 꺼낼 수 있다. MITRE ATLAS는 구글 포토 안드로이드 앱에서 텐서플로 라이트 모델을 정적 역공학과 실행 중 복호화 시점 가로채기로 꺼낸 연구를 사례(AML.CS0058)로 실었다.[11] 서버의 가중치 파일을 침해로 훔치는 것은 일반 해킹에 가깝고, ATLAS도 추론 API를 통한 유출(AML.T0024)과 사이버 수단을 통한 유출을 나눈다.

방어 내용 한계
질의량·속도 제한 계정별 질의 상한, 요금 정책(ATLAS AML.M0004) 다수 계정·분산 질의로 우회. 정상 대량 사용자와 구분이 어렵다
출력 정보 줄이기 라벨만 반환, 신뢰도 반올림, 로그 확률·로짓 편향 제한, 추론 과정 요약 제공(AML.M0002) 기능이 줄어든다. 라벨만 줘도 학습 기반 추출은 가능하다[4]
잡음 추가 로짓에 잡음을 더해 가중치 추출을 막는다[10] 잡음이 클수록 결과 품질이 떨어진다
구조 변경 마지막 층의 숨은 차원을 어휘 크기 이상으로 늘리거나 직교 벡터를 덧붙여 계수 공격을 막는다[10] 학습 후 변경의 비용
추출 질의 탐지 PRADA(2018)는 연속 질의 사이 거리 분포가 정상 사용과 다르면 경보를 낸다. 당시 알려진 추출 공격을 오탐 없이 잡았다고 보고했다[12] 질의 분포를 정상처럼 꾸미는 공격자
워터마크 방어자만 아는 입력-출력 쌍을 모델에 학습시켜, 복제 모델에서 같은 반응이 나오면 도용을 증명한다. 얽힌 워터마크(EWE)는 정상 과제 특징과 워터마크를 얽어 제거하면 성능도 떨어지게 만들었고, 복제본에 100회 미만 질의로 95% 신뢰도의 소유권 증명을 보였다[13] 추출을 막지는 못하고 사후 증명용이다. 크리슈나 등은 API 워터마킹이 정교한 공격자에게는 효과가 없다고 보고했다
능동 방어 추출로 의심되는 질의에 학생 모델 성능을 떨어뜨리는 응답을 준다[1] 오탐 시 정상 사용자 피해
계약·법 이용약관에서 출력의 경쟁 모델 학습 금지, 위반 시 차단과 법적 조치[1] 기술적 차단은 아니다

AI 생성물에 표식을 남기는 AI 워터마크와는 목적이 다르다. 그쪽은 생성물의 출처 표시이고, 모델 워터마크는 모델 소유권 증명이다.

카를리니 등의 숨은 차원 복원 원리를 NumPy로 흉내 낸 예시다. 실제 공격은 로짓 편향과 상위 5개 로그 확률로 로짓 벡터를 재구성하는 단계가 앞에 붙는다. NumPy 2.1에서 실행하면 숨은 차원 256을 정확히 찾고 투영 행렬을 수치 오차 수준으로 복원한다.

import numpy as np

rng = np.random.default_rng(0)
h, vocab = 256, 5000                      # 숨은 차원, 어휘 크기 (공격자는 h를 모른다)
W = rng.normal(size=(vocab, h))           # 비밀: 마지막 투영 행렬

def api_logits(n):
    """API를 n번 호출해 전체 로짓 벡터를 받는다고 가정 (실제로는 logit bias로 복원)."""
    hidden = rng.normal(size=(n, h))      # 프롬프트마다 다른 마지막 은닉 상태
    return hidden @ W.T                   # (n, vocab)

Q = api_logits(400)                       # h보다 조금 많이 질의
s = np.linalg.svd(Q, compute_uv=False)
gap = np.argmax(np.log(s[:-1]) - np.log(s[1:]))
print("추정한 숨은 차원:", gap + 1)       # 256

U, S, Vt = np.linalg.svd(Q, full_matrices=False)
W_hat = Vt[:gap + 1].T                    # W와 같은 열공간 (h x h 변환만큼 차이)
G, *_ = np.linalg.lstsq(W_hat, W, rcond=None)
print("복원 오차(RMS):", np.sqrt(np.mean((W_hat @ G - W) ** 2)))
체계 항목
NIST AI 100-2 E2025 NISTAML.031 모델 추출(예측형), 생성형 AI는 NISTAML.038 데이터 추출에서 모델 가중치·구조 추출을 다룸[2]
OWASP LLM Top 10 LLM10:2025 무제한 소비(모델 추출, 기능적 모델 복제), LLM06:2026 무제한 소비(모델 추출과 증류 탈취)
OWASP ML Top 10(2023 초안) ML05 Model Theft[14]
MITRE ATLAS AML.T0024.002 Extract AI Model, AML.T0005.001 Train Proxy via Replication[11]
  1. ↑ 1.0 1.1 1.2 1.3 Google Threat Intelligence Group, GTIG AI Threat Tracker: Distillation, Experimentation, and (Continued) Integration of AI for Adversarial Use, 2026-02-13.
  2. ↑ 2.0 2.1 Apostol Vassilev 외, 〈Adversarial Machine Learning: A Taxonomy and Terminology of Attacks and Mitigations〉, NIST AI 100-2 E2025, 2025. doi:10.6028/NIST.AI.100-2e2025
  3. ↑ 3.0 3.1 Matthew Jagielski 외, 〈High Accuracy and High Fidelity Extraction of Neural Networks〉, USENIX Security 2020. arXiv:1909.01838
  4. ↑ 4.0 4.1 Florian Tramèr 외, 〈Stealing Machine Learning Models via Prediction APIs〉, USENIX Security 2016. arXiv:1609.02943
  5. ↑ Tribhuvanesh Orekondy, Bernt Schiele, Mario Fritz, 〈Knockoff Nets: Stealing Functionality of Black-Box Models〉, 2018. arXiv:1812.02766
  6. ↑ Kalpesh Krishna 외, 〈Thieves on Sesame Street! Model Extraction of BERT-based APIs〉, ICLR 2020. arXiv:1910.12366
  7. ↑ Eric Wallace, Mitchell Stern, Dawn Song, 〈Imitation Attacks and Defenses for Black-box Machine Translation Systems〉, EMNLP 2020. arXiv:2004.15015
  8. ↑ OWASP GenAI Security Project, LLM10:2025 Unbounded Consumption
  9. ↑ OWASP GenAI Security Project, OWASP Top 10 for LLM Applications 2026, 2026-08-03 공개.
  10. ↑ 10.0 10.1 10.2 Nicholas Carlini 외, 〈Stealing Part of a Production Language Model〉, ICML 2024. arXiv:2403.06634
  11. ↑ 11.0 11.1 MITRE, ATLAS 데이터 2026.09판(2026-09-15). 기법 AML.T0024.002 Extract AI Model, AML.T0005.001 Train Proxy via Replication, 완화책 AML.M0004 Limit AI Service Query Volume and Rate, AML.M0002 Predictive AI Output Obfuscation, 사례 AML.CS0058 Google Photos AI Model Extraction
  12. ↑ Mika Juuti 외, 〈PRADA: Protecting against DNN Model Stealing Attacks〉, 2018. arXiv:1805.02628
  13. ↑ Hengrui Jia 외, 〈Entangled Watermarks as a Defense against Model Extraction〉, 2020. arXiv:2002.12200
  14. ↑ OWASP, Machine Learning Security Top 10 2023판 초안