Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
keyhog — Rust 기반 오픈소스 시크릿 스캐너 | Kitploit
도구/GitHubGitHub/santhreal/keyhog
Static AnalysisVulnerability ScannersContainer SecurityCode AnalysisConfiguration AuditingCloud SecurityDevSecOpsSecret DetectionThreat IntelligenceSupply Chain SecurityIncident Response
8813391일 전Kitploit 검토 완료
GitHub
santhreal/keyhog

keyhog

Rust 기반 오픈소스 시크릿 스캐너

저장소 보기웹사이트

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
<p align="center">
  <img src="https://raw.githubusercontent.com/santhreal/keyhog/HEAD/docs/assets/keyhog-banner.svg" alt="KeyHog GPU-accelerated open-source secret scanner for code, Git history, cloud, containers, browser assets, and CI" width="960" />
</p>

<p align="center">
  <a href="https://crates.io/crates/keyhog"><img src="https://img.shields.io/crates/v/keyhog?style=flat-square&amp;color=ffd60a&amp;label=crates.io&amp;labelColor=0a0a0a" alt="KeyHog on crates.io" /></a>&nbsp;
  <a href="https://santhreal.github.io/keyhog/"><img src="https://img.shields.io/badge/docs-KeyHog-ffd60a?style=flat-square&amp;labelColor=0a0a0a" alt="KeyHog documentation" /></a>&nbsp;
  <a href="https://github.com/santhreal/keyhog/actions"><img src="https://img.shields.io/github/actions/workflow/status/santhreal/keyhog/ci.yml?style=flat-square&amp;label=CI&amp;labelColor=0a0a0a" alt="CI" /></a>&nbsp;
  <a href="https://github.com/santhreal/keyhog/blob/main/LICENSE"><img src="https://img.shields.io/badge/license-MIT%20OR%20Apache--2.0-9aa0b4?style=flat-square&amp;labelColor=0a0a0a" alt="MIT OR Apache-2.0" /></a>&nbsp;
  <a href="https://github.com/santhreal/keyhog/blob/main/metrics/stars.svg"><img src="https://img.shields.io/github/stars/santhreal/keyhog?style=flat-square&amp;color=ffd60a&amp;label=stars&amp;labelColor=0a0a0a" alt="GitHub stars and repository-owned star history" /></a>
</p>

<p align="center">
  <strong><a href="https://santh.dev/keyhog/">웹사이트</a></strong> ·
  <strong><a href="https://santhreal.github.io/keyhog/">문서</a></strong> ·
  <strong><a href="https://santh.dev/blog/keyhog/">아키텍처</a></strong> ·
  <strong><a href="https://github.com/santhreal/vyre">Vyre GPU 엔진</a></strong>
</p>

# KeyHog: 코드, 클라우드, CI를 위한 GPU 가속 비밀 스캐너

**KeyHog은 Rust로 작성된 오픈소스 비밀 스캐너로, 소스 코드, Git 히스토리,
컨테이너, 클라우드 스토리지, 브라우저 자산, 협업 콘텐츠, 실행 중인 시스템 전반에서
유출된 API 키, 토큰, 비밀번호, 자격 증명을 탐지하고 검증합니다.**

대부분의 비밀 스캐너는 저장소 체크아웃에서 CPU 정규식 매칭에 그칩니다.
KeyHog은 **934개의 서비스별 탐지기**, 은닉 자격 증명을 위한 디코드 통과,
컨텍스트 인지 증거 및 억제, 실시간 공급자 검증, 그리고
[Vyre](https://github.com/santhreal/vyre)를 통한 일급 **CUDA, Metal, WGPU 실행**을
결합합니다. 캘리브레이션은 적격한 모든 순수 Rust CPU, Hyperscan/SIMD, GPU 백엔드를
측정합니다. 이후 자동 라우팅은 정확한 호스트와 워크로드 클래스에 대해 가장 빠른
패리티 검증 경로를 사용합니다.

| GPU는 실제 백엔드입니다 | 실제 공격 표면을 스캔합니다 | 신호와 노이즈를 분리합니다 | 결과에 따라 조치합니다 |
|---|---|---|---|
| CUDA, 네이티브 Metal, WGPU는 조용한 폴백 체인이 아닌 측정된 동급 백엔드입니다. | Git 히스토리, Docker 레이어, 아카이브, 클라우드 버킷, 소스 맵, WASM, HAR 캡처, 호스팅 Git 컬렉션, 전체 시스템을 스캔합니다. | 증거, 예제 억제, 기준선을 적용하기 전에 base64, hex, URL, protobuf, 멀티라인, 구조화된 구성을 디코드합니다. | 적격 자격 증명을 공급자 API로 검증하고, SARIF 또는 구조화된 봉투를 내보내며, 정확한 커버리지와 종료 의미를 보존합니다. |```sh
cargo install --locked keyhog
keyhog scan .
```
<p align="center">
  <img src="https://assets.kitploit.com/production/public/readmes/7654/dfb768a9b8e8fa64082992f11d0b284d5ec6a199fc1eac85e0352fb20452186f.gif" alt="KeyHog 스캔이 심각도, 증거, 파일 및 줄, 수정 방법, 결과, 적용 범위 상태를 보여줍니다" width="900" />
</p>

## GPU를 중심으로 구축된 시크릿 스캐너

KeyHog는 일반적인 컴퓨트 셰이더에 정규 표현식 몇 개를 넘겨주지 않습니다.
GPU 경로는 KeyHog와 함께 개발된 Rust GPU 컴퓨트 기반인
[Vyre](https://github.com/santhreal/vyre) 위에 구축되어 있습니다.
디텍터 트리거는 변경 불가능한 GPU 상주 테이블로 컴파일됩니다.
제한된 소스 배치는 CPU 및 Hyperscan 경로에서 사용되는 것과 동일한
확인, 억제, 증거, 보고 파이프라인에 대한 완전한 매치 위치를 생성합니다.

- **세 가지 물리적 GPU 피어.** CUDA, 네이티브 Metal, 휴대용 WGPU가
  각각 독립적으로 획득, 측정, 보고됩니다.
- **정확한 결과 일치.** 보정(Calibration)은 참조 경로와 발견 항목
  식별자가 다른 후보를 거부합니다. 더 빠른 잘못된 답변은 라우팅 테이블에
  절대 들어가지 않습니다.
- **영구 경로 증거.** KeyHog는 바이너리, 디텍터 코퍼스, 구성, 워크로드
  클래스, 호스트, 가속기, 드라이버, 측정된 타이밍 증거를 기록합니다.
  일반 스캔은 핫 경로에서 벤치마킹하지 않습니다.
- **상주 실행.** 데몬 워커는 컴파일된 디텍터와 가속기 상태를 따뜻하게
  유지하여 반복적인 파일, 아카이브, 히스토리, 원격, 클라우드 배치를 처리합니다.
- **숨겨진 CPU 탈출구 없음.** 명시적으로 선택된 가속기가 초기화되거나
  디스패치할 수 없으면 GPU 라벨 아래에서 CPU 결과를 반환하는 대신
  명시적으로 실패합니다.

기본 crates.io 설치에서는 휴대용 순수 Rust CPU 경로를 사용하므로
깨끗한 Rust 호스트에서 작동합니다. Hyperscan을 획득하지 않고도
세 가지 GPU 피어를 활성화할 수 있습니다:```sh
cargo install --locked keyhog --no-default-features --features portable,gpu
```
Hyperscan 또는 Vectorscan SIMD 정규식 피어를 활성화합니다:```sh
cargo install --locked keyhog --no-default-features --features portable,simd
```
생산 백엔드 진단을 실행한 다음, 측정된 라우트를 검사합니다:```sh
keyhog backend --self-test
keyhog calibrate-autoroute --policy all
keyhog backend --autoroute --json
```
[백엔드 가이드](https://santhreal.github.io/keyhog/backends.html)는
상주 테이블, 제한된 디스패치 모델, 패리티 계약, 그리고 재현 가능한
교차 검증 증거를 문서화합니다.

## 시작하기

### 설치 및 첫 스캔 실행

위의 두 명령은 최신 crates.io 릴리스를 설치하고 휴대용 순수 Rust 경로로
현재 트리를 스캔합니다.

CI 환경을 정확히 하나의 릴리스로 고정하려면
`cargo install --locked --version '=0.5.86' keyhog`을 사용하세요. KeyHog는 Rust 1.89
이상이 필요합니다. GPU, Hyperscan, CI, 휴대용, 소스 빌드 프로필에 대한 자세한 내용은
[설치 가이드](https://santhreal.github.io/keyhog/install.html)를 참조하세요.

KeyHog는 발견 항목이 활성 증거 정책을 차단하면 `1`로 종료됩니다. 기본
정책은 `likely` 및 `confirmed` 발견 항목을 차단하고 `review` 발견 항목은
종료 코드 `0`으로 표시된 상태로 유지합니다. `--evidence-policy paranoid`는 모든 등급을 차단합니다.
각 발견 항목의 정확한 증거 등급, 이유 코드, 파일, 줄, 탐지기, 그리고
수정 방법을 검토하세요. 다른 0이 아닌 코드는 입력, 시스템, 검증, 또는
커버리지 실패를 설명합니다. 자세한 내용은
[종료 코드 참조](https://santhreal.github.io/keyhog/reference/exit-codes.html)를 참조하세요.

전체 프로세스 계약은 다음과 같습니다:

| 종료 코드 | 의미 |
|---|---|
| `0` 성공 | 활성 증거 정책을 차단하는 발견 항목이 없고 커버리지 실패도 발생하지 않았습니다. 기본 정책에서는 검토 등급 발견 항목이 표시된 상태로 유지될 수 있습니다. |
| `1` 차단 발견 항목 | 활성 증거 정책을 차단하는 발견 항목이 하나 이상 있지만, 라이브로 확인된 항목은 없습니다. |
| `2` 운영자 오류 | 인수, 구성, 탐지기 코퍼스, 또는 운영자가 수정할 수 있는 입력을 수정하세요. |
| `3` 시스템 오류 | 실행기를 복구하거나 재시도하세요. 여기에는 저수준 I/O, 치명적 데몬 서비스, 증분 캐시, 명시적으로 선택된 SIMD 실패가 포함됩니다. |
| `4` 상태/자가 테스트 실패 | `doctor` 또는 `backend --self-test` 상태 검사가 비정상이었습니다. |
| `10` 라이브 자격 증명 | 하나 이상의 자격 증명이 라이브로 확인되었습니다. |
| `11` 스캐너 패닉 | 스캐너 상태를 신뢰할 수 없으므로 스캔 결과를 폐기하세요. |
| `12` 필수 GPU 실패 | 명시적으로 선택되거나 필수인 GPU 경로를 실행할 수 없습니다. |
| `13` 불완전한 커버리지 | 요청된 소스가 실패했거나 입력 커버리지가 불완전했으며, 어떤 발견 항목 결과도 우선하지 않았습니다. |
| `130` 중단됨 | SIGINT 또는 Ctrl-C로 프로세스가 중단되었습니다. |

**필터, 형식, 게이트:**

필터로 사용하기 전에 기준선을 생성하세요:```sh
keyhog scan . --create-baseline .keyhog-baseline.json
keyhog scan . --baseline .keyhog-baseline.json --format json-envelope --output keyhog.json
```
첫 번째 명령은 검토된 발견 사항을 스냅샷으로 저장하고 `0`으로 종료되며 이를 출력하지
않습니다. 해당 파일을 커밋한 다음, 두 번째 명령을 사용하여 새 발견 항목 식별자만 보고하세요.
기준 항목은 탐지기와 자격 증명 값에서 일치하며 파일 경로에서는 절대 일치하지 않으므로,
기록된 비밀을 이동해도 게이트가 실패하지 않지만 회전시키면 실패합니다. 변경된 자격 증명과
불완전한 적용 범위는 계속 표시됩니다. 모노레포 파티션을 포함한 전체 경로는 [새 비밀에 대해서만
실패](https://santhreal.github.io/keyhog/workflows/ci.html#fail-only-on-new-secrets)에 있습니다.

다음 스캔을 위해 [레시피
쿡북](https://santhreal.github.io/keyhog/recipes.html) 또는 [올바른 워크플로 선택](#choose-the-right-workflow)의
복사 가능한 명령을 사용하세요. 도구를 변경하지 않고도 Git 기록, 컨테이너 이미지, 클라우드 버킷,
저장소 컬렉션, URL 및 전체 머신을 스캔할 수 있습니다.

### 빠른 사전 커밋 스캔을 위한 저장소 보호

상주 KeyHog 데몬에 저장소를 등록하여 빠른 사전 커밋 비밀 탐지를 수행하세요
(Unix 필요, Windows에서는 프로세스 내 `keyhog scan` 사용):```sh
# 1. Start the daemon (accelerated by CUDA, Metal, WGPU, or SIMD)
keyhog guard up

# 2. Guard your repository (indexes baseline and installs pre-commit hook in one step)
keyhog guard add /path/to/repo

# 3. Every staged commit checks only changed blobs against in-memory attestations
keyhog scan --git-staged

# 4. View all active guarded repositories and their states
keyhog guard list

# 5. Turn the daemon on and off cleanly without losing registrations or durable index
keyhog guard down
```
[perpetual guard 가이드](https://santhreal.github.io/keyhog/workflows/guard.html)와
[pre-commit 워크플로우](https://santhreal.github.io/keyhog/workflows/precommit.html)를 참조하여
전체 구성, 상태 머신 수명 주기, 후크 자동화에 대해 알아보세요.

### GitHub Actions에 추가하기

`.github/workflows/keyhog.yml` 파일을 생성하세요:```yaml
name: keyhog
on:
  push:
    branches: [main]
  pull_request:
permissions:
  contents: read
  security-events: write
jobs:
  scan:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
      - uses: santhreal/keyhog@v0
        with:
          path: .
          severity: high
```
The Action scans the checked-out tree, fails on findings at `high` or
`critical`, uploads SARIF to Code Scanning, and retains the report as a workflow
artifact. Installation, coverage, backend, and report-publication failures also
fail the job.

Use the [GitHub Action guide](https://santhreal.github.io/keyhog/workflows/github-action.html)
for inputs, outputs, baseline adoption, monorepo partitions, verification, and
failure behavior. Use the [CI guide](https://santhreal.github.io/keyhog/workflows/ci.html)
for GitLab, CircleCI, Jenkins, Buildkite, and generic shell jobs. Use the
[mass-scanning guide](https://santhreal.github.io/keyhog/guides/mass-scanning.html)
for repository organizations, hosted Git groups, cloud buckets, and partitioned
inventories.

## 다른 도구들이 별도 제품으로 취급하는 스캔 표면

KeyHog는 추적된 소스 파일뿐만 아니라 유출될 수 있는 경계의 바이트를 스캔합니다.
경계마다 보고서 하나를 사용하여 CI가 정확한 커버리지와 실패 상태를 유지하도록 하세요.

| 노출 표면 | 예시 |
|---|---|
| 최종 패키지 아티팩트 | `npm pack`을 실행한 후 생성된 `.tgz`를 `keyhog scan package.tgz`로 스캔합니다. 아카이브 확장은 예상 소스 트리에 없는 생성 파일, 소스 맵, 픽스처, 메타데이터를 확인합니다. |
| 배포된 브라우저 애플리케이션 | `keyhog scan --url https://app.example.com/assets/app.js`는 제한된 JavaScript, 소스 맵, WASM, 응답 디코딩을 따르며 스캐너를 무제한 크롤러로 만들지 않습니다. |
| GitHub 이슈, 풀 리퀘스트, 디스커션, 위키, gist | `keyhog scan --github-collaboration owner/repo --github-all`은 체크아웃 외부의 모든 협업 표면을 스캔합니다. |
| AI 에이전트 및 MCP 구성 | `keyhog scan ~/.config ~/.claude ~/.codex`는 동일한 탐지기, 디코드, 증거, 보고 파이프라인을 로컬 도구 구성에 적용합니다. |
| 컨테이너 이미지 레이어 | `keyhog scan --docker-image registry.example.com/team/app:v1`은 빌드 중 도입된 파일을 포함하여 실행될 이미지 콘텐츠를 스캔합니다. |
| 클라우드 객체 인벤토리 | `keyhog scan --s3-bucket BUCKET`, `--gcs-bucket BUCKET`, 또는 `--azure-container-url URL`은 터미널 보고서에서 공급자 페이지네이션, 객체, 바이트 한도 커버리지를 보존합니다. |
| 전체 개발 호스트 | `sudo keyhog scan-system --space 50G`는 하드 스토리지 예산 하에서 마운트된 파일시스템과 도달 가능한 Git 히스토리를 발견합니다. |

이 경로들은 하나의 탐지 및 보고 계약을 공유합니다. 소스별 실패가
조용히 더 좁은 로컬 스캔으로 바뀔 수 없습니다.

## 올바른 워크플로 선택

먼저 소스 경계를 선택하세요. 프리셋은 탐지 작업을 변경하고, 백엔드는
실행을 변경합니다. 둘 다 작업 트리 스캔을 Git 히스토리, 공급자 인벤토리,
클라우드 스토리지, 또는 호스트 감사로 확장하지 않습니다.

정직한 `scan everything` 단축키는 없습니다. 완전한 에스테이트 검토는
아래 관련 경계를 별도 작업으로 실행하고 각 `json-envelope` 보고서를
원시 종료 코드와 함께 보관합니다.

| 필요 사항 | 시작 방법 | 처리량 및 재사용 | 커버리지 경계 |
|---|---|---|---|
| 빠른 로컬 피드백 | `keyhog scan . --fast --incremental` | 변경되지 않은 파일 해시를 재사용합니다. fast 프리셋은 디코드, 엔트로피, ML 작업을 건너뜁니다. | fast는 의도적으로 더 좁기 때문에 병합 전에 기본 정책을 실행하세요. |
| 전체 저장소 스캔 | `keyhog scan .` | 보정된 `auto` 및 CPU 코어 워커 기본값. 동일한 신뢰 트리의 반복 스캔에는 `--incremental`을 추가하세요. | 현재 파일만. Git 히스토리를 추가하지 않습니다. |
| 스테이징 커밋 게이트 | `keyhog scan --git-staged` 또는 `keyhog hook install` | 정확한 인덱스 블롭을 읽으므로 스테이징되지 않은 편집이 결과를 변경할 수 없습니다. | 스테이징된 콘텐츠만. 로컬 스테이징되지 않은 바이트가 중요할 때 작업 트리 스캔을 별도로 실행하세요. |
| 영구 저장소 가드 | `keyhog guard add . --mode repo` 그 다음 `keyhog guard status .` | 데몬 상주 루트 레지스트리, 7-상태 머신, 깨끗한 증명 캐시, 정책 ID 추적. | 실행 중인 데몬 필요. 가드는 스테이징 및 작업 트리 스캔을 보완하며 대체하지 않습니다. |
| GitHub 풀 리퀘스트 게이트 | `santhreal/keyhog@v0` | Action이 설치, 스캔, SARIF 및 아티팩트 게시 후 KeyHog의 상태를 보존합니다. | 체크아웃된 경로 하나. 조직에는 공급자 인벤토리 스캔을 사용하세요. |
| GitLab, Jenkins, Buildkite 또는 셸 CI | `keyhog scan . --format json-envelope --output keyhog.json` | 성공, 발견, 오류 시 보고서와 종료 코드를 유지합니다. 명시적으로 더 좁은 변경 라인 게이트에만 `--git-diff <base>`를 사용하세요. | 체크아웃에 존재하는 바이트 또는 선택된 diff. |
| 알려진 발견 사항이 있는 저장소 채택 | `.keyhog-baseline.json`을 생성하고 커밋한 후 `--baseline .keyhog-baseline.json`으로 스캔합니다. | 기존 ID는 베이스라인에 계속 표시되고 새 발견 사항만 게이트를 실패시킵니다. | 베이스라인은 변경된 자격 증명이나 불완전한 커버리지를 억제하지 않습니다. |
| 재귀적 Git 복구 | `keyhog scan --deep --git-history . --git-blobs . --daemon=off` | 딥 정책을 워커 클래스당 한 번 보정합니다. 프로세스 내에서 실행합니다. | 저장소 하나. `--git-history`는 현재 체크아웃의 조상만 다루므로 체크아웃하지 않은 브랜치는 커버리지 갭 없이 누락됩니다. `--git-blobs`는 댕글링 블롭, 수정된 커밋, 스태시, 노트, 주석 태그 메시지, 패킹된 refs에도 도달합니다. |
| 컨테이너 또는 아카이브 검사 | `keyhog scan --docker-image registry/app:v1` 또는 `keyhog scan incoming/` | 건너뛴, 손상된, 암호화된, 안전하지 않은, 또는 초과 크기 멤버가 계속 표시되도록 인벨로프 보고서를 유지하세요. | 선택된 이미지 또는 파일시스템 경로와 지원되는 중첩 형식만. |
| URL, 응답 또는 HAR 검사 | `keyhog scan --url https://api.example.com/config` 또는 `keyhog scan capture.har` | 제한된 소스 한도를 사용하고 터미널 인벨로프를 보존하세요. | 가져온 응답 또는 캡처 항목만. 크롤러가 아닙니다. |
| 조직 또는 클라우드 인벤토리 | `keyhog scan --daemon=off --github-org acme --format json-envelope --output acme.json` | 공급자, 소유자 또는 버킷별로 분할합니다. 독립 파티션을 각각 하나의 보고서와 상태로 동시에 실행하세요. | 작업당 선택된 공급자 인벤토리 하나. 페이지네이션 또는 객체 한도가 커버리지 경계로 남습니다. |
| 적격 발견 사항이 활성 상태인지 확인 | `keyhog scan . --verify` | 공급자 동시성 및 속도 제어는 스캐너 워커와 분리됩니다. | 선언된 공급자 엔드포인트에 자격 증명 파생 요청을 보냅니다. 모든 탐지기가 검증을 지원하지는 않습니다. |
| 전체 호스트 상태 스캔 | `sudo keyhog scan-system --space 50G` | 기본적으로 모든 CPU 코어를 사용하고 파일시스템 데이터 후 발견된 Git 히스토리를 스캔합니다. | 로컬 마운트된 파일시스템. 네트워크 마운트는 옵트인이며 공간 상한은 하드입니다. |
| Unix에서 GPU 지원 디렉터리, 히스토리, 아카이브, 원격 또는 클라우드 인벤토리 | autoroute를 보정하고 `keyhog daemon start --mass`를 시작한 후 `keyhog scan --daemon=mass <SOURCE>`를 실행합니다. | 제한된 배치를 하나의 컴파일된 CPU, Hyperscan, CUDA, Metal 또는 WGPU 워커로 스트리밍합니다. 웜 변경되지 않은 파일시스템 트리에는 `--incremental`을 추가하세요. 터미널 영수증은 정확한 총 및 GPU 배치, 청크, 바이트, GPU 점유율, 처리량을 보고합니다. | 베이스라인, 검증, 잠금, 프리셋, 오버레이 및 기타 스캐너 정책 변경은 획득 전에 거부됩니다. 증분 상태는 데몬 로컬 파일시스템 루트에만 적용됩니다. |

### 지원되는 모든 소스 경계 스캔

경계당 하나의 명령을 사용하세요. 각 인벤토리 파티션에 대해 `json-envelope` 보고서와
원시 종료 상태를 유지하세요.

| 소스 또는 사용 사례 | 명령 |
|---|---|
| 여러 로컬 루트 | `keyhog scan services/api services/web deploy/` |
| 지속적으로 변경되는 파일 | `keyhog watch services/api deploy/` |
| 스테이징된 바이트, 변경된 라인, 도달 가능한 히스토리 또는 블롭 | `keyhog scan --git-staged`, `--git-diff main`, `--git-history .`, 또는 `--git-blobs .` |
| 네이티브 바이너리 및 펌웨어 문자열 | `keyhog scan --binary firmware.bin` (일반 디렉터리 스캔은 바이너리를 건너뛰고 여전히 `0`으로 종료) |
| 아카이브 및 압축 소스 | `keyhog scan incoming/` (지원되는 멤버는 자동으로 확장) |
| Docker 이미지 레이어 | `keyhog scan --docker-image registry/app:v1` |
| JavaScript, 소스 맵, WASM 또는 엔드포인트 응답 | `keyhog scan --url https://api.example.com/config` |
| HTTP 요청 및 응답 캡처 | `keyhog scan capture.har` |
| GitHub 이슈, 풀 리퀘스트, 디스커션, 위키, gist | `keyhog scan --github-collaboration owner/repo --github-all` |
| GitHub, GitLab 또는 Bitbucket 인벤토리 | `--github-org ORG`, `--gitlab-group GROUP`, 또는 `--bitbucket-workspace WORKSPACE` |
| S3, GCS 또는 Azure Blob 인벤토리 | `--s3-bucket BUCKET`, `--gcs-bucket BUCKET`, 또는 `--azure-container-url URL` |
| 다른 도구의 제한된 스트림 | `producer \| keyhog scan --stdin` (`set -o pipefail`을 사용하여 실패한 프로듀서가 0바이트 스캔이 아닌 자체 오류를 표시하도록) |

일반 디렉터리 스캔은 네이티브 바이너리를 읽지 않습니다. 각각은
`binary (extension or content sniff)` 커버리지 갭이 되고 스캔은 여전히 `0`으로
종료하며 `--no-default-excludes`는 이를 변경하지 않으므로 컴파일된 아티팩트가
범위에 있을 때 `--binary`를 전달하세요. 해당 플래그는 `binary` 기능이 있는
빌드가 필요하며, 기본 crates.io 설치에는 있고 lean `ci` 기능에는 없습니다.

네이티브 바이너리 추출은 명명된 탐지기의 명시적 형태 계약을 충족하는
완전한 자격 증명을 보고합니다. 컴파일된 데이터 섹션의 짧은 접두사 조각과
일반 할당 형태 문자열은 소스 컨텍스트를 유지하지 않으므로 억제합니다.

엔드포인트 가져오기는 제한되고 SSRF-스크리닝됩니다. 크롤러가 아닙니다.
프라이빗 클라우드 엔드포인트와 자격 증명 전달에는 명시적 신뢰 플래그가 필요합니다.
공급자 토큰은 프로세스 인수가 아닌 문서화된 환경 변수에 속합니다.

소스 및 정책 세부 사항은 [워크플로 선택기](https://santhreal.github.io/keyhog/capabilities.html),
유지 관리되는 저장소 게이트는 [GitHub Action
가이드](https://santhreal.github.io/keyhog/workflows/github-action.html), 내구성 있는 보고서와
종료 처리는 [직접 CI
가이드](https://santhreal.github.io/keyhog/workflows/ci.html), 분할 및 집계는 [대량 스캔
가이드](https://santhreal.github.io/keyhog/guides/mass-scanning.html)를 사용하세요. [레시피
쿡북](https://santhreal.github.io/keyhog/recipes.html)은 컨테이너, 아카이브, URL, GitHub 협업 콘텐츠, 클라우드 소스를 다룹니다.

### 추측 없는 속도 및 동시성

기본값으로 시작하세요. Cargo는 `cargo install` 후 KeyHog를 실행할 수 없으므로
멀티 백엔드 Cargo 빌드를 설치한 후 아래 명령을 한 번 실행하고 호스트, 바이너리,
탐지기 코퍼스, 드라이버 또는 워크로드 클래스가 변경된 후 다시 실행하세요.```sh
keyhog calibrate-autoroute --policy all
keyhog backend --autoroute --json
```
| 제어 | 용도 | 유지해야 할 불변 조건 |
|---|---|---|
| 보정된 `--backend auto` | 일상적인 CPU, Hyperscan 또는 GPU 선택. | 명시적 백엔드는 진단용 오버라이드이지 더 빠른 기본값이 아님. |
| `--threads <N>` | 공유 러너에서 CPU 용량 예약. 전용 호스트는 일반적으로 설정하지 않은 채로 두어 KeyHog가 사용 가능한 코어를 사용하도록 해야 함. | 모든 값은 양수여야 함. 여러 동시 KeyHog 프로세스는 각각 작업자 풀을 소유하므로 호스트 예산을 파티션별로 나누어야 함. |
| `--reader-threads <N>` | 측정된 스토리지 파이프라인에서 스캔이 아닌 리더 작업이 병목인 경우. | 기본값은 스캔 작업자 풀에서 파생됨. 프로파일링에서 리더 병목이 확인될 때까지 설정하지 않은 채로 둠. |
| `--incremental` 및 `--incremental-cache <PATH>` | 동일한 신뢰 트리의 반복 스캔. | 하나의 인덱스를 관련 없는 저장소나 신뢰할 수 없는 작업 간에 공유하지 말 것. |
| 공급자 또는 저장소 파티션 | 동시 에스테이트 스캔 및 독립적 재시도. | 파티션별로 하나의 터미널 봉투와 원시 종료 코드를 유지할 것. 발견 항목을 연결하고 커버리지 상태를 폐기하지 말 것. |
| `--verify-concurrency`, `--verify-rate` 및 `--verify-batch` | 파일 스캔과 독립적으로 라이브 공급자 검사를 제한. | 검증은 자격 증명 파생 요청을 전송함. 이 동시성은 CPU 수가 아닌 공급자 속도 제한이 결정함. |
| 대량 데몬 | 단일 Unix 작업자에서 TB 규모의 디렉터리, 히스토리, 아카이브, 원격 또는 클라우드 스트림. | 각 프레임은 8 MiB 및 1,024 청크로 제한됨. 데몬은 프래그먼트 상태를 직렬화하고 정확한 CPU/GPU 실행 영수증을 반환함. |
| `--fast`, 기본값, `--deep` 또는 `--precision` | 명시적 탐지 비용 및 재현 정책 선택. | 이 프리셋은 상호 배타적이며 커버리지를 변경함. 서로 바꿔 쓸 수 있는 속도 노브가 아님. |

`keyhog config --effective`로 해석된 정책을 검사하십시오. `--profile`을
사용하여 리더, 배치 또는 채널 깊이 제어를 변경하기 전에 고정된 스캐너 단계와
전체 운영자 실행을 측정하십시오. 저오버헤드 보고서는 소스, 백엔드, 캐시,
워크로드, 스레드, 입력, 상태 전환, CPU 시간, 최대 메모리, 정확한 바이너리
SHA-256, 활성 기능 SHA-256, 대상 트리플, 빌드 프로필, 컴파일러, 할당자,
연결된 백엔드 SHA-256, 탐지기 코퍼스 SHA-256, 활성 탐지기 BLAKE3, 컴파일된
계획 BLAKE3, 해시된 탐지기 출처, 완전한 해석 구성 BLAKE3, 성능 정책 BLAKE3,
프리셋, 적용된 보호 상태, 소스 어댑터, 해시된 소스 대상 BLAKE3, 해시된 소스
파티션 BLAKE3, 원시 소스 바이트, 소스 단위 팬아웃, 디코드 파생 바이트,
완료된 백엔드 디스패치 바이트 및 안정적인 크기/팬아웃 버킷을 기록합니다.
소스 어댑터가 아직 구분할 수 없는 바이트 도메인은 측정된 0이 되는 대신
명시적으로 사용 불가로 유지됩니다. 보고서는 소스 콘텐츠, 자격 증명 값, 원시
경로, 원시 URL 또는 원시 구성 값을 기록하지 않습니다. `--perf-trace`는
비용이 많이 드는 패턴별 및 백엔드 진단 카운터에만 사용하십시오.
대상 작업자에서 재현 가능한 측정이 개선을 보여줄 때까지 고급 파이프라인
제어는 설정하지 않은 채로 두십시오.

반복적인 전체 저장소 스캔의 경우:```sh
keyhog scan . --incremental \
  --format json-envelope --output keyhog.json
```
공유 러너의 경우 작업에 스캐너 워커 4개와 리더 워커 1개가 할당됩니다:```sh
keyhog scan . --threads 4 --reader-threads 1 \
  --format json-envelope --output keyhog.json
```
두 번째 명령은 리소스 예산일 뿐, 보편적인 최적값이 아닙니다. 명시적 워커 수를 선택하기 전에 대상 호스트를 측정하세요.

[심층 복구](https://santhreal.github.io/keyhog/guides/deep-recovery.html) 및
[시스템 전체 분류](https://santhreal.github.io/keyhog/guides/system-wide-triage.html)의 경우,
해당 전용 가이드를 사용하세요. 이들의 적용 범위와 완료 규칙은 일반 저장소 스캔과 다르기 때문입니다.

## 시크릿 스캐너 벤치마크

이 패널들은 탐지 정책, CPU 및 GPU 실행 요청, 증분 캐시 동작, 웜 데몬 요청을 비교합니다. 모든 값은 확인된 벤치마크 스냅샷에서 생성됩니다. 스냅샷은 스캐너 버전, 실행 파일 다이제스트, 탐지기 다이제스트, 코퍼스, 호스트, 실행 타임스탬프를 바인딩합니다. 경쟁사 출처 및 카테고리별 재현율은 [전체 벤치마크 증거](#performance)를 사용하세요.

### 탐지 정확도

<!-- BENCH:accuracy:start -->
KeyHog `KeyHog v0.5.70`이(가) **mirror** 코퍼스를 스캔했습니다: 15,000개 픽스처, 3,000개 라벨링된 양성, 2,431,242 입력 바이트. 정답 키 매니페스트는 스캔 트리에서 제외되었습니다. 행은 **AMD Ryzen 9 9950X 16-Core Processor**에서 명시적 Hyperscan/SIMD 경로의 기본 정책을 사용합니다.

| 정밀도 | 재현율 | F1 | 실제 양성 | 오탐 | 미탐 |
|---:|---:|---:|---:|---:|---:|
| 0.9651 | 0.9027 | 0.9328 | 2,708 | 98 | 292 |

추적된 소스 트리는 깨끗했습니다.
<!-- BENCH:accuracy:end -->

### 실행 경로, 프리셋 및 캐시

<!-- BENCH:config:start -->
**AMD Ryzen 9 9950X 16-Core Processor** 및 **NVIDIA GeForce RTX 5090**, 32개 논리 코어, 15,000개 픽스처, 3,000개 라벨링된 양성, 2,431,242 입력 바이트에서 측정. 스캐너: `KeyHog v0.5.70`. 추적된 소스 트리는 깨끗했습니다.

#### 실행 경로별 전체 스캔

모든 행은 증분 캐시 및 데몬이 꺼진 기본 탐지 정책을 사용합니다. 자동 행은 요청된 정책을 기록하지만, 벤치마크 결과는 선택된 영구 경로를 바인딩하지 않으므로 라우팅 증거가 아닙니다. GPU 행은 이 작은 코퍼스에서 획득 및 전체 스캐너 시작을 포함합니다. GPU 커널 크로스오버 측정이 아닙니다.

| 요청된 경로 | 벽시계 | 처리량 | 최고 RSS | F1 |
|---|---:|---:|---:|---:|
| Hyperscan/SIMD | 860 ms | 2.70 MB/s | 416 MiB | 0.9328 |
| Pure-Rust CPU | 903 ms | 2.57 MB/s | 509 MiB | 0.9328 |
| CUDA | 2.03 s | 1.14 MB/s | 963 MiB | 0.9328 |
| WGPU | 1.97 s | 1.18 MB/s | 1264 MiB | 0.9328 |
| 자동 | 1.46 s | 1.59 MB/s | 634 MiB | 0.9328 |

#### Hyperscan/SIMD의 탐지 정책

경로, 캐시, 데몬 상태, 코퍼스, 호스트는 고정됩니다. 프리셋은 탐지 작업을 변경하므로 시간뿐만 아니라 정밀도와 재현율도 비교하세요.

| 정책 | 벽시계 | 정밀도 | 재현율 | F1 | 발견 수 |
|---|---:|---:|---:|---:|---:|
| Fast | 737 ms | 0.9700 | 0.8837 | 0.9248 | 2,738 |
| Default | 860 ms | 0.9651 | 0.9027 | 0.9328 | 2,816 |
| Deep | 861 ms | 0.9645 | 0.9067 | 0.9347 | 2,845 |
| Precision | 849 ms | 0.9590 | 0.6397 | 0.7674 | 2,001 |

#### 증분 웜 재실행

벤치마크는 BLAKE3 Merkle 인덱스를 채운 다음 두 번째 동일한 스캔의 시간을 측정합니다. 스캐너 시작이 지배적이므로 작은 합성 트리는 거의 변하지 않습니다. 속도 향상을 주장하기 전에 저장소를 측정하세요.

| Hyperscan/SIMD 기본 정책 | 벽시계 | 처리량 | 최고 RSS |
|---|---:|---:|---:|
| 캐시 꺼짐 | 860 ms | 2.70 MB/s | 416 MiB |
| 웜 증분 캐시 | 617 ms | 3.76 MB/s | 457 MiB |
<!-- BENCH:config:end -->

### 웜 데몬 요청

<!-- BENCH:daemon:start -->
결정적 8 MiB 일반 파일(`sha256:afafbe7b6487fd62866f510e7c281a9e7bfeaa8dc585d7b0478c92ee6c4f5ef5`)이 프로세스 내에서 한 번, 워밍업 요청 후 소유 데몬을 통해 한 번 스캔되었습니다. 데몬 시간은 클라이언트 요청입니다. 데몬 RSS는 상주 서버에 속합니다.

| 명시적 경로 | 프로세스 내 | 웜 데몬 | 웜 / 일회성 | 프로세스 내 RSS | 데몬 RSS |

---

[Read more](https://github.com/santhreal/keyhog)
도구 다운로드