CAPTCHA와 reCAPTCHA는 사용자가 실제는 봇인지 여부를 판단합니다. 이 검사가 악성 봇 활동 차단에 도움이 될 수는 있지만, 완벽하지는 않습니다.
이 글을 읽은 후에 다음을 할 수 있습니다:
관련 콘텐츠
인터넷에서 가장 인기 있는 인사이트를 한 달에 한 번 정리하는 Cloudflare의 월간 요약본 theNET를 구독하세요!
글 링크 복사
CAPTCHA 테스트는 온라인 사용자가 봇이 아닌 진짜 사람인지를 판단하기 위한 것입니다. CAPTCHA는 "컴퓨터와 인간을 구분하기 위한, 완전 자동화된 공개 튜링 테스트(Completely Automated Public Turing test to tell Computers and Humans Apart.)"의 약자입니다. 사용자는 인터넷 사용 중에 CAPTCHA 및 reCAPTCHA 테스트를받는 일이 많습니다. 이러한 테스트는 봇 활동 관리의 한 가지 방법이지만, 단점도 있습니다.
CAPTCHA는 자동 봇을 차단하기 위해 만들어진 것이지만, CAPTCHA 자체가 자동화되어 있으며, 웹사이트의 특정 영역에 나타나, 자동으로 사용자를 통과시키거나 차단합니다.
아직도 일부 웹 자산에서 이용되는 고전적인 CAPTCHA는 사용자에게 문자 식별을 요청합니다. 이 문자들은 왜곡되어 있어 봇은 식별할 가능성이 작습니다. 이 테스트에 통과하려면, 사용자는 왜곡된 문자를 해석하고, 정확한 문자를 양식 필드에 입력한 후 이 양식을 제출해야 합니다. 문자가 일치하지 않으면, 다시 시도하라는 프롬프트가 나옵니다. 이러한 테스트는 로그인 양식, 계정 가입 양식, 온라인 설문 조사, 전자 상거래 결제 페이지에서 널리 사용됩니다.
기본적인 아이디어는, 봇과 같은 컴퓨터 프로그램은 왜곡된 문자를 해석할 수 없지만, 인간은 다양한 서체와 수기 등 모든 맥락에서 문자를 보고 해석할 수 있으므로 이를 식별할 수 있다는 것입니다.
다수의 봇은 기껏해야 무작위로 문자를 입력할 수 있기 때문에, 통계적으로 이 테스트를 통과할 가능성이 낮습니다. 그러므로, 봇은 테스트를 통과하지 못하게 되고, 웹사이트 또는 애플리케이션과의 상호 작용이 차단되지만, 사람들은 정상적으로 업무를 지속할 수 있습니다.
고급 봇은 기계 학습을 사용하여 왜곡된 문자를 식별할 수 있으므로, CAPTCHA 테스트가 더욱 복잡한 테스트로 대체되는 중입니다. Google reCAPTCHA는 봇과 인간 사용자를 구분하기 위한 다양한 테스트를 개발했습니다.
reCAPTCHA는 기존의 CAPTCHA를 대체하기 위해 Google이 제공하는 무료 서비스입니다. reCAPTCHA 기술은 카네기 멜론 대학교의 연구원들이 개발하였고, 2009년에 Google이 인수했습니다.
reCAPTCHA는 전형적인 CAPTCHA보다 진보된 테스트입니다. reCAPTCHA 중에는 CAPTCH처럼 컴퓨터가 판독하기 어려운 텍스트의 이미지를 입력하게 하는 것이 있습니다. 이러한 reCAPTCHA는 일반적인 CAPTCHA와 달리, 도로명 주소의 그림, 인쇄된 책자의 텍스트, 오래된 신문의 텍스트 등 실제 이미지를 제시합니다.
Google은 계속적으로 reCAPTCHA 테스트의 기능을 확장하여, 이제는 흐리게 하거나 왜곡한 문자라는 과거의 방식에 의존하지 않습니다. 다른 유형의 reCAPTCHA 테스트에는 다음이 있습니다.
이미지 인식 reCAPTCHA 테스트에서는 사용자에게 9-16개의 정사각형 이미지가 제시됩니다. 이들 이미지는 하나의 큰 이미지에서 가져온 것일 수도 있고, 다른 이미지들일 수도 있습니다. 사용자는 이 가운데서 동물, 나무, 도로 표지판과 같은 특정 물체가 포함된 이미지를 식별해야 합니다. 동일한 테스트에 답한 대다수 사용자의 응답과 일치하는 응답을 제시하면, 이는 "정답"으로 간주되고 사용자는 테스트를 통과합니다.
흐린 사진에서 특정 대상을 선택하는 것은 컴퓨터가 풀기 어려운 문제입니다. 첨단 인공 지능(AI) 프로그램조차도 쉽지 않으므로, 봇도 마찬가지로 어려움을 겪습니다. 그러나 인간은 모든 상황과 맥락에서 일상적인 사물을 인식하는 데 익숙하기 때문에, 인간 사용자는 이를 쉽게 해낼 수 있습니다.
단순하게 "로봇이 아닙니다"라는 문장 옆에 있는 확인란을 클릭하게 하는 reCAPTCHA 테스트도 있지만, 이 테스트가 실제로 검사하는 것은 확인란을 클릭하는 것이 아니라, 여기에 이르는 모든 동작입니다.
이러한 reCAPTCHA는 사용자의 커서가 확인란에 다가오는 동안의 동작을 고려합니다. 인간이라면 바로 이동하더라도 미세 수준에서는 어느 정도의 무작위성이 있게 마련입니다. 커서가 이렇게 예측하기 어렵게 움직이면, 적법한 사용자일 가능성이 크다고 판단합니다. 또한, 이 reCAPTCHA는 사용자 기기의 브라우저에 저장된 쿠키 또는 기기 이력에 접속할 수도 있으며, 이를 통해 사용자가 봇일 가능성을 판단합니다.
사용자가 인간인지 여부를 여전히 판정할 수 없다면, 위에 설명한 이미지 인식 같은 추가적인 문제를 제시하기도 합니다. 하지만, 커서의 동작, 쿠키, 기기 이력으로 충분한 결론을 얻을 수 있는 경우가 대부분입니다.
최신 버전의 reCAPTCHA는 인터넷 상에서 사용자의 행태 및 콘텐츠와의 상호작용 이력을 종합적으로 볼 수 있으며, 대개의 경우 이러한 요인에 기초해, 질문에 답하게 하지 않으면서 사용자가 봇인지 여부를 판단할 수 있습니다. 판단을 할 수 없다면, 사용자에게 전형적인 reCAPTCHA 질문을 제시할 것입니다.
Google에서는 점수 기반 감지 시스템을 사용하여 사람과 봇을 구분하는 reCAPTCHA Enterprise라는 월별 결제 유료 서비스를 제공합니다. reCAPTCHA Enterprise는 고객 백엔드 및 웹 페이지와 상호 작용하여 일련의 JavaScript, HTML, 토큰 인증 이벤트를 트리거합니다. 그런 다음 이 시스템에서는 0.0에서 1.0까지 웹 방문자의 위험 '점수'를 도출하고 웹 사이트 개발자는 이 점수에 따라 어떤 조치를 취해야 하는지 결정합니다.
점수가 낮을수록 '웹 방문자'가 실제로 봇일 가능성이 더 높습니다. reCAPTCHA Enterprise 점수가 0.0이면 해당 상호작용이 사기일 가능성이 높고 위험도가 높다는 것을 의미하며, 1.0이면 해당 상호작용이 정상적이고 위험도가 낮다는 것을 의미합니다.
웹 자산 중에는 봇에 대한 사전 방어 수단으로 CAPTCHA를 자동으로 제시하는 것도 있습니다. 그렇지 않은 경우에는, 사용자의 행태가 봇의 행태와 유사하다면 테스트가 유발될 수 있습니다. 예를 들어, 사용자가 웹페이지를 요청하거나 하이퍼링크를 클릭하는 속도가 평균보다 매우 빠른 경우가 해당합니다.
독자적으로 텍스트 CAPTCHA를 통과할 수 있는 봇도 있습니다. 또한, 연구자들은 이미지 인식 CAPTCHA를 통과할 수 있는 프로그램 작성법을 보여주기도 했습니다. 게다가, 공격자는 봇 대신 수천 명의 저임 작업자를 이용하는 클릭 팜을 이용해 테스트에 통과하기도 합니다.
원치 않는 봇(콘텐츠 스크랩 봇, 자격 증명 스터핑 봇 또는 스팸 봇)을 차단하기 위해서는 CAPTCHA 이외의 전략이 필요합니다.
사용자 경험 저해: CAPTCHA 테스트는 사용자가 원하는 작업의 흐름을 가로막아, 웹 자산에 대한 경험에 부정적인 요소로 작용하며, 사용자가 아예 웹페이지 자체를 포기하게 되는 경우도 있습니다.
시각 장애인에게는 사용 불가: CAPTCHA는 시각 인식에 의존한다는 문제가 있습니다. 이는 법적인 시각 장애인뿐만 아니라 시력이 심각하게 손상된 사람에게는 사용이 거의 불가능합니다.
봇이 속일 수 있음: 위에서 설명한 것처럼 CAPTCHA는 봇을 완전히 막을 수 없기 때문에, 봇 관리를 위해 전적으로 의존할 수 없습니다.
Cloudflare 봇 관리나 슈퍼 봇 차단 모드와 같은 봇 관리 솔루션은 봇의 동작을 기반으로 사용자 경험에 영향을 주지 않고 나쁜 봇을 식별할 수 있습니다.따라서 사용자가 캡차를 기재하지 않고도 봇을 완화할 수 있습니다.
또한 Cloudflare에서는 무료 코드 스니펫을 사용하여 캡차 대신 사용할 수 있는 보이지 않는 대안인 Turnstile을 제공합니다. Turnstile은 Cloudflare 고객이 아니어도 누구나 사용할 수 있습니다.
수백만 명의 사용자가 읽기 어려운 텍스트를 식별하고 흐릿한 이미지에서 사물을 찾아낼 수 있으므로, 해당 데이터는 AI 컴퓨터 프로그램에 제공되어 이들 프로그램의 성능 향상에 도움을 줄 수 있습니다.
실제 세계에서는 맥락이 거의 무한대로 변할 수 있기 때문에, 컴퓨터 프로그램은 일반적으로 다양한 맥락에서 사물과 문자를 식별하는 데 어려움을 겪습니다. 예를 들어, 정지 신호에는 빨간색 팔각형과 흰색 "정지" 글자가 들어 있는데, 컴퓨터 프로그램은 이러한 도형과 단어 조합은 매우 쉽게 식별할 수 있습니다. 하지만, 사진의 각도, 조명, 사진 찍을 때의 날씨 등 맥락에 따라, 실제 정지 신호는 이렇게 간단한 설명과는 크게 달라지기도 합니다.
머신 러닝을 통해 AI 프로그램은 이러한 한계를 더욱 잘 극복하게 됩니다. 정지 신호의 예를 들면, 프로그래머가 정지 신호인 것과 정지 신호가 아닌 것에 대한 데이터를 많이 제공하는 것입니다. 이것이 효과적이려면, 정지 신호가 있는 이미지와 정지 신호가 없는 이미지가 많이 필요하며, 프로그램이 효과적으로 이를 수행할 수 있게 되기까지는 인간 사용자가 이를 식별해야만 합니다.
reCAPTCHA는 사람들에게 사물과 텍스트를 식별하게 함으로써 이러한 필요를 충족하고 있습니다. 강력한 AI 프로그램 구축에 필요한 데이터를 서서히 제공하고 있는 것입니다.
튜링 테스트는 인간의 행동을 모방하는 컴퓨터의 능력을 평가합니다. 초기 컴퓨팅의 개척자인 앨런 튜링이 1950년에 튜링 테스트의 개념을 발명했습니다. 테스트 동안, 컴퓨터 프로그램의 성능을 인간과 구별할 수 없다면, 즉 인간이 행동하는 것처럼 동작한다면, 튜링 테스트를 통과한 것입니다. 튜링 테스트는 정답과 무관합니다. 맞고 틀리고를 떠나 "인간"의 대답이 어떨까를 생각하는 것입니다.
CAPTCHA를 "공개 튜링 테스트"라고 하지만, 실제는 튜링 테스트와 반대입니다. 컴퓨터가 인간인지 아닌지 판단하는 대신 인간 사용자가 컴퓨터 프로그램 (봇)인지 아닌지를 판단하기 때문입니다. 이를 위해 CAPTCHA는, 사람은 잘 하지만 컴퓨터가 어려움을 겪는 간단한 작업을 할당해야 합니다. 텍스트와 이미지 식별은 이러한 기준에 적합합니다.