CAPTCHA

Posted by HealingCamp
2017. 3. 26. 16:01 생활정보

1. 개요


Completely Automated Public Turing test to tell Computers and Humans Apart


웹사이트에서 사람이 접근하려고 하는 것인지 봇이 접근하는 것인지 판단하기 위하여 사용되는 테스트. 실제로 (전공자 혹은 관련 직종에 종사하고 있는 사람이 아닌 이상) 이 명칭을 알고 있는 사람은 드물기에 직접 검색해서 들어온 사람이 신기할 정도.


캡챠 1.0과 2.0으로 나뉜다. 1.0은 문자를 쳐서 입력하며, 2.0은 누르기만 하면 된다.(사진 고르기도 등장한다)



2. 유래

1999년에 최고의 컴퓨터 과학 프로그램을 가진 대학을 뽑는 투표가 인터넷 상에서 이루어졌다. 이때 카네기 멜런 대학교와 매사추세츠 공과대학교의 학생들이 자동으로 투표를 하는 프로그램을 만들어 매우 많은 투표를 얻었는데, 이후 이런 것들을 방지하기 위해 만들어졌다고 한다.

3. 상세

테스트 방식은 매우 단순하다. 출력된 숫자나 글자를 있는 그대로 입력란에 입력하고 확인을 받으면 끝. 이런 작업은 프로그램으로서는 진행할 수 없고 오직 유동적으로 사고할 수 있는 사람만이 할 수 있기 때문에 이게 사람인지 봇인지를 판별하는데 유용하게 사용된다. 물론 화면상의 텍스트가 폰트를 있는 그대로 사용하는 거라면 프로그램도 당연히 맞힐 수 있으므로 변형을 준다. 글자를 휘거나 글자의 가로획을 이어 버린다거나 등등. 아니면 호실/번호판 등을 흐린 이미지로 보여주기도 한다.


단순해 보이지만 특성상 프로그램이나 인공지능이 뚫기가 매우 어렵다. 정교한 CAPTCHA는 바둑을 인공지능으로 풀어내는 것 이상으로 어렵다고 봐야 한다. 이는 이미지 인식, 음성 인식 같은 분야들의 공통점이다. OCR만 해도 이 정도로 발전하기까지 20년 이상의 세월이 걸렸다(!) 20년 전의 OCR은 그야말로...


특히 스팸 방지를 위해 많이 쓰인다. 스팸 소프트웨어의 자동 계정 등록을 막기 위해 계정 등록할 때 거치는 테스트로 이미지 단어를 보여준 뒤 그 단어를 쓰는 것으로 사용자의 명령을 수행하는 프로세스로 진행. 


물론 소프트웨어가 진화하다 보면 그냥 숫자나 글자는 인식해버리기도 하는지라, 가끔 단어를 시각적으로 변형시킨 복잡한 패턴을 사용하기 때문에 심하면 사람이 봐도 이게 글자인지 뭔지 모를 단어를 보여주고 입력하라고 하는 경우가 있다. 이런 경우를 대비해서 친절하게 해결책이 마련되어 있는데, 단어를 새로 고침하거나 단어를 직접 외계어음성으로 들려주어 입력하게끔 하는 옵션을 이용하면 된다.


일반적인 CAPTCHA 패턴은 사람은 쉽게 알아볼 수 있지만 스팸 소프트웨어나 봇은 자동으로 인식할 수 없다. 결과적으로는 자동 계정 생성이나 메일 자동 발송 등을 어렵게 하여 스팸을 차단하는 효과를 보게 되는 것. 사실 이런 게 가능한 이유는 CAPTCHA에 들어가는 연산의 대부분이 일단 실행된 뒤에는 되돌릴 수 없는, 비가역적 연산이기 때문이다. 그럴 만도 한 게, 대부분이 글자를 비틀거나 회전시키는 등, 역연산이 존재하지 않는 방법으로 글자를 왜곡한다. 같은 이유로 JPEG으로 저장된 이미지를 완벽하게 복원하는 것도 불가능하다.


하지만, 이미 문자 기반의 CAPTCHA 중 일부는 연구자들에 의해 뚫린 상태. 이를 보완하기 위해 문자 대신 이미지를 변형시키는 형태도 연구되고 있다. 특히 이미지 기반의 CAPTCHA는 이미지 특성상 특정 문화에 익숙해져 있지 않으면 맞히기 어렵게 하는 경우(예 : 세종, 태극기, 무궁화 등)도 있어 해외 스패머들을 막을 수 있지만, 이미지를 이용하기 때문에 데이터베이스의 크기가 커질 수 있다는 단점을 지니고 있다.


사실, 대부분의 CAPTCHA들이 과학자 커뮤니티에 나와 있는 상용 프로그램을 사용하면 10-20%의 확률로 뚫린다. 10-20%면 낮아 보이지만, 컴퓨터의 특성상 1분에 수천, 수만, 수억번 시도해 볼 수 있기 때문에, 모든 CAPTCHA는 결국에는 뚫린다라고 말할 수 있다. 하지만, 해커라고 하기에도 단순무식해보이는 방법을 쓰는 사람들이 이런 컴퓨터 비전 소프트웨어를 쓰면서까지 CAPTCHA를 뚫으려고 하지는 않는데, 인터넷 상에는 CAPTCHA 안 뚫어도 쉽게 가입할 수 있는 대체 웹사이트나 서비스가 많기 때문.


CAPTCHA의 단점은 기본적으로 웹 접근성에 위배된다는 점이다. 특성상 이미지를 보고 텍스트화를 해야 되기 때문에, 이미지를 볼 수 없는 시각장애인은 CAPTCHA를 통과할 수 없다는 문제점이 있다. 시각장애인을 위한 텍스트 리더 프로그램은 이미지로 된 CAPTCHA를 읽지 못하기 때문. 이 때문에 요즘 CAPTCHA에는 음성으로 읽어주는 오디오 기능이 들어가 있다. 이 오디오 기능을 이용해서 프로그램으로 CAPTCHA를 뚫는 경우도 있다. 음성의 경우 정도의 차이는 있지만 명확하게 나오기 때문이다. 시각장애인이 아니더라도 눈이 조금 안 좋은 사람도 통과하기 매우 힘든 CAPTCHA들도 있는데다가 거의 로마자 알파벳이기 때문에 알파벳 모양에 익숙하지 않은 사람들, 노인들에게는 헬이 펼쳐진다. 시각과 청각이 모두 안 좋거나 스피커가 없는 환경일 경우도 문제.


설정에 따라서는 대소문자나 띄어쓰기 혹은 점 하나만 틀려도 까칠하게 오답처리할 수도 있고, 한두글자 정도는 틀려도 그냥 넘어가도록 설정할 수도 있다.


CAPTCHA를 설치했는데도 우르르 스팸 게시물이 등록되는 경우가 종종 있는데, 이건 CAPTCHA의 결함이라기보다는 게시판이나 서버에 보안 구멍이 있는 경우가 많다. 보안 구멍을 이용해서 CAPTCHA를 우회하는 것. 만약 CAPTCHA가 설치되어 있는데도 스팸 게시물이 많이 등록된다면 CAPTCHA만 맹신하지 말고 게시판이나 서버에 다른 경로로 게시물이 등록되는 것이 가능한지도 점검해 봐야 한다.



4. reCAPTCHA

Easy for People. Hard for Bots


CAPTCHA의 종류 중 많이 쓰이는 reCAPTCHA라는 것은 사실 구글에서 고서의 내용을 처리하는데 사용되고 있다. 이것의 정체는 구글이 보유하고 있는 고서 스캔 데이터에서 자동 처리에 실패한 단어들의 이미지를 따온 뒤, 그것을 사람이 보고 입력하도록 함으로서 이미지를 텍스트로 바꾸는 프로그램이다. 고서 번역에 기여하자. 즉, 한마디로 말하자면 인간 OCR 프로그램. 네놈은 그냥 하루하루 구글신에게 텍스트를 갖다 바치는 OCR일 뿐이지! 이 때문에 reCAPTCHA에 나오는 단어 중에는 옛날에나 사용되던 좀 생소한 단어들이 섞여 있다.


reCAPTCHA에서 나오는 문제를 보면 꼭 단어가 두 개씩 짝을 이뤄서 나온다. 둘 중 하나는 이미 연산을 통해 데이터로 처리가 된 단어고, 나머지 하나는 아직 처리가 안 된 단어이다. 전자는 답이 밝혀져 있는데 후자는 답이 밝혀져있지 않다. 하지만 전자를 맞히면 (사람이 입력한 이상) 후자도 정답일 확률이 높다고 처리하는 식으로 연산하는 것.


reCAPTCHA는 무료로 쓸 수 있다.

2014년 4월 10일에 중국 연구팀이 reCAPTCHA의 해킹을 성공했다.


5. no CAPTCHA


no CAPTCHA 개발자 블로그 글 공식 홈페이지

여러 웹사이트에서 채택한 방식. 기존의 캡차는 사람조차 알아보기 힘들어서 가끔 사람도 오타를 낸다. 이러한 문제를 해결하기 위해 구글에서는 2014년 12월 노 캡차 (No CAPTCHA)를 개발했다.

http://4.bp.blogspot.com/-wt7yljKcU_8/VH5MJTUCBOI/AAAAAAAAACw/WKqE3ixUUdw/s1600/Recaptcha_anchor%402x.gif
통상적인 경우 사람 특유의 마우스 포인팅, 클릭/터치 패턴, 쿠키 값, 기타 알려지지 않은 구분방법을 통해 구별해 낸다.

http://4.bp.blogspot.com/-3ylGBdjKA08/VH5MJ0jAuYI/AAAAAAAAAC4/m8QhettQP1Y/s1600/cat_captcha.png
만약 클릭 단계에서 사람임을 확인할 수 없었다면 맞는 그림 찾기가 실행된다. 최근 대세가 되고 있는 사물 인식 까지도 전 세계 사람들을 써먹으려나 보다.

http://4.bp.blogspot.com/-sLrMDmf4gOc/VH5MJRg7VnI/AAAAAAAAACU/svXWqwOpyds/s1600/CAPTCHA.png
그 때마저도 사람과 구분이 안된다면 전통적인 캡차를 실행한다.

어째 4chan에서는 가끔씩 개그의 대상이 되기도 한다. 샌드위치를 고르라는데 햄버거치까지 골라야 하거나[7], 지속적으로 피자캡차만 나와서 배가 고파진다는 등.

사물 인식은 사진이 작고 잘 보이지 않아 어려울 때도 있다. 생전 들어본 적도 없는 것을 고르라고 하면 당황스럽다. 또한 다른 언어 사용자들도 어려움을 겪기도 하는데, 한글 표시중에서 당구대(pool table)를 고르라는 캡챠가 "수영장 탁자를 고르시오"로 오역되었다. 이는 수영장과 당구가 영어로 동음이의어(pool)라서 벌어진 해프닝.

그리고 가끔 고양이 코스프레한 강아지가 나와서 흠좀무한 상황이 나오기도 한다. 이 때는 강아지로 인식된다.

https://pbs.twimg.com/media/CORSqksWsAErkao.jpg

나는 로봇이 아니에요라는 표현 때문에 가끔은 이런 이미지가 나오기도 한다.


사람을 로봇 취급해 싫어하는 사람도 있다고 한다. 이럼 체크 안하는 로봇이 얼마나 있을까??


'로봇이 아닙니다'라는 문장 때문에 로봇이나 인조인간인 여러 캐릭터들이 인터넷을 쓰지 못한다는 드립들도 있다.


'표지판이 있는 타일을 모두 누르세요' 같은 질문이 나오기도 하는데, 심히 귀찮다. 기존의 질문에 비해 간단하긴 하지만, 6개의 타일을 눌러야 하는 질문이 꽤 자주 나오기 때문. 간혹가다 타일 전체(...)를 눌러야 되는 질문이 나오기도 한다. 더불어 타일을 클릭하면 새로운 타일이 뜨는 유형도 나오는데, 클릭해야 하는 타일의 수도 많은 편이고 시간도 오래 걸려서 스트레스를 선사한다.

참고로 도로 표지판이 문제인 경우, 보통 기둥까지 전부 선택해야 정답으로 인정된다.


언젠가부터 도로 표지판을 포함한 주변을 선택하십시오 같은 것도 있다. 모바일에서 이 캡챠를 풀기는 매우 어려우므로 캡챠를 새로고침하자.도로 표지판은 역시 구글답게 세계 각지표지판이 나오지만 한국 표지판도 나오는데 한 위키니트가 확인한바에 따르면 전라남도에 소재한 '금영로'라는 도로 표지판이다.

6. 한국에서는?

한국에서는 좀처럼 보기 힘든 인증 시스템이기도 하다. 한국은 기본적으로 대부분의 사이트에 가입시, 아이핀이나 휴대폰 번호, 공인인증서 같은 인증 가능한 제한적 수단을 요구하기 때문에 굳이 CAPTCHA가 필요하지 않은 상황이다. 정 스패머가 이런 과정을 거쳐 정상 등록을 한다손 쳐도 그냥 그 계정을 차단해버리면 그만이다. 인증용으로 사용되는 특정 아이핀이나 전화번호 등에 아이디 생성 개수 제한이 걸려있기 때문에 돌려쓰기도 불가능한고로 오래 버티기도 힘들다. 놀라운 한국의 시스템... 다른 나라들도 본받자(뭐? 계정을 만들기 위해 계정을 만든다고?)

따라서 매우 편하고 좋다고 생각할 수 있겠지만... 대신 반대로 사이트 자체의 보안이 취약해진다는 문제가 지적되고 있다. 이런 식으로 인증처리를 할 경우 대부분 저주받은 ActiveX를 사용하기 때문에 악성프로그램이 유포될 가능성이 높아지는데다가, 전화번호등의 개인정보가 사이트에 저장이 되니 해킹당하면 개인의 신상정보가 속절없이 털리기 때문이다.

대신 CAPTCHA를 사용하면 일단 가입할 때 인증 자체는 확실히 되고, 또 사이트가 털려봐야 그 계정만 못쓰게 될 뿐 개인정보는 애초에 사이트에 저장이 되어있지 않으니 털릴 염려가 완전히 없어진다. ActiveX 같은 낡은 유통경로를 사용하는 것도 아니니 CAPTCHA를 통해 악성 코드가 유입될 가능성도 전혀 없다.


한국에서는 이 CAPTCHA 대신에 그냥 아에 회원가입을 유도하는 방법을 사용해서 잘 사용되지 않는 때도 있었다. 주민번호 같은 고급 개인 정보를 너무 쉽게 수집하는 관습에 젖어서 귀찮게 CAPTCHA 같은 걸 쓰느니, 주민번호 수집을 바탕으로 회원 가입을 하면 이는 곧 사람인 것이다라는 식으로 처리한 것. 이후에 개인정보 유출 문제가 심각해져 사용이 크게 제한되면서 주민번호 같은 고급 개인 정보는 그냥 수집할 수 없고 인증 업체 등을 통하는 것으로 변경 되었다. 문제는 이런 인증 업체들을 이용하는 것은 공짜가 아니라는 것. 이에 따라 중소규모 사이트의 경우는 굳이 별도의 개인 인증을 요구하기 보다는 CAPTCHA를 이용해 인증 과정을 사용하는 경우가 늘어났다.


하지만 이런 CAPTCHA는 적지 않은 사람들, 이를테면 노인계층에게 매우 문턱이 높다는 게 간과되고 있는 문제이다.