XEY LABS — MYTHIC / 001 ID/ EN/ 中文/ 日本語/ 한국어 ← BUILD LOG PROJECT REPO ↗ GITHUB ↗

프로젝트 001: Mythic 공개 출시.

오늘 랩의 첫 프로젝트가 저장소에서 기록으로 넘어갑니다: Mythic —— 적응형 봇 완화. 캡차가 지는 시대를 위한 캡차 대체품으로 만들었습니다. 오늘부로 AGPL-3.0, 완전 공개입니다.

캡차는 죽었다, 그 죽음은 측정 가능하다

솔빙 팜은 천 개의 답을 점심값보다 싸게 팝니다. 비전 모델은 이미지 퍼즐을 텍스트처럼 읽습니다. 스텔스 브라우저는 잡기로 되어 있던 지문 검사를 태연히 지나갑니다. 모든 정적 퍼즐은 하나의 실패 모드를 공유합니다: 솔버가 한 번 발견되면, 영원히 죽습니다. 모든 단계에서 경제성은 공격자에게 유리합니다 —— 그래서 우리는 더 나은 퍼즐을 만드는 것을 그만두고 대신 남용에 가격을 매기기 시작했습니다.

테제: 클라이언트를 절대 신뢰하지 마라

Mythic은 브라우저를 기본적으로 적대적인 것으로 가정합니다. 클라이언트에서 도착하는 모든 바이트는 적대적 입력입니다 —— 그래서 클라이언트 SDK는 센서이지, 결코 심판이 아닙니다. 결정은 서버 측에서 내려집니다. 이름 붙고 감사 가능한 이유를 출력하는 결정론적 리스크 엔진에서요.

남용에 매기는 가격은 층층이 쌓입니다: 적응형 작업증명은 인간에게는 웹 워커 안에서 약 1초 —— 봇 팜에게는 요청마다 영원히 같은 비용입니다. 위험한 트래픽은 더 어려운 챌린지를 받고, 중요한 작업은 암호학적 증명을 요구할 수 있습니다. 그리고 판정은 수명이 짧은 Ed25519 서명 토큰으로 전달되며, 여러분의 백엔드가 로컬에서 검증합니다 —— 콜백이 필요 없습니다.

판정은 토큰이다, 콜백이 아니다

서버가 결정하면, 그 결정을 Ed25519로 서명합니다 —— 리스크 점수, 난이도, 만료를. 여러분의 오리진은 JWKS 엔드포인트의 공개 키로 로컬에서 검증합니다. mythicd에 대한 요청당 콜백도, 유출될 공유 비밀도 없습니다:

claims, err := xtoken.VerifyToken(pub, token)
if err != nil {
    // reject: malformed, bad signature, or expired
}
// claims.Decision and claims.Risk are yours to enforce;
// verification only proves mythicd signed these claims.

HTTP 표면은 두 개의 엔드포인트입니다. 챌린지 인, 증명 아웃:

$ curl -s mythicd:8080/v1/challenge \
    -d '{"site_key":"sk_live_..."}'
# → {"id":"ch_01J…","difficulty":18,…}

# solve the SHA-256 PoW, then:
$ curl -s mythicd:8080/v1/verify \
    -d '{"challenge_id":"ch_01J…","nonce":"48291033"}'
# → decision token (or a harder challenge)

먼저 우리가 깨뜨리려 했다

출시 전에, 우리는 직접 공격을 실행했습니다. 토큰 형식을 대상으로 한 만 번의 변이 폭풍이 실제 수용 버그를 잡아냈습니다: 서로 다른 문자열이 동일한 서명된 바이트로 디코딩되는 것. 라이브 카오스 세션은 위조된 헤더 하나로 IP별 레이트 리미터를 스무 번 중 스무 번 무너뜨릴 수 있음을 발견했습니다. 둘 다 수정되었습니다. 둘 다 회귀 테스트로 고정되었습니다. 퍼저가 이제 모든 푸시마다 CI에서 검증 경로를 갈아댑니다. 바이패스 보고서가 가장 유용한 부분이었습니다 —— 이 프로젝트가 보상하고 싶은 문화가 바로 그것입니다.

솔직히 아직 못하는 것

v0는 스텔스 브라우저와 네이티브 솔버를 갖춘 자금력 있는 운영자에게 집니다. 위협 모델에 글로 적어 두었습니다. 답은 로드맵이지 분위기가 아닙니다: 행동 바이오메트릭, 암호학적 단계 상승, 학습 엔진. 기본적으로 공개라는 것은 구멍도 공개라는 뜻입니다.

라이선스

모든 것 —— 엔진과 SDK —— 은 AGPL-3.0-or-later입니다. 읽고, 클론하고, 깨뜨리세요. 깨뜨렸다면 먼저 비공개로 알려 주세요. 기여는 저장소의 CLA 하에 환영합니다.

프로젝트 001이 라이브입니다. 프로젝트 002가 이미 대기 중입니다.

— XEY LABS, 출시일