토큰 랜덤성 평가

예측 가능한 세션 쿠키, CSRF 토큰, 리셋 코드는 공격자가 위조하거나 추측할 수 있는 것입니다. Sequencer는 그런 토큰을 수백 개 수집해 각각이 실제로 지닌 예측 불가능성을 채점합니다. 이 플레이북은 등급 하나를 처음부터 끝까지 — 겨냥하고, 수집하고, 읽고, 내보내기 — 약 10분에 실행합니다. 대부분은 서버가 샘플을 내주기를 기다리는 시간입니다.

시작하기 전에. 먼저 엔게이지먼트 준비로 대상에 스코프를 잡으세요 — Sequencer는 라이브 요청을 여러 번 재전송하며, 스코프 밖에서는 발동하지 않습니다. 등급을 매길 토큰을 응답에서 설정하는 플로우가 하나 필요합니다(세션이나 CSRF 토큰의 Set-Cookie). 토큰은 권한이 있는 대상에서만 수집하세요. 샘플 하나하나가 갓 발급된 실제 자격 증명입니다.

1. Sequencer를 토큰에 겨냥하기 {#1-point-the-sequencer-at-a-token}

Sequencer 탭은 기본적으로 숨겨져 있습니다 — 매일 쓰는 루프의 일부가 아니라 가끔 꺼내 쓰는 워크벤치입니다. 탭 바 메뉴나 Ctrl-PGo to Sequencer로 드러냅니다.

캡처한 플로우로 먹입니다. History에서 응답이 토큰을 설정하는 플로우를 선택한 뒤 SpaceSend to Sequencer를 누릅니다. gori가 유력한 세션 쿠키를 자동 감지하고 CONFIG 패널에 데려다 놓습니다. 추측이 틀렸다면 c로 토큰 위치를 다시 설정하세요 — Cookie, Header, Regex, Position, JSONPath 중 하나를 고릅니다.

추출은 토큰의 변하는 영역만 겨냥하세요. 실제 토큰은 골격을 지닙니다 — sess_v1_ 접두사, 버전 바이트, 패딩 — 이는 샘플 전체에서 변하지 않습니다. 그 고정 구조를 랜덤인 양 세면 등급이 끌려 내려가고 비트 단위 테스트가 어긋날 수 있으므로, 토큰 서술자는 실제로 움직이는 부분만 덮어야 합니다.

History 탭 위에 열린 gori Send to Sequencer 설정 카드로, 자동 감지된 세션 쿠키를 토큰으로 보여 주고 샘플 수, 최대 요청 수, 동시성, 알림 행이 있다
캡처한 플로우를 Sequencer로 보내면 세션 쿠키가 자동 감지되며, 수집 전에 샘플 크기와 동시성을 설정할 수 있습니다.

체크포인트. CONFIG 패널에 소스 플로우와 방금 고른 토큰 위치가 표시되고, SAMPLES 패널은 아직 비어 있습니다.

2. 샘플 수집하기 {#2-collect-samples}

Ctrl-R을 눌러 수집합니다. gori는 소스 요청을 몇 번이고 재전송하며 각 응답에서 토큰을 뽑아내, 목표 개수에 이를 때까지 반복합니다. Ctrl-X로 일찍 멈춥니다. 수집은 기본적으로 동시성 1로 돌아갑니다. 세션 토큰은 흔히 상태를 가지기 때문입니다 — 요청마다 서버 측 카운터가 전진합니다 — 병렬로 쏘면 테스트가 의존하는 순서가 뒤섞입니다. 엔드포인트가 무상태일 때만 올리세요.

같은 수집을 헤드리스로 — 플로우 42를 재전송하고, SESSIONID 쿠키를 추출하고, 토큰 500개를 모읍니다:

gori run sequence 42 --cookie SESSIONID --count 500

체크포인트. 재전송이 들어오면서 SAMPLES 개수가 목표를 향해 올라갑니다.

3. 등급 읽기 {#3-read-the-grade}

ANALYSIS 패널은 유효 엔트로피(effective entropy)를 비트로 앞세웁니다 — 토큰당 실제 예측 불가능성의 보수적 추정치입니다 — 그리고 거기서 따라 나오는 등급을 보여 줍니다: Secure(≥ 88비트), Moderate(≥ 60), Weak(≥ 30), Critical(30 미만). 그 아래에는 gori가 토큰 비트스트림에 돌린 통계 테스트 묶음(monobit, runs, chi-square, 직렬 상관, 압축 등)이 놓입니다.

이렇게 읽습니다. 엔트로피 수치가 높고 모든 행이 통과하면, 토큰이 gori가 가진 모든 테스트에 랜덤하게 보인다는 뜻입니다 — 위조할 지름길이 나오지 않았습니다. 다만 중복이나 연속 토큰이 하나라도 있으면 엔트로피가 아무리 높게 읽혀도 판정이 곧장 Critical로 떨어집니다. 두 번 본 토큰은 예측할 수 있는 토큰이기 때문입니다. 작은 샘플(쓸 만한 토큰 약 20개 미만)은 강한 실패를 경고로 완화하고 등급에 상한을 씌우므로, 깨끗한 등급을 믿기 전에 더 모으세요.

체크포인트. ANALYSIS 패널에 전체 등급 하나와 그 뒤의 테스트별 표가 표시됩니다.

4. 판정 내보내기 {#4-export-the-verdict}

수집한 토큰은 살아 있는 자격 증명이므로 gori는 그것을 디스크에 절대 쓰지 않습니다 — 세션과 함께 사라집니다. 판정은 그래서는 안 됩니다. ⇧E로 원하는 경로에 Markdown 리포트를 내보내거나(팔레트는 같은 리포트를 JSON으로 제공합니다), SpaceiIssue로 정리합니다. 이때 Critical은 critical, Weak는 high, Moderate는 medium, Secure는 info로 매핑됩니다. 둘 중 어느 것도 토큰 값을 담지 않습니다. 리포트는 빈도표와 판정으로 만들어지므로, 새어 나갈 샘플이 그 안에 없습니다.

체크포인트. 저장된 등급 — 리포트든 Issue든 — 을 손에 넣었고, 뒤에 남은 원본 토큰은 하나도 없습니다.

다음 단계