CAPTCHA 사용을 중단하세요. Entropy 측정을 시작하세요.
Source: Dev.to
CAPTCHAs의 문제점
2024년 말 ETH 취리히 연구원들은 Breaking reCAPTCHAv2를 발표했으며, 최신 YOLO 기반 비전 모델이 구글 이미지 CAPTCHA를 100 % 정확도로 풀 수 있음을 보여주었습니다. “I am not a robot”(나는 로봇이 아니다) 체크박스는 사실상 봇을 위한 환영 매트가 되었습니다.
2025년 Imperva Bad Bot Report에 따르면 자동화된 트래픽이 **전체 인터넷 활동의 51 %**를 차지하고 있어, 인간 사용자는 자신들의 네트워크에서 소수에 불과합니다.
현재의 반응—“Proof of Personhood”(신분증이나 얼굴 스캔)—은 디스토피아적인 과잉 교정입니다. 우리가 진정으로 필요로 하는 것은 누구인지(정체성)보다 무엇인지(생물학)를 검증하는 방법입니다.
인간 엔트로피 측정
인간의 상호작용은 본질적으로 잡음이 섞여 있습니다:
- 키 입력 간격은 절대 완벽하게 규칙적이지 않습니다.
- 사용자는 키를 굴리거나, 생각하기 위해 멈추고, 흔히 쓰이는 이중 문자(예: “th”, “er”)를 더 빠르게 입력합니다.
이러한 특성은 키스트로크‑다이내믹스 서명을 형성하며, 이는 봇이 성능 저하 없이 모방하기 매우 어려운 행동 생체인식입니다.
isHumanCadence 라이브러리
isHumanCadence는 내용이 아닌 키 입력 타이밍을 분석하는 가볍고 프라이버시‑중심적인 JavaScript 라이브러리입니다. 브라우저 내에서만 실행되며 서버로 데이터를 전송하지 않고, 오직 어떻게 입력했는지만을 알게 됩니다.
작동 원리
라이브러리는 네 가지 주요 생물학적 제약을 측정합니다:
| Metric | Description |
|---|---|
| Dwell Time | 키가 물리적으로 눌려 있는 시간. 인간은 매번 정확히 50 ms로 탭하지 않습니다. |
| Flight Time | 한 키를 놓은 순간부터 다음 키를 누르기까지의 간격. |
| Rollover Rate | 이전 키를 놓기 전에 다음 키를 누르는 겹침 현상. 봇은 보통 순차적으로만 입력합니다. |
| Entropy | 타이밍 델타의 통계적 분산. |
“플리커링”(사용자가 멈출 때 점수가 급격히 변하는 현상)을 방지하기 위해 Schmitt Trigger와 히스테리시스가 사용됩니다:
- Human – score ≥ 0.70
- Unknown – 0.60 ≤ score < 0.70
- Bot – score < 0.60
// Example usage – evaluate result
if (result.score >= 0.70) {
console.log(`Score: ${result.score}`); // 0.0 (Bot) → 1.0 (Human)
console.log(`Status: ${result.classification}`); // 'bot' | 'human' | 'unknown'
}
// Start listening for keystrokes
cadence.start();
console.log('isHumanCadence: Listening for keystrokes...');
이 라이브러리는 대상 요소에 비침해적인 리스너를 부착하고 performance.now()를 사용해 서브밀리초 정밀도를 제공합니다.
제한점 및 향후 방향
- 생성형 키스트로크 – 향후 AI 에이전트가 방대한 인간 타이핑 데이터셋을 학습해 의도적으로 “실수”를 만들어 엔트로피를 흉내낼 수 있습니다.
- 클라이언트‑사이드 신뢰 – 측정이 브라우저에서 이루어지기 때문에, 의도적인 공격자는 환경을 위조할 가능성이 있습니다.
isHumanCadence는 만능 해결책이 아니라, 비밀번호 대신 리듬으로 인간을 인식하는 필터를 구축하기 위한 대화의 시작점입니다.
결론
웹은 AI‑생성 노이즈에 잠겨 있습니다. 진정한 인간 간의 연결을 위한 공간을 보존하려면, 정적인 신원 확인에서 벗어나 실제 사용자의 복잡하고 불완전한 리듬을 포착하는 동적 행동 생체인식으로 전환해야 합니다.
👉 GitHub: