캡차(CAPTCHA. 컴퓨터와 사람을 구별할 목적으로 완전히 자동화된 공개 튜링 테스트)는 액세스를 제한하도록 설계되었습니다. 만약 사람이라면 이 테스트를 통과하여 액세스 권한을 얻을 수 있습니다. 하지만 봇이라면 액세스 권한을 얻지 못합니다.
전 세계 상위 100만 웹사이트가 거의 모두 일정한 형태의 캡차를 사용합니다. 하지만 캡차 기술은 제약이 너무 많아서 제약을 줄일 필요가 있다고 말하는 사람들도 있습니다.
과연 누가 옳고, 누가 틀릴까요? 그리고 기업을 보호하려면 어떻게 해야 할까요?
이제부터 캡차의 정의와 원리, 그리고 캡차를 웹 기반 리소스에 추가했을 때에 대해 자세히 알아보겠습니다.
캡차의 정의
원하는 웹사이트가 열리면 누구나 무언가를 하려고 합니다. 로그인을 하거나, 약속을 하거나, 구매를 예약하거나, 글을 남기기도 합니다. 하지만 이러한 작업을 하려면 먼저 간단한 테스트를 통과해야 합니다. 이러한 테스트는 일반적으로 캡차 형태를 따릅니다.
캡차 테스트는 1990년대 중반에 웹사이트 사용자 경험을 해치려는 해커의 접근을 차단할 목적으로 개발되었습니다.
오늘날 웹 설계자는 다음과 같은 목적으로 캡차 코드를 사용할 수 있습니다.
- 차단. 코드는 봇이 블로그와 댓글 섹션을 대상으로 웹사이트, 매출, 영화 등에 대한 메모를 보내는 플러딩 공격을 차단할 수 있습니다. 또한 봇이 양식(투표 등)을 2회 이상 제출하지 못하도록 차단하는 효과도 있습니다.
- 보호. 웹사이트에서 로그인 서비스를 제공하는 경우에는 캡차를 사용해 봇이 사용자 이름과 비밀번호를 수없이 요청하지 못하도록 막을 수 있습니다. 이와 동일한 기법을 이용해 해커로부터 웹 주소를 보호할 수 있습니다.
- 방어. 캡차 코드는 봇이 비밀번호 시스템에 대한 사전(dictionary) 공격을 실행하지 못하도록 방어할 수 있습니다. 또한 이메일 웜에 대한 방어도 가능합니다.
누구나 웹사이트를 스크롤하거나 양식을 제출할 때 적어도 한 번은 캡차를 만나게 됩니다. 계속 진행하기 위해 퍼즐을 풀거나 테스트를 통과하는 것들이 모두 캡차 기술에 해당합니다. 하지만 너무나 많은 캡차 유형이 존재하기 때문에 아직까지 보지 못한 유형이 존재할 수도 있습니다.
캡차 테스트에는 다음과 같은 요소들이 포함될 수 있습니다.
- 이미지. 인지할 수 있는 사물이 촬영된 사진(거리 모퉁이 등)이 표시되며 여기서 주어진 카테고리(인도 등)에 속하는 사진들을 선택하게 됩니다.
- 수치. 간단한 연산 방정식이 표시되고, 이 방정식을 풀어야만 통과할 수 있습니다.
- 음성. 연속된 문자와 숫자를 말하는 음성이 들리면 해당 문자와 숫자를 정확하게 입력해야 합니다.
- 텍스트. 연속된 문자가 표시되며, 여기에 읽기 어렵게 할 목적으로 몇 가지 방해 요소(선, 방울 기호 등)가 포함됩니다. 통과하려면 해당 문자를 정확한 순서로 입력해야 합니다.
캡차 테스트는 더욱 창의적으로 표시되기도 합니다. 단어가 한두 개 빠진 문장이 표시되면 지침에 따라 문장을 완성해야 할 수도 있고, 일부 설계자는 퍼즐을 사용하기도 하는데, 사용자에게 날지 못하는 객체를 바닥에 놓으라고 요구하기도 합니다.
캡차 테스트의 원리
이미지, 수치, 단어, 게임 등 무엇을 사용하더라도 컴퓨터가 해결하지 못하는 과제를 사람에게 제시하게 됩니다. 캡차 테스트는 사람이 컴퓨터보다 지능적이라는 개념을 기반으로 합니다.
프로그래머는 과제가 제시되었을 때 컴퓨터가 몇 가지 방식 중 하나로 반응하도록 강제할 수 있습니다. 예를 들어 프로그래밍 코드를 통해 봇에게 항상 "554"를 열린 상자에 입력하도록 지정할 수 있습니다. 하지만 캡차는 동일한 사이트에서도 항상 바뀌기 때문에 프로그래밍된 기법은 효과가 없습니다. 공격이 성공하려면 프로그래밍 코드 역시 항상 바뀌어야 하기 때문입니다. 해커들은 일반적으로 이렇게 프로그래밍 코드를 바꿀만한 시간이 충분하지 않습니다.
캡차 코드의 장점과 단점
봇은 웹사이트 사용자 경험을 해칠 수 있습니다. 자동 응답으로 가득한 댓글 섹션을 끝까지 읽을 사람은 아무도 없습니다. 또한 보안 팀은 비밀번호 추측으로 가중되는 위험까지 처리할 마음이 없습니다. 따라서 보안과 사용자 경험이 중요하다면 캡차가 유용합니다.
하지만 다음과 같은 단점도 존재합니다.
- 보안 취약점. 효과적으로 설계된 캡차 코드라고 해도 머신 러닝 기술이 적용된 프로그램으로 취약해질 수 있습니다. 사이트에 캡차 테스트를 심어 놓고 후속 조치를 게을리한다면 자사의 조직이 해커에게 노출될 수 있습니다. 전문적인 공격자들도 코드를 풀고 액세스 권한을 얻기 위해 필요한 인력을 고용할 수 있기 때문입니다.
- 법률적 요건. 미국 내 대부분의 주에서는 시각 장애인이나 청각 장애인을 포함해 누구나 사이트에 액세스할 수 있도록 허용해야 합니다. 캡차 테스트가 시각적 단서나 청각적인 단서만 이용한다면 장애인을 위한 보조 기술로 이를 해석해낼 수 없습니다. 이는 사람들이 사이트를 사용하지 못하도록 차단하게 되어 상당한 벌금이 부과될 수 있습니다.
- 언어 장벽. 리서치 기관에 따르면 영어 원어민이 아닌 사람들이 캡차로 인해 어려움을 겪는 경우가 많다고 합니다. 이러한 사람들은 영어를 이해하는 데 시간이 더 필요하며, 이들 중에는 문장 기반 테스트를 어떻게 마쳐야 할지 모르는 사람들도 있습니다. 만약 다른 언어 사용자에게도 사이트 액세스가 허용된다면 잠재 고객 회원을 잃게 되는 셈입니다.
- 문화적 제약. 미국에서는 유효한 문제도 그리스에서는 소용이 없는 경우가 있습니다. 예를 들어 미국에서 사용되는 교통 표지판이 문제에 포함되어 있으면 외국인 방문자는 전혀 이해하지 못할 수도 있습니다.
보안과 액세스 유효성을 균형 있게 유지하기란 쉬운 일이 아닙니다. 더욱이 캡차는 이러한 작업을 더욱 어렵게 만듭니다.
캡차 테스트 대안
표준 캡차 테스트도 사람들이 필요한 문제를 입력하여 웹사이트를 사용하는 데 어려움을 가중시킬 수 있습니다. 그렇다고 캡차 기술을 사용하거나 혹은 완전히 배제할 필요는 없습니다. 다른 옵션을 이용하여 리소스를 안전하게 보호할 수 있기 때문입니다.
노캡차/리캡차(No CAPTCHA/reCAPTCHA) 시스템은 두 가지 방법을 제공합니다. 표준 사용자는 "나는 로봇이 아닙니다."라고 적힌 상자를 클릭한 후 정상적으로 진행할 수 있습니다. 그렇지 않고 시스템이 의심스러운 활동을 탐지하여 캡차 상자가 표시될 경우에는 사용자가 문제를 통과해야 합니다.
그 밖에 스팸 탐지 툴을 사용하는 방법도 있습니다. 이 프로그램은 사용자가 제출하는 데이터를 살펴보고 의심스러운 활동을 플래그 처리하여 승인 또는 삭제합니다. 이러한 시스템은 사용자에게 보이지 않지만 사이트를 안전하게 보호하는 데 효과적입니다.
Okta는 사용자에게 영향을 미치는 일 없이 보안을 통해 데이터를 보호할 수 있다고 믿고 있습니다. 기업에서 보안과 사용 편의성을 균형 있게 유지할 수 있는 방법에 대해 자세히 알려드리겠습니다. 지금 Okta에 문의하여 대화를 시작해보세요.
참고 자료
CAPTCHA Usage Distribution in the Top 1 Million Sites. (2021년 2월). BuiltWith.
Home. CAPTCHA.
CAPTCHA Can Ruin Your UX. Here's How to Use It Right. (2020년 11월). Auth0.
Everything You Need to Know About CAPTCHA. (2017년 4월). Medium.
How Good Are Humans At Solving CAPTCHAs? A Large-Scale Evaluation. (2010년). Stanford University.
Why CAPTCHAs Have Gotten So Difficult. (2019년 2월). The Verge.
In Search of the Best CAPTCHAs. (2011년 3월). Smashing Magazine.