Captcha vs ReCaptcha

MNIII
5 min readJul 11, 2020

--

CAPTCHA

CAPTCHA란? Completely Automated Public Turing test to tell Computers and Humans Apart 의 약자로 사용자가 사람인지 프로그래밍 기계인지 구분 하는 기술 이다.

CAPTCHA를 통해서 사람과 기계를 구분하는 보안에 유용한 도구로 프로그램 혹은 매크로 등으로 부터 자동으로 달리는 광고성 게시물, 아이디 자동생성, 계정 해킹과 같은 것들을 어느정도 예방할 수 있다.

CAPTCHA 종류

  • 텍스트 CAPTCHA : 가장 흔히 볼 수 있는 방법으로, 이미지로 표현된 글자를 입력하는 방식으로 광학 문자 인식(OCR)을 활용한 방법으로 사람은 쉽게 인식할 수 있지만 기계는 인식하기 어려운 문자 이미지를 만들어 판별하는 과정을 거쳐서 사람인지 기계인지 구분한다.
  • 오디오 CAPTCHA : 컴퓨터와 인간의 구어 인식능력 차이를 이용한 것으로, 잡음에 섞여 들리는 단어를 입력하는 방식
  • 이미지 CAPTCHA : 사진이나 그림 이미지를 출력하고 답을 요구하는 방식으로 특정 사물의 이미지를 하나 이상 제시해서 이름을 입력받거나, 무작위 회전 이미지를 원래대로 되돌리는 등의 방식
  • 슬라이드 CAPTCHA : 드래그 인 드롭을 활용한 방식으로 스마트폰의 잠금화면을 풀듯 화면의 수평 바를 이동 시키거나, 질문의 답에 해당하는 이미지를 드래그하는 방식

CAPTCHA 한계

아직 기술 적으로 보완 되야 하거나 불편한 부분도 많고 외부 공격으로 부터 전적으로 믿기에는 부족한 부분이 많다. 악의가 있는 사람, CAPTCHA의 답을 판독하는 기계, 장애가 있는사람, 난이도 조절 실패 등의 한계가 있기에 여러모로 고려해서 필요성을 결정할 필요가 있겠다.

reCAPTCHA

reCAPTCHA는 Google이 제공 하는 사람과 기계를 구분하는 API 이다. reCAPTCHA, CAPTCHA 뭐가 다른가?

OCR 프로그램은 텍스트를 제대로 인식하지 못하기에 CAPTCHA에 사용할 검증 자료들을 사람이 판독해서 하나하나 입력하게되면 비용이 많이 들어간다. 이를 해결하기 위해 CAPTCHA를 거치는 사용자들의 결과 데이터를 기반으로 검증 자료를 쌓아 활용하는 것이 reCAPTCHA 이다.

reCAPTCHA 사용방법

Google 계정으로 로그인 하고, Google reCATPCHA 로 이동한다. 그리고 왼쪽 상단 메뉴에서 Guides 탭으로 이동하면 아래와 같은 메뉴를 볼 수 있다.

reCAPTCHA v2 그리고 reCAPTCHA v3 두가지가 있다.

V2

위와 같이 체크박스를 통해서 사용자가 기계가 아님을 확인한다. reCAPTCHA가 1차 판별을 진행한다.

마우스 포인팅, 클릭과 터치 패턴, 쿠키 값, 기타 알려지지 않은 구분방법을 통해 구별한다.

1차를 통해서 사람과 기계를 판별 하기 어려울때 위와 같이 제시된 단어에 맞는 타일을 선택하는 문제가 나오고 이를 통해서 2차 판별을 진행하고 통과 하게 되면 다음 단계를 진행 할수 있다.

v2의 큰 단점은 사용자에게 불편함을 준다는 것이다. 사람과 기계를 검증하는 단계가 많고 시간도 소모하게 된다. v2를 도입하고 사용자의 탈퇴가 이어진 사례도 있다. 사용자와 서비스 규모에 맞게 잘 고려해서 선택할 필요가 있겠다.

V3

v2의 단점을 보완한 방식으로 사용자가 거쳐야 하는 별도의 검증단계가 없다. v3는 사용자의 마우스 포인팅, 클릭과 터치 패턴 등을 Google에서 비공개된 알고리즘을 통해 판별 후 암호화된 코드를 생성한다. 암호화된 코드를 Google에서 공개된 API를 통해서 0 ~ 1 점 사이의 점수를 응답받을 수 있다. 응답받은 점수가 낮을 수록 비정상적인 동작의 사용자 또는 기계임을 짐작할 수 있다.

reCAPTCHA Demo 사이트에서 API 테스트가 가능하다.

V3 Test

위 이미지는 v3 API 테스트 결과 이다.

이미지 속 1번은 구글로 부터 발급 받아야 하는 토큰이며, 2번은 reCAPTCHA v3가 사용자 동작을 판별한 결과의 암호화된 코드이다. 2번의 코드를 봇 검증 API 요청을 통해서 3번의 응답 결과를 점수로 확인 할수 있다.

응답받은 점수를 통해서 몇점 부터 정상동작으로 간주하여 다음 단계를 진행 할수 있는지 결정해서 사용하면 되겠다.

보안을 위한 여러가지 선택지 중에서 reCAPTCHA의 장점을 활용할 수 있다면 한번 사용해 보는 것도 좋겠다.

--

--

No responses yet