게시글 삭제
정말 삭제하시겠습니까?
[꼼꼼한 논문 리뷰] Obfuscated Gradients Give a False Sense of Security [ICML 2018] (인공지능 보안)
[주요 목차]
Obfuscated Gradients 현상, 왜 대부분의 디펜스가 실패했나
BPDA·EOT·리파라미터라이제이션, 실제 공격은 어떻게 이뤄지나
ICML 2018 논문 9개 케이스 스터디와 실전 시사점
인공지능 보안 분야에서 adversarial example 공격이 본격화되면서, 2018년 ICML에 발표된 'Obfuscated Gradients Give a False Sense of Security' 논문이 큰 반향을 일으켰는데요. 최근 통계를 보면 2018년 당시 ICML에 제출된 디펜스 논문 9편 중 7편이 이 논문에서 지적한 문제를 그대로 안고 있었죠. Obfuscated Gradients 현상은 모델이 진짜 강건해지지 않고 그저 gradient 값을 숨기는 방식으로 방어 효과를 과장하는 문제를 말합니다. False Sense of Security라는 제목처럼, 실제로는 공격에 취약하면서도 숫자상으로는 방어가 된 것처럼 보이는 착시를 만들어냈거든요. 이 글을 읽으면 Obfuscated Gradients가 어떤 유형으로 나타나는지, BPDA·EOT 같은 우회 공격이 어떻게 동작하는지, 그리고 실제로 어떤 디펜스 기법이 살아남았는지까지 한 번에 정리할 수 있어요. 인공지능 보안 실무자라면 꼭 알아둬야 할 핵심 내용을 데이터와 사례 중심으로 풀어보겠습니다.
[꼼꼼한 논문 리뷰] Obfuscated Gradients Give a False Sense of Security [ICML 2018] (인공지능 보안) · 주요 포인트 1
Obfuscated Gradients 현상, 왜 대부분의 디펜스가 실패했나
2015년 FGSM 이후 adversarial example 공격이 급격히 강력해지면서, 2017~2018년 사이에 수많은 디펜스 논문이 쏟아졌는데요. 그런데 이 논문은 당시 제안된 디펜스 대부분이 'gradient masking'에 의존하고 있었다고 지적합니다.
Obfuscated Gradients는 크게 세 가지 유형으로 나뉩니다. Shattered Gradients는 미분 불가능한 연산을 넣어 gradient 자체를 없애는 경우, Stochastic Gradients는 랜덤성을 섞어 확률적 gradient를 만들어내는 경우, 그리고 Vanishing/Exploding Gradients는 연산이 너무 깊어 gradient가 사라지거나 폭발하는 경우죠.
최근 실험 결과를 보면, 이런 기법들은 white-box 공격에서는 90% 이상 방어율을 보였지만 black-box 공격에서는 30~40%까지 급락하는 패턴이 반복됐습니다. 즉 모델이 실제로 robust해진 게 아니라, 공격자가 gradient를 제대로 계산하지 못하게 막은 것뿐이었거든요.
이 현상을 처음 체계적으로 분류한 점이 이 논문의 첫 번째 기여입니다. 이전 연구에서는 gradient masking이 '진짜 방어가 아니다'라고만 언급했는데, 이 논문은 이를 3가지 타입으로 세분화하고 각각에 맞는 우회 전략까지 제시했죠.
덕분에 이후 디펜스 논문들은 '단순히 gradient를 숨기는 것'이 아니라 '실제로 decision boundary를 강화하는 것'에 집중하게 됐습니다. 업계에서 주목하는 이유는 바로 이 분류 체계가 지금도 adversarial robustness 평가의 기본 프레임워크로 쓰이고 있기 때문이에요.
[꼼꼼한 논문 리뷰] Obfuscated Gradients Give a False Sense of Security [ICML 2018] (인공지능 보안) · 본문 이미지 2
BPDA·EOT·리파라미터라이제이션, 실제 공격은 어떻게 이뤄지나
Obfuscated Gradients를 우회하기 위해 이 논문이 제안한 핵심 공격 기법이 BPDA입니다. 미분 불가능한 레이어가 중간에 껴 있을 때, 원래 함수와 비슷한 기능을 하는 미분 가능한 근사 함수를 만들어 대신 미분을 수행하는 방식이죠.
예를 들어 입력값을 이진화하는 Shattered Gradients 디펜스가 있다고 가정하면, BPDA는 이진화 연산을 ReLU-like 함수로 대체해 gradient를 근사합니다. 실제 실험에서는 100번 이상 반복 최적화를 돌렸을 때 원래 공격 성공률이 95% 이상 회복되는 결과가 나왔습니다.
Stochastic Gradients 유형에는 EOT(Expectation Over Transformation)가 효과적입니다. 랜덤 회전·스케일링이 들어갈 때마다 이미지를 여러 번 샘플링해 gradient의 기대값을 계산하는 거예요. 논문 실험에서는 10~20회 샘플링만으로도 랜덤성을 대부분 상쇄할 수 있었습니다.
Vanishing/Exploding Gradients에는 리파라미터라이제이션이 쓰입니다. 모델 전체를 한 번에 미분하는 대신, generator가 만든 manifold 위에서 최적화를 수행해 gradient 소실 문제를 피하는 방식이죠.
이 세 기법 모두 white-box 설정에서 단일 모델에 대해 90% 이상의 공격 성공률을 기록했습니다. 특히 BPDA는 미분 불가능 연산이 있어도 0.03 이하의 perturbation으로 성공하는 경우가 많았는데요.
실무 팁으로는, 새로운 디펜스를 평가할 때 반드시 이 세 가지 공격을 모두 적용해보는 것이 중요합니다. 단일 공격만으로 '안전하다'고 결론 내리면 False Sense of Security에 빠질 위험이 커지거든요.
[꼼꼼한 논문 리뷰] Obfuscated Gradients Give a False Sense of Security [ICML 2018] (인공지능 보안) · 현장 스냅 3
ICML 2018 논문 9개 케이스 스터디와 실전 시사점
논문은 ICML 2018에 발표된 white-box 디펜스 9편을 직접 분석했습니다. 그중 7편이 Obfuscated Gradients에 해당했고, 6편은 BPDA·EOT 조합으로 100% 공격 성공률을 기록했죠.
예를 들어 Thermometer Encoding은 Shattered Gradients 유형으로 분류됐고, BPDA로 쉽게 우회됐습니다. Input Transformation 계열은 Stochastic Gradients로, EOT로 대부분 무력화됐고요. LID(Local Intrinsic Dimensionality) 역시 Vanishing Gradients 문제로 인해 high-confidence 공격에 취약했습니다.
반면 Adversarial Training(Madry et al.)은 Obfuscated Gradients 현상이 발생하지 않는 유일한 방법으로 남았습니다. 이 기법은 decision boundary 자체를 강화하기 때문에 gradient를 숨길 필요가 없었거든요.
실전에서 적용할 때 가장 중요한 점은, 디펜스를 설계할 때 'gradient를 계산하기 어렵게 만드는' 방향이 아니라 '모델이 진짜 robust한 feature를 학습하게 만드는' 방향으로 가야 한다는 것입니다.
또한 논문은 소스 코드 공개와 adaptive attack 평가를 강조합니다. 2018년 이후 robustness 벤치마크에서는 BPDA·EOT를 기본 공격으로 포함시키는 추세인데요.
인공지능 보안 프로젝트를 진행 중이라면, 지금 당장 기존 디펜스 코드를 BPDA로 테스트해보는 것을 추천합니다. 대부분의 경우 생각보다 쉽게 뚫리는 것을 확인할 수 있을 거예요.
[자주 묻는 질문]
Obfuscated Gradients가 발생하는 디펜스를 어떻게 미리 피할 수 있나요?
디펜스 설계 단계에서 gradient masking을 의도적으로 넣지 않는 것이 핵심입니다. 미분 불가능 연산이나 랜덤 변환을 넣을 때는 반드시 BPDA와 EOT를 적용해 공격 성공률을 측정해야 해요. 또한 Adversarial Training을 기반으로 하되, 추가적인 masking 기법을 섞지 않는 것이 안전합니다. 실제로 Madry의 Adversarial Training 모델이 현재까지도 white-box에서 가장 높은 robustness를 유지하고 있죠.
BPDA를 실제 코드로 구현할 때 주의할 점은 무엇인가요?
BPDA는 미분 불가능 레이어를 근사하는 함수를 따로 정의해야 합니다. Forward pass에서는 원래 함수를 그대로 쓰고, backward pass에서만 근사 함수로 gradient를 계산하는 구조로 만들어야 해요. 논문 저자들이 공개한 코드를 보면, ReLU-like 함수로 대체하는 패턴이 가장 많이 사용됩니다. 반복 횟수를 100회 이상으로 늘리면 대부분의 Shattered Gradients를 우회할 수 있습니다.
Adversarial Training 외에 Obfuscated Gradients를 피하는 다른 방법이 있나요?
현재까지는 Adversarial Training이 가장 확실한 방법으로 평가받고 있습니다. 다만 대규모 데이터셋에서는 학습 비용이 높다는 단점이 있어요. 최근에는 TRADES나 MART 같은 변형 기법이 제안됐는데, 이들도 gradient masking 없이 decision boundary를 강화하는 방향으로 설계됐습니다. 새로운 디펜스를 제안할 때는 반드시 BPDA·EOT·리파라미터라이제이션 세 가지 공격을 모두 통과해야 신뢰할 수 있습니다.