반응형
처음에 여기에서는 자동 등록 스팸 프로그램을 격퇴하기 위해서 카네기 멜론 대학(CMU)과 UCLA 버클리교의 연구자가 개발한 AI 애플리케이션의 구조를 소개하고, 같은 애플리케이션을 ASP.NET와 XML Web 서비스로 실현하는 방법에 대해 해설한다.대학에서의 연구는 오늘날의 기술적 발전과 뗄래야 뗄 수 없는 관계에 있다.여기에서는 CAPT CHA(Completely Automated Public Turing Test to Tell Computers and Humans Apart: 컴퓨터와 인간을 구별하는 완전히 자동화된 공개 튜링 테스트)의 설계, 개발, 사용에 대해 다룬다.우리는 일상 생활 속에서 다양한 형식의 CAPT CHA를 체험하고 있다.예를 들어 e메일 계정 로그인, DNS 룩업(whois) 실행, 화상을 사용해 인간과 소프트웨어 프로그램을 구별하는 구조 등이다.대형 벤더, Web포털, 전자메일 프로바이더는 서비스의 품질을 향상시키기 위해 반드시 CAPT CHA를 채택하고 있다.검색 엔진이나 Web 디렉토리는, 자율적인 부정 투고 프로그램에 의해서 검색 결과가 바뀌어 버리는 것을 막기 위해서 CAPT CHA를 이용하고 있다.온라인 투표 시스템에서는 프록시 어드레스의 위장이나 IP 스푸핑에 의해 투표 결과가 좌우될 수도 있기 때문에 이 기법을 이용해 다중투표를 방지하고 있다.패스워드에 대한 블루트포스 공격이나 사전공격에도 이 단순하지만 효과적인 기법으로 막는 것이 가능하다.여기에서는 우선 CAPT CHA의 간단한 역사적 배경을 소개하고 튜링 테스트의 정의와 기계의 ′시각′에 대해 설명한다.그 후, Yahoo!, AltaVista, PayPal 등의 포털이 각각의 디지털 자산을 보호하기 위해 CAPT CHA 접근방식을 어떻게 이용하고 있는지를 소개한다.마지막으로, Web 애플리케이션을 자율 봇으로부터 보호하기 위한 프로그램을 ASP.NET로 기술하는 방법에 대해 설명한다.이론적인 이야기는 차치하고, 화상을 조작하기 위한 코드에 ASP.NET 와 C#를 사용한다.3개의 샘플에서는, 화상의 동적 생성과 사전에 근거하는 CAPT CHA 방식의 화상의 작성, 그리고 그 화상을 반환하는 Web 서비스를 취급한다.또, CAPT CHA 외에, .NET 화상 라이브러리의 사용 방법, 화상을 동적으로 생성하는 방법, XML Web 서비스를 사용해 바이너리 데이터를 제공하는 방법에 대해서도 다룬다.CAPT CHA는 ′Completely Automated Public Turing Test to Tell Computers and Humans Apart(컴퓨터와 인간을 구별하는 완전히 자동화된 공개 튜링 테스트)′의 머리 글자어이다.이름에서 알 수 있듯이, 이것은 인간다움을 측정하기 위한 테스트다.CMU 컴퓨터 공학부의 Web 사이트에 있는 CAPT CHA의 홈 페이지에서는 다음과 같이 정의되어 있다.예를 들면 다음의 화상은, 본고의 후반에 소개하는 Web 서비스를 사용해 생성한 것이다.이는 컴퓨터 프로그램으로는 판독이 어렵지만 인간이라면 7세 어린이도 쉽게 읽을 수 있다.CAPCHA의 이용법과 Yahoo!에서의 구현 예 인터넷 상에서의 서비스 및 비즈니스가 급격하게 발전하고 있는 오늘날 온라인 보안은 소프트웨어 개발자, 설계자, 관리자, 벤더에게 중요한 과제가 되고 있다.인간의 흉내를 내거나 웹서핑 패턴을 모방하거나 온라인 활동을 위장하는 소프트웨어 프로그램도 증가하고 있다.이 같은 인간 행세 프로그램은 로봇 또는 가상 에이전트로 불린다.대표적인 예로서 전자 메일 주소에 대해서 블루트 포스 공격(총량 검색)을 실행하는 소프트웨어 프로그램 등이 있다.이 프로그램은, 올바른 것이 발견될 때까지 가능성이 있는 패스워드의 편성을 모두 시험하는 처리를 실시한다.이러한 스팸 봇에 의해 Web 투표, Web 등록, 자동화 서비스, 검색 엔진 투고 등의 서비스를 가진 디지털 자산은 다양한 위협에 노출되어 있다.이런 점 때문에 과학자들은 인간과 기계를 구별하는 자동 테스트의 필요성을 느끼고 있었다.그런 가운데, Yahoo!의 주임 연구자인 Udi Manber와 CMU 컴퓨터 공학부의 Manuel Blum 교수 및 대학원생은, Yahoo!의 사이트를 위해서, HTTP POST 를 사용해 폼을 몇번이나 재발송신하는 부정 루틴을 방지하는 CAPT CHA 서포트를 개발했다.라고 해도, 이것은 간단하게 해결할 수 있는 문제가 아니었다.Yahoo!의 Udi Manber는 이렇게 말하고 있다.대학에 있는 사람들은 늘 재미있는 문제를 찾는다.나와 같이 업계에 있는 사람은, 항상 재미있는 문제가 너무 있어 곤란해 하고 있다」. Yahoo!그럼, Yahoo!브리프 케이스, Yahoo!메일, Yahoo!그룹등의 서비스에 CAPT CHA를 도입하는 것으로, 이러한 서비스를 부정한 자동 등록으로부터 보호하고 있다.다음에 나타낸 예는, 사전 공격을 막기 위한 것으로, 화상내의 문자열을 입력하지 않으면 다음에 진행할 수 없게 되어 있다.이 화상은 동적으로 생성되어 액세스마다 변화한다.사용자 ID와 비밀번호가 맞더라도 이미지 내 텍스트를 올바르게 입력해야 로그인이 가능하기 때문에 인간과 컴퓨터를 구분할 수 있다.통상의 서비스 악용 프로그램이나 블루트포스 공격봇(로봇의 단축형, 자율 에이전트를 나타냄)은 이러한 화상 내의 문자를 읽을 수 없다.이를 읽기 위해서는 OCR(optical character recognition: 광학식 문자인식) 기능이 필요한데 설사 뛰어난 화상인식기능을 가진 OCR이 있다고 해도 HTML 내에 있는 다음과 같은 화상의 파일명을 읽는 것이 어려울 것이다.http://reg.yimg.com/i/retcQ.dZFemtHS_cf_8Qk12i.XyVGZ2Ej2qW7dKNiIqt0C1AF6mlqmWnUuLe.jpg 파일명은 긴 랜덤 문자열로 되어 있으며 문자열 조회를 위해 이 화상파일의 해시 인코딩을 포함하고 있다.나중에 자세히 설명하겠다.또, 이 HTML 폼에는, 공격에 대비해 다음과 같은 숨겨진 필드가 포함되어 있다. 이 이미지는 디스크상에 저장되어 있어 위의 그림과 같이 개별적으로 액세스 할 수도 있지만, 역시 OCR에서의 판독은 어렵다.이 텍스트는 아핀 변환(경사, 스트레치, 확대 축소)되었기 때문에 패턴 매칭에 근거해 문자를 인식하는 OCR에게 있어서는 난이도가 높다.OCR의 문자 인식 방법이 인간과는 전혀 다르기 때문이다.인간은 단지 문자의 형태를 읽는 것이 아니라, 그 문자열의 의미나 전후의 흐름을 밟은 다음 읽기 때문에, 다소 보기 어려워도 판독할 수 있다.한편, 기계의 시각에서는 그렇게는 되지 않는다.뒤죽박죽인 배경 속에서 ′t′와 ′i′가 붙어서 배치되어 있고, 게다가 그라데이션이나 노이즈가 걸려 있는 경우에는 OCR로 읽어내는 것은 매우 어렵다.이와 같이, 화상은 봇에 의한 자동 등록을 막는 유효한 대책의 하나이지만, 계속 막을 수는 없다.봇 작성자는 방어책에 대항하기 위해서 그러한 화상을 읽어내는 OCR 테크닉을 이용해 계속 자동등록을 실시할 것이다.그러나 예측 가능한 그리드상에 단순한 텍스트를 배치한 CAPT CHA 화상보다 경사나 트위스트, 왜곡을 가한 화상을 이용하면 봇을 방지할 가능성이 훨씬 높아진다.기계는 문자열의 의미나 전후의 흐름을 토대로 한 다음 읽어내는 것을 하지 않기 때문에 노이즈나 아핀 변환(특히 거울상으로 하거나 XY축의 방향을 바꾸거나 하는 등), 분할, 경사, 겹침, 열화 등이 적용된 문자를 판독하는 것은 매우 어렵다.기계가 화상을 보는 방법으로는 인도의 여섯 맹인(The Blind Men and the Elephant)의 이야기처럼 한 글자를 따로따로 해석할 수도 있다.다양한 CAPCHA 최근 증가하고 있는 인텔리전트한 봇을 상정해 CMU는 다양한 종류의 테스트를 작성하고 있다.여기에서는 Gimpy, Bongo, Pix, Sounds, Byan에 대해 소개한다.CMU에 따르면 Gimpy는 가장 신뢰할 수 있는 시스템으로 여겨지고 있다.그리고 다음과 같이 적혀 있다.이는 원래 Yahoo!와의 공동개발에 의한 것으로 Yahoo!의 대화방에서 봇을 배제하는 것, 대량의 전자우편 주소를 취득하려는 스크립트를 방지하는 것, 안내광고를 표시하는 컴퓨터 프로그램을 방지하는 것을 목적으로 한다.Gimpy에서는 본고 후반에 소개하는 웹 서비스나 어플리케이션과 마찬가지로 사전에서 일정 수의 단어를 골라 노이즈를 추가하거나 왜곡한 후 화상으로 표시하고 화상 내의 텍스트를 입력하도록 사용자에게 요구한다.인간이라면 간단하게 입력할 수 있지만, 봇의 경우는 그렇게는 되지 않는다.다음 그림은 Gimpy에서 생성한 CAPT CHA 이미지의 예이다.Bongo는 다음과 같은 시각적인 패턴 인식을 사용자에게 요구하는 프로그램이다.자세한 것은 CMU CAPTCHA의 Web 사이트를 참조해 주었으면 한다.이 프로그램은, 몇개의 화상을 랜덤으로 표시해, 그 중에서 공통되는 것을 유저에게 질문한다.이것은 참신하고 지적인 방법이며, 이 방법을 사용하면 상당 기간 봇을 배제할 수 있을 것이다.다음 그림이 픽스의 사용 예이다.그 이름대로, 이것은 음성 방식의 Gimpy이다.Sounds에서는 단어 또는 일련의 숫자를 랜덤으로 선택하여 품질 낮은 사운드 클립을 생성한다.이 같은 애플리케이션을 공략하기 위해서는 OCR뿐 아니라 음성인식 기능도 갖춘 봇이 필요하다.기업에서의 CAPT CHA 이용 예 여기서는 실제 Web 어플리케이션에서 자동투고나 자동등록을 막기 위해 CAPCHA가 어떻게 사용되고 있는지를 소개한다.검색 결과의 무결성을 유지하기 위해 랜덤 문자화상을 사용해 자동 스팸 등록 프로그램을 거부하고 있다.이메일 서비스에 대한 자동 등록을 막기 위해 CAPT CHA를 이용하고 있다.Hotmail.com FAQ에서는 등록 절차에서 이미지 문자를 입력하는 것은 왜 입니까(why do I need to type characters from a picture to register?)라는 질문에 대해 다음과 같이 답변하고 있다.Hotmail은 한 걸음 더 나아가 장애인과 왜곡된 화상을 읽기 어려운 사람을 위해 음성방식의 확인방법을 도입하고 있다.서비스의 악용을 막기 위해서 CAPT CHA를 채용하고 있다.MSN 포털에서는, 로그 인폼에 CAPT CHA를 도입하는 것으로, 서비스의 악용을 방지하고 있다.Parasoft의 포털에서는 로그 인폼에 CAPT CHA를 도입함으로써 서비스를 보호하고 있다.
반응형