안경잡이개발자

컴퓨터 공학 논문 +1
728x90
반응형

No Bot Expects the DeepCAPTCHA!

Introducing Immutable Adversarial Examples with Applications to CAPTCHA

 

  2017년도 논문이다.

 

※ 대충 Background에 대해서 알아보자 ※

 

  캡차가 뭘까? 캡차는 대충 이런 것들을 말한다. 어떤 개체가 사람인지 판별하는 테스트를 역 튜링 테스트라고 하는데, 보통 DDoS와 같은 공격을 방어하기 위해 사용된다.

 

 

  좋은 캡차(Captcha)라면 인공 지능(AI)이 해결하기 어렵지만, 인간이 해결하기에는 쉬워야 한다. 애초에 캡차는 인공 지능을 막고, 인간을 허용하기 위해 만들어졌기 때문이다. 심지어 Image Recognition 기술이 인간을 추월한 지금 이미지 기반의 캡차를 뚫는 것은 매우 쉬울 것 같은 예감이 든다. 실제로 13년 ~ 14년에 쓰인 논문을 보면, 딥 러닝의 개발은 캡차를 매우 쉽게 뚫을 것이라고 예측한 논문들이 많이 등장한다... ㅋㅋㅋ

 

  하지만 Adversarial Example이 등장하면 어떨까?

 

  Adversarial Example은 15년 ~ 17년 정도에 매우 활발히 연구가 되었던 분야인데 (지금도 많은 논문이 쓰이고 있다.), 원래의 Clean Image Data에 Perturbation을 주면 인간에게는 영향이 적지만 딥 러닝 모델에게는 큰 영향을 주는 Adversarial Example을 만들 수 있다. 이러한 Adversarial Example은 딥 러닝의 Misclassification을 유도하게 된다. 더불어 Perturbation은 Transferability한 특성을 가지고 있기 때문에, 많은 DL에 공통적으로 적용될 수 있다.

 

  더불어서 이러한 Adversarial Example에 대항하기 위하여 ML 커뮤니티에서는 모델의 Robustness를 위한 Adversarial Training을 제안한다. Adversarial Training은 말 그대로 딥 러닝 모델을 학습시킬 때 Adversarial Example을 함께 학습시키는 방법이다. 이것보다 더 정교한 네트워크를 만드는 방법 또한 다수 제시되었다. 기본적으로 비선형적인 함수를 만들기 위해 사용하는 활성화 함수 등은 Piecewise Linear한 특성을 가지고 있어서 Adversarial Example에 취약한 것인데, Radial Basis Functions (RBF)는 그러한 약점이 적은 편이다. 다시 말해 RBF는 Adversarial Example에 대하여 Robustness를 가지고 있다고 알려져 있는데, 이 친구는 실제 이미지 분류에 있어서 Practical하지는 않다. ㅠㅠ

 

※ 본 논문의 제안 ※

 

  Adversarial Example은 어떻게 보면 DL의 약점인데, 보안적인 측면에서 보았을 때 캡차(Captcha) 서비스에게는 상당히 좋은 희소식이다. 본 논문에서는 많은 수의 클래스를 포함하는 Classification 프레임워크 내에서 Captcha를 생성할 때 Immutable한 Adversarial Example을 섞는 아이디어를 제안한다.

 

  한 번 구글의 reCaptcha V2를 살펴 보자. 구글의 reCaptcha 서비스는, 일단 버튼을 누르도록 한 뒤에 인공지능인지 인간인지 판단하기 어려울 때는 이미지 캡차를 보여준다. 대략 아래와 같은 이미지를 보여준다. "아래 그림에서 자동차를 모두 선택하세요."와 같이 말이다.

 

 

   캡차에서의 아래 그림은 인간에게는 자동차처럼 보인다.

 

 

  하지만 실제로 머신러닝 모델에게 이 이미지를 보여주면 자동차(Car)가 아닌 것으로 분류된다.

 

 

  그렇다. 이미 Google은 Captcha에 Adversarial Example을 넣고 있다. 내가 만약 CNN 기반의 Captcha Hacking 모델을 만들었다면 이것을 자동차(Car)라고 분류하는 것에 실패하여 인공지능임을 들켰을 것이다. 흠... 그런데 이게 정말 Captcha Hacking 도구에 대하여 강력할까?

 

  일반적으로 Captcha Solver들은, Captcha를 해독할 때 먼저 필터(Perturbation)를 제거하고, 공격을 수행한다. 다시 말해 노이즈를 추가한 이미지를 제시해도, Captcha Solver가 Perturbation을 먼저 제거한 뒤에 캡차를 뚫을 수도 있다. 보통 전처리(Preprocessing)이라고 불리는 과정이 이러한 것인데, 우리는 이것에 대항할 수 있어야 한다. 따라서 Perturbation을 쉽게 제거할 수 없는 방안을 마련하면 좋을 것이다.

 

  이 논문에서는 Perturbation을 제거할 수 없도록 하는 방법을 제안한다. 이러한 활동은 Captcha 영역에서 특히나 유용하게 사용될 수 있기 때문에 논문의 제목이 DeepCaptcha인 것 같다.

 

  다만 일반적인 Adversarial Example을 생성하는 문제와는 약간 다른 상황으로 정의할 수 있다.

 

- Captcha는 1초에 수백 만개를 생성해야 되기 때문에 빠르게 Adversarial Example을 만들 수 있어야 한다.

- Perturbation이 쉽게 Filtering 되지 않도록 만들어야 한다.

 

  본 논문에서는 이러한 문제 상황에 효과적인 IAN Scheme을 제시하고 있다.

 

  난 여기에서 아무래도 이러한 문제 상황에서는 FGSM과 같이 빠르게 Adversarial Example을 만드는 방법이 효과적으로 사용될 수 있을 것 같다는 생각이 들었는데, 본 논문에서도 해당 방법에 대해 소개하고 있다. 그리고 FGSM과 비교했을 때의 IAN을 보여준다. 확인 결과 FGSM과 비교했을 때 많이 느리지 않으며, Adversarial Success 및 Resistance Level은 상당히 높다.

 

 

  일반적으로 MNIST에 대한 Adversarial Example은 Thresholding을 이용하여 거의 대부분의 노이즈 제거가 될 수 있다는 연구 결과가 있다. FGS의 경우를 살펴 보면, Thresholding 기법을 이용하여 97.6%이나 노이즈 필터링에 성공한 것을 알 수 있다. 칼라 이미지의 경우 60% 정도이긴 하지만, 이 또한 적은 양은 아니다.

 

  하지만 본 논문에서의 IAN을 이용했더니 노이즈를 전혀 제거할 수 없었으며(0%), Adversarial Success가 100%이었다. 어떻게 IAN을 설계했길래 이렇게 높은 성능을 보이는 걸까?

 

 

728x90
반응형