행동 계층
프로그램은 무엇을 했는지가 아니라 어떻게 행동하는지로 드러납니다
모든 방문은 움직임을 만듭니다. 버튼을 향해 이동하는 커서, 눌렸다 떼어지는 키, 스크롤되는 페이지, 닿는 화면. TRACIO는 그 움직임을 지속적으로 점수화해 그것이 사람의 손에서 나왔는지 소프트웨어에서 나왔는지 알려 드립니다.
무엇을 보는가
네 개의 입력 채널을, 방문자가 손에 쥔 디바이스에 맞춰 가중합니다
각 채널은 먼저 개별적으로 점수화된 뒤 합쳐집니다. 가중치는 고정되어 있지 않고 방문자가 실제로 쓰는 디바이스를 따라갑니다. 휴대폰에서는 터치가 판정을 이끌고 커서가 없다는 사실은 아무 의미가 없습니다. 데스크톱에서는 커서가 가장 강한 채널이고, 터치 스트림이 없는 것은 그저 당연한 일입니다.
마우스와 커서
데스크톱 주력속도와 그 변동 폭, 일정한 이동 구간마다의 방향 전환 횟수, 목표를 향해 굽어 드는 경로, 클릭 직전의 가속과 제동, 그리고 스크립트로 만든 움직임은 재현하지 못하는 사람 손의 미세한 떨림.
키보드 리듬
타이밍만각 키가 눌려 있는 시간, 한 키를 떼고 다음 키를 누르기까지의 간격, 앞 키가 올라오기 전에 다음 키가 내려가는 겹침, 몰아치기와 멈춤, 수정과 백스페이스. 수집하는 것은 타이밍이며 문자는 결코 수집하지 않습니다. 아래 프라이버시 항목을 참고하세요.
스크롤
두 폼팩터 모두속도 변동, 방향이 되짚어지는 빈도, 물리적인 플릭처럼 감쇠하는 관성, 그리고 화면에 실제로 놓인 텍스트 분량과 맞아떨어지는 멈춤.
터치
모바일 주력접촉 면적과 탭이 진행되는 동안의 변화, 디바이스가 노출하는 경우의 압력, 같은 픽셀에 두 번은 닿지 않는 손가락의 미세한 흔들림, 그리고 여러 접촉점 사이의 타이밍.
같은 세션, 두 가지 가중 방식
마우스와 키보드가 비중을 가집니다. 여기서는 터치 스트림이 기대되지 않으므로, 없다고 해서 방문자가 불이익을 받지 않습니다.
터치와 디바이스 움직임이 비중을 가집니다. 커서 이동이 전혀 없는 방문은 휴대폰에서는 의심스러운 것이 아니라 정상입니다.
없다는 것은 증거가 아닙니다
디바이스가 애초에 제공하지 않은 채널은 방문자에게 불리하게 계산하지 않고 점수에서 제외합니다. 당연해 보이지만, 순진한 행동 점수화가 실제 고객을 용의자로 만드는 가장 흔한 경로가 바로 이것입니다. 휴대폰에는 마우스가 없고, 스크린 리더 사용자에게는 매끄러운 커서 경로가 없습니다. 그 어느 쪽도 봇 여부에 대해서는 아무것도 말해 주지 않습니다.
증거
소프트웨어는 하지만 사람 손은 할 수 없는 세 가지
이것은 규칙 전체가 아니라 예시이지만, 당사가 근거로 삼는 증거의 형태를 보여 줍니다. 각각은 사람 손에게는 물리적으로 불가능한 일이며, 한 번의 이상한 순간이 곧바로 판정이 되지 않도록 각각 게이트가 걸려 있습니다.
메트로놈 같은 키 누름 시간
측정하는 것
입력 전체에 걸쳐 모든 키가 거의 정확히 같은 밀리초만큼 눌려 있습니다.
사람 손은 할 수 없는 이유
손가락이 키 위에 머무는 시간은 어떤 키인지, 어느 손인지, 그 손이 얼마나 피로한지에 따라 달라집니다. 사람의 누름 시간은 흩어집니다. 주입된 키 입력은 상수에서 생성되므로 그 흩어짐이 거의 0으로 무너집니다.
오판을 막는 장치
이 규칙은 구간 안에 충분한 키 입력이 없으면 아예 계산되지 않습니다. 네 글자짜리 입력은 표본이 아니며, 표본으로 점수화되지도 않습니다.
순간 이동하는 클릭
측정하는 것
커서가 한 번도 지나가지 않은 컨트롤 위에서 클릭이 발생합니다. 포인터가 그저 좌표에 나타나 발생시킵니다.
사람 손은 할 수 없는 이유
사람은 목표에 다가갑니다. 경로가 안쪽으로 굽고, 끝에 가까워지며 속도가 떨어지고, 누르기 전에 대개 잠깐의 호버가 있습니다. 자동화는 좌표를 설정하고 이벤트를 보낼 뿐이며, 물리적으로 움직인 것이 없으니 접근 자체가 없습니다.
오판을 막는 장치
순간 이동 클릭이 한 번 있는 것은 키보드 탐색이나 트랙패드에서 충분히 나올 수 있는 부산물입니다. 판단할 만큼 클릭이 있었던 세션에서 그 대다수를 차지할 때만 계산됩니다.
숨겨진 탭에 입력하기
측정하는 것
페이지가 뒤에 있고 한 번도 앞으로 나온 적이 없는데 키 입력이 계속 도착합니다.
사람 손은 할 수 없는 이유
사람은 보고 있지 않은 페이지에 입력할 수 없습니다. 농장용 소프트웨어는 수십 개의 탭을 병렬로 돌리며, 폼을 채우기 전에 하나하나 포커스를 주는 수고를 하지 않습니다.
오판을 막는 장치
탭 전환 순간의 이벤트 하나는 브라우저 이벤트 사이의 경쟁이지 증거가 아닙니다. 페이지가 여전히 한 번도 보이지 않은 채로 입력이 반복될 때 계산됩니다.
프라이버시
리듬을 측정합니다. 텍스트는 복원할 수 없습니다.
행동 수집은 비밀번호, 이메일, 카드 번호 입력란을 포함해 페이지 어디에서나 동작합니다. 이는 의도한 결정이며, 정책 문서 안에 묻어 두는 대신 온전히 설명되어야 마땅한 내용입니다.
왜 하필 민감한 입력란이 중요한가
크리덴셜 스터핑, 카드 테스팅, 계정 탈취는 모두 정확히 그 입력란 안에서 일어납니다. 거기서 스스로 꺼지는 탐지기는 공격이 실제로 사는 바로 그 자리에서 눈을 감고 있는 셈입니다. 이전 동작이 바로 그랬습니다. 민감한 입력란에서는 수집을 통째로 껐기 때문에, 방문에서 위험이 가장 높은 몇 초 동안 측정값이 하나도 남지 않았습니다.
보관하는 것
타이밍입니다. 키가 언제 내려갔는지, 얼마나 오래 눌려 있었는지, 다음 키까지 얼마나 걸렸는지, 두 번의 누름이 겹쳤는지. 사람과 생성기를 가르는 데는 그것으로 충분하며, 탐지기가 요구해 온 것도 그것뿐입니다.
보관하지 않는 것
그것이 어떤 키였는지입니다. 민감한 입력란 안에서는 모든 키 입력의 정체가, 페이지 밖으로 무엇이 나가기 전에 브라우저 안에서 거친 대체값으로 바뀝니다. 바뀌는 대상은 문자가 아니라 소수의 버킷 중 하나입니다. 되돌리는 대응표는 없습니다. 당사 서버에 도달하는 스트림에는 텍스트도, 텍스트 조각도, 텍스트로 다시 조립될 수 있는 것도 들어 있지 않습니다.
그 때문에 처리해야 했던 문제
이 입력란에서는 키의 정체가 실제로 사라지기 때문에, 키를 구분할 수 있어야 성립하는 규칙은 해당 키 입력을 자기 집계에서 제외해야 합니다. 그러지 않으면 평범한 비밀번호가 같은 키를 계속 두드린 것처럼 보이고, 제대로 입력한 사람을 의심하게 됩니다. 타이밍 기반 규칙은 영향을 받지 않으며 전체 스트림에서 그대로 동작합니다.
수집을 끄는 것이 내용을 지켜 준 적은 없습니다
어느 설계에서도 문자 자체는 애초에 수집되지 않았습니다. 예전의 일괄 제외가 없앤 것은 증거뿐이었고, 누구의 프라이버시도 높이지 못한 채 탐지기의 눈만 가렸습니다. 대체값 방식은 텍스트에 대해 정확히 같은 보장을 유지하면서 탐지기에 측정값을 돌려줍니다. 하나의 결정에서 더 강한 탐지와 더 나은 프라이버시가 함께 나왔고, 이는 드문 일이므로 분명히 밝혀 둘 가치가 있습니다.
규칙 배포 방식
새 규칙은 판정에 손대기 전에 먼저 보이지 않는 곳에서 돌아갑니다
탐지는 증거 없이 영리해지려는 순간부터 나빠집니다. 모든 행동 규칙은 먼저 섀도로 추가됩니다. 실제 프로덕션 트래픽을 상대로 평가되고 그 결과가 기록되지만, 누구에게도 보이는 점수에는 전혀 기여하지 않습니다.
섀도로 배포
규칙은 첫날부터 실제 트래픽에서 평가됩니다. 그 결과는 분석으로만 흘러가며, 규칙이 추가되었다는 이유로 어떤 고객의 판정도 움직이지 않습니다.
두 모집단을 상대로 측정
독립적으로 사람으로 판정된 세션과 독립적으로 자동화로 판정된 세션 각각에서 얼마나 자주 발동하는지를, 의미 있는 규모의 실제 트래픽에 걸쳐 관찰합니다.
두 개의 임계값이 결정
최소 10대 1로 분리되어야 합니다. 즉 사람보다 자동화에서 최소 10배 더 자주 발동해야 하며, 동시에 실제 사람 세션에 대한 발동률이 0.5% 아래에 머물러야 합니다.
승격되거나, 어둠에 남거나
두 게이트를 모두 통과한 규칙은 점수에서 가중치를 얻습니다. 통과하지 못한 규칙은 섀도에 남거나 아예 제거됩니다. 승격은 의도적이고 검토를 거친 변경이며, 자동으로 켜지는 것은 하나도 없습니다.
이것이 하룻밤 사이에 영리해진 척하는 탐지기가 자사 고객을 돌려보내기 시작하는 사태로부터 고객사를 지켜 주는 장치입니다. 금요일 오후에 누군가 아이디어를 떠올렸다고 해서 오탐률이 움직이지는 않습니다.
무엇을 받게 되는가
세 개의 필드가 식별 이벤트와 함께 도착합니다
행동 판정은 이벤트의 나머지 부분과 함께 도착합니다. 두 번째 호출도, 폴링도, 따로 연동할 엔드포인트도 없습니다.
이벤트 발췌
{
"visitorId": "X7fh2Hg9LkMn3pQr",
"behavior": {
"score": 87.4,
"verdict": "human",
"confidence": 0.82
}
}Business 플랜 이상에서 제공됩니다. 웹훅으로 전달되며 Data API를 통해서도 조회할 수 있습니다.
행동 블록은 신호이지 조치가 아닙니다. 그 자체로는 아무것도 차단하지 않습니다. 이벤트의 나머지 부분과 고객사의 정책을 함께 놓고 결합하시면 됩니다. 결정이 있어야 할 자리는 거기입니다.
한계
행동이 알려 주지 않는 것
행동은 하나의 질문에는 잘 답합니다. 사람인가 프로그램인가입니다. “어떤 사람인가”에는 답하지 못하며, 답할 수 있는 것처럼 팔지도 않습니다.
신원 신호가 아닙니다
입력 습관이나 마우스 움직임으로 재방문한 개인을 알아본다고 주장하지 않습니다. 실제 트래픽에서 측정했습니다. 한 사람이 쓰는 두 브라우저에 걸쳐 그 사람을 맞추는 성능은 우연보다 나을 것이 없었습니다. “사용자를 식별하는 행동 생체 인식”을 파는 업체가 있다면 같은 수치를 공개하라고 요구해야 합니다.
식별을 대체하지 않습니다
그 디바이스가 누구인지는 디바이스와 브라우저 계층에서 나옵니다. 행동은 그 디바이스를 움직이는 주체가 어떤 종류인지를 알려 줍니다. 둘은 서로 다른 질문에 답하며, 어느 쪽도 다른 쪽을 대신하지 못합니다.
작동하려면 입력이 필요합니다
들어와서 2초 만에 떠나는 방문자는 점수화할 것을 거의 남기지 않습니다. 그럴 때 정직한 출력은 낮은 신뢰도를 동반한 “uncertain”이지, 판정처럼 차려입은 추측이 아닙니다.