본문 바로가기

[20]개발

캡챠 CAPTCHA, 리캡챠 reCAPTCHA, 노캡챠 리캡챠 noCAPTCHA reCAPTCHA

인터넷 사용중 이런 화면을 만나보신 적이 있나요? 주로 회원가입이나, 본인 인증과 같은 절차를 수행할때 내가 봇(bot) 이 아니라는 것을 증명하기 위해서 입력해야 하는 글자들인데요.

요새는 이런 화면처럼 글자 입력이 아닌 그림을 입력해야 하는 경우를 만나기도 합니다. 대체 내가 왜 이런 일까지 해가며 인간인지를 증명해야 하는지 의문이 드실 수 있는데요.

이번 글에서는 캡챠 CAPTCHA, 리캡챠 reCAPTCHA, 노캡챠 noCAPTCHA 에 대해 알아보도록 하겠습니다.


캡차 CAPTCHA 란?

2000년, 카네기멜론 연구원들이 모여 만든 사람과 봇을 구별하기 위해 만든 자동 공개 튜링 테스트로, 봇은 구별할 수 없는 문자를 제시하여 이를 맞추면 사람으로 인정하는 방식으로 구현되어 있습니다. 주로 글자의 중앙에 수평선을 그어 놓거나, 글자를 뒤틀어 놓거나 등의 방식으로 표시되는데, 사람은 쉽게 식별 가능하나 봇은 식별능력이 떨어져 쉽게 식별이 불가능하다는 점을 이용한 것입니다.

사람과 컴퓨터를 구별하기 위한 자동 공개 튜링 테스트 Completely Automated Public Turing Test to Tell Computers and Humans Aparts 의 줄임말

여기서 튜링 테스트 Turing Test 가 나오는데, 이 부분은 나무위키의 튜링테스트 를 참조하세요. 간단하게 말하자면 기계가 인간과 얼마나 비슷하게 대화할 수 있는지를 기준으로 기계에 지능이 있는지를 판별하고자 하는 시험으로, 1950년 앨런 튜링이 제안한 시험입니다. 이미테이션 게임이라고도 부릅니다. (동명의 영화도 있지요.)

다시 캡차로 돌아오면, 이 캡차 테스트를 통과하지 못하면 나를 시험하고 있는 컴퓨터는 나를 사람이 아니라는 판단을 하게 됩니다. 그렇다면 왜 인터넷에서는 봇과 사람을 구별해야 할까요?

Evil Bot

이메일 시스템은 아주 효율적인 시스템입니다만, 현재는 잘 쓰이지 않습니다. (물론 이메일로 정보를 주고 받는 경우도 있지만, 지금 다루려는 문제와는 거리가 머니 잠시만 참아주세요.) 그 이유는 바로 스팸메일 떄문입니다. 하루에도 수백통씩 쏟아지는 스팸메일 때문에 이메일 시스템을 잘 쓰지 않는데요. 바로 이메일 생성 봇이 자동으로 수천개 수만개의 계정을 생성하여 스팸메일을 뿌리는 경우를 막기 위해 캡차를 사용하곤 합니다. 봇이라면 계정을 생성할수 없도록 막을 수 있을 테니까요.

<어마어마한 스팸메일들 - 정확히는 내가 가입시 신청한 메일 주소로 오는 것들이지만...>

해킹을 막는 방법

봇은 발전하여 무작위 문자열을 입력하여 해킹을 시도합니다. 로그인 시도때마다 캡차를 풀게 하거나, 5번 틀리면 캡차를 풀게 하여 계정의 해킹을 막는데 사용됩니다. 사람이라면 쉽게 푸는 문제를 봇은 풀지 못하거나 아예 틀린 답을 하기도 합니다.

< 머리는 컴퓨터인데 덧셈을 못함 >

캡차는 무료로 공개된 기술이며, 누구나 사용할수 있습니다. 그러나 봇이 풀지 못할 것이라는 캡차 문제들을 성능이 발달된 봇들이 풀기 시작하면서 색다른 캡차들이 나타나기 시작했습니다. 사칙연산을 이용하거나 한글을 섞어 만드는 캡차 등이 사용되기도 하였습니다.

리캡차 reCAPTCHA

캡차를 만든 카네기멜론의 연구원들은 이 문자 입력 시간 10초를 생산적으로 사용할 방법을 고안했습니다. 바로 고문서의 해독에 이용하기로 한 것인데요. 바로 아래와 같은 문서를 해독하기 위해서 사람이 직접 읽고 번역한다면 엄청난 시간과 돈이 필요합니다.

그러나 이를 디지털 파일로 스캔하여 조각조각 내어 캡차 시스템에 덧붙여 사람들의 의견을 물어본다면 어떨까요? 페이스북에서 보이는 아래 화면이 그렇습니다. 고문서의 단어와 기존 캡차 단어를 붙여 물어봄으로써 캡차 단어를 정확하게 맞춘 답변을 수집하여 고문서의 단어를 해독하는 것입니다. (이른바 쿠텐베르크 프로젝트, 나무위키 참조)

현재 캡차는 구글에 인수되어 구글 북스 프로젝트에 사용되고 있습니다.




노캡차 리캡차 noCAPTCHA reCAPTCHA 

하지만 시간이 흐르면서 이를 뛰어넘는 해킹 기술이 등장했습니다. 그러한 동향에 맞춰 2014년에 새로운 기술의 ‘노캡차 리캡차’가 재탄생했는데, 바로 지금 우리가 사용하는 버전이며 ‘나는 로봇이 아니다(I am not a Robot)’나 제시하는 문장에 해당하는 블록 찾기와 같이 클릭을 통해 사용자가 사람인지 컴퓨터인지를 구별합니다.

<대체 내가 왜 도로 표지판 타일을 선택해야 하지? >

<아놔 자동차는 왜 찾으라는 거야?>

이것 역시 구글의 자율주행 자동차에 사용되기 위해서 진행되는 프로젝트라고 들었습니다. 자동차 주행시 발생하는 상황을 구분하기 위해 데이터를 수집하는 것이겠지요. 구글이 자율주행차를 본격적으로 연구하기 시작한 후부터는

  • ○○○이 있는 타일을 모두 찍기. 하나도 없을 때까지: 처음에는 주로 차량, 매장 정문이었습니다. 2018년 9월 현재는 매장 정문은 잘 안 나옵니다.

  • 16개 타일 중 ○○○이 있는 타일을 모두 찍기: 처음에는 주로 표지판이었습니다. 2018년 9월 현재는 주로 횡단보도, 신호등, 굴뚝, 옥외 소화전이며 가끔 자전거나 오토바이인 경우도 있습니다.



Invisible reCAPTCHA - 리캡차 v3

구글에서 캡차 시스템을 보완하여 보이지 않는 리캡차 서비스를 내놓았습니다. 사용자의 패턴을 인식하여 사람으로 판단될 경우 캡차 문제를 풀지 않고 넘어가고, 사람이 아니라고 판단될때만 캡차 문제를 풀게 하겠다는 것입니다. 그러나 구글을 보이지 않는 리캡차가 어떤 알고리즘으로 동작하는지에 대한 자세한 설명은 하지 않는데요. 아마도 적용한 로직이 파악되어 새로운 위협에 노출되는 것을 막고자 함이 아닌가 합니다.

나무위키에서는 아래와 같이 설명하고 있습니다.

reCAPTCHA v3는 웹 사이트에서의 상호작용을 기반으로 작동한다. 즉 v2와는 다르게 직접 인증을 할 필요가 없다. 이 상호작용은 ARAE(Adaptive Risk Analysis Engine)를 기반으로 '좋은 상호작용(Good Interaction)'과 상호작용(Interaction)'으로 나누어지는데 전자의 경우 1.0의 점수를 주며, 후자는 0.0점을 준다. 점수가 높을수록 사람으로 확인하며, 낮으면 대부분 봇으로 식별한다. 공식적인 사용 예는 다음과 같다.

홈페이지: 스크래퍼를 필터링하는 동안 관리 콘솔에서 트래픽을 일관적으로 볼 수 있다.

로그인: 점수가 낮으면 이중 인증(2FA)나 이메일 인증을 요구해서 무차별 대입 공격(브루트포스)를 막을 수 있다.

소셜: 악성 유저의 친구 요청을 제한하고 위험한 댓글을 검토로 보낼 수 있다.

전자상거래: 봇보다 먼저 판매할 수 있고 위험한 사기 거래를 식별할 수 있다.

일단 대표적으로 알려진 식별 방법은 '마우스 추적'이며, v2와 동일할 것으로 보인다.

API 응답은 v2와 동일하게 true와 false가 있으며, action(중요), challenge_ts(타임스탬프), hostname, error -codes가 있다.

▲ 보이지 않는 리캡차 (Invisible reCAPTCHA) 소개 동영상


마치며

리캡차에 대하여 알아봤습니다. 사실 reCAPTCHA 의 re 가 무슨 약자인지 궁금하여 찾아봤는데 그런 내용은 없었네요. 혹시나 아시는 분들께서는 커멘트 주시면 감사하겠습니다.

<출처 : https://www.bloter.net/archives/273960>

 

웃고 갑시다

이쯤되면 의도된 결과 아닐까요?