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

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

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

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
jev-ids — TypeSafe의 Jev 기반의 초고속 토큰 효율적 침입 탐지 시스템(IDS). | Kitploit
도구/GitHubGitHub/jev-sec/jev-ids
Defensive ToolsNetwork SecurityThreat IntelligenceMachine LearningIntrusion DetectionPapers & ResearchAnomaly DetectionLog Analysis
GitHubjev-sec/jev-ids

jev-ids

TypeSafe의 Jev 기반의 초고속 토큰 효율적 침입 탐지 시스템(IDS).

저장소 보기
1312413일 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
웹사이트
Jev IDS 배너: jev_ids 터미널 로고, "System One Model 기반 침입 탐지, LLM 및 Random Forest와 벤치마크 비교"라는 태그라인, 그리고 NSL-KDD에서 탐지기를 실행하는 명령어를 보여줍니다

Jev IDS

Python 3.13+ Detector Jev, from TypeSafe Dataset NSL-KDD License MIT

단 한 번의 요청으로 침입 탐지. TypeSafe의 Jev에게 네트워크 플로우 하나와 레이블이 지정된 예시 다섯 개를 보여주세요. 해당 플로우가 공격인지, 어떤 종류인지를 0.5초 만에 파싱할 텍스트 없이 답합니다.

Jev IDS는 사이버보안 커뮤니티의 참조 벤치마크인 NSL-KDD에서 최신 LLM(Gemini 3.6 Flash on Vertex AI), 고전적 머신러닝 모델(Random Forest), 비지도 모델(Isolation Forest)과 비교 테스트되었습니다: 2,000개 플로우, 3개 시드, 카테고리당 0~8개의 예시(k). 동일한 다섯 개의 예시(k = 1)가 주어졌을 때, Jev IDS는:

  • LLM보다 7.7배 빠름: 플로우당 0.32초 대 2.42초.
  • LLM보다 22배 저렴함: 정가 기준 백만 플로우당 $74 대 $1,651.
  • LLM만큼 정확함: 0.953 대 0.942.
  • Random Forest보다 18배 적은 오탐: 동일한 874개 정상 플로우에서 43 대 764.

LLM은 F1에서 더 나은 탐지기입니다: k = 1에서 0.880 대 Jev의 0.856이며, 모든 k에서 앞서 있습니다(McNemar p < 0.001). 이는 예시에 표시된 종류의 공격을 더 많이 잡아내기 때문입니다. Jev는 두 번째로 우수하며, 예시에 없는 종류인 제로데이 공격에서는 k = 1부터 k = 8까지 LLM보다 더 많이 잡아냅니다(k = 1에서 0.747 대 0.713). 수치, 그림 및 그 한계는 증거와 한계와 docs/results.md에 있습니다.

루프 읽기 · 요청 템플릿 · 용어집

작동 방식

Jev는 System One Model입니다. 텍스트를 작성하는 대신 state를 읽고 그에 대한 타입이 지정된 질문에 확률로 답합니다. Jev IDS는 하나의 플로우를 지시사항, 컬럼 이름, 다섯 개의 카테고리 설명, 레이블이 지정된 예시와 함께 state에 넣고 두 가지 질문을 합니다. is_attack은 확률로 반환됩니다. category는 신뢰도와 함께 다섯 가지 옵션 중 하나로 반환됩니다. 확률이 0.5에 도달하면 공격으로 판정합니다.

하나의 플로우, 두 개의 타입 지정된 답변: noul 질문인 is_attack은 0.82를 반환하며 0.5 컷을 넘으므로 판정은 공격; choice 질문인 category는 신뢰도 0.84로 dos를 반환

모든 요청은 동일한 경로를 따릅니다:

테스트 중인 플로우와 레이블이 지정된 예시가 Jev에 대한 하나의 요청으로 들어가며, 그 state는 지시사항, 컬럼, 카테고리, 예시 및 플로우를 담고 두 개의 타입 지정된 질문을 가집니다; 답변은 p_attack 0.82, 판정 attack, 그리고 신뢰도 0.84의 category dos로 반환됩니다

전체 요청은 하나의 파일, prompts/nsl-kdd/jev.json입니다. Python은 플로우와 예시만 추가하며, 파일의 sha256은 모든 예측 행에 prompt_hash로 전달되므로 서로 다른 것을 요청한 실행이 동등하게 비교되는 일은 없습니다. 예시는 카테고리로만 레이블이 지정됩니다: neptune과 같은 공격 이름은 결코 모델에 도달하지 않습니다.

동일한 플로우, 예시 및 0.5 컷이 두 개의 베이스라인에 전달됩니다: JSON 출력 스키마를 가진 Agno 에이전트를 통한 LLM(논문에서는 Vertex AI를 통한 Gemini 3.6 Flash; 대안으로 ChatGPT Codex 백엔드를 통한 GPT-5.6 또는 DeepSeek)과 동일한 예시로 훈련된 scikit-learn Random Forest입니다. 세 번째 베이스라인인 Isolation Forest는 풀의 정상 플로우에만 적합되며 결코 예시를 보지 않습니다: 이는 비지도 참조로, k = all에서만 해당됩니다.

사용해 보기

git clone https://github.com/jev-sec/jev-ids.git
cd jev-ids
uv sync
# .env: TYPESAFE_API_KEY for Jev. Gemini needs `gcloud auth application-default login` and GOOGLE_GENAI_USE_VERTEXAI=true,
# GOOGLE_CLOUD_PROJECT and GOOGLE_CLOUD_LOCATION=global in the environment; DEEPSEEK_API_KEY and CHATGPT_CLIENT_ID only for the other LLMs.

NSL-KDD를 data/raw/nsl-kdd/에 다운로드하고 한 번 준비하세요:

uv run python -m scripts.prepare_nsl_kdd
uv run jev-ids run --dataset data/nsl-kdd/dataset.json --detector jev --split smoke --k 0,1

smoke 분할은 다섯 개의 플로우입니다. 실행은 results/<timestamp>-nsl-kdd-jev-smoke/에 config.json, predictions.jsonl의 플로우당 하나의 JSON 행(판정, 정답, p_attack, 카테고리, 신뢰도, 지연 시간 및 게이트웨이의 토큰 보고서)과 responses.jsonl의 원시 답변을 기록합니다.

탐지기 비교

uv run jev-ids run --dataset data/nsl-kdd/dataset.json --detector jev --split pilot --k 0,1,2,4,8 --seeds 0,1,2
uv run jev-ids run --dataset data/nsl-kdd/dataset.json --detector llm:gemini --model gemini-3.6-flash --split pilot --k 0,1,2,4,8
uv run jev-ids run --dataset data/nsl-kdd/dataset.json --detector random_forest --split pilot --k 1,2,4,8,all
uv run jev-ids run --dataset data/nsl-kdd/dataset.json --detector isolation_forest --split pilot --k all
uv run jev-ids metrics results/<run_id> [results/<run_id> ...] > results/summary.csv
uv run jev-ids compare --a results/<jev_run> --b results/<rf_run> --subset novel --k-a 0 --k-b all  # novel = zero-day attacks

k는 카테고리당 레이블이 지정된 예시의 수입니다. 다섯 개 카테고리에서 k = 1은 다섯 개의 예시를 의미하며, all은 전체 풀을 의미합니다. metrics는 탐지기와 k당 하나의 CSV 행을 출력하며 F1, 제로데이 공격에 대한 재현율(코드에서 novel) 및 카테고리별 재현율, p_attack의 PR-AUC와 ROC-AUC, 토큰, 지연 시간 및 비용을 포함합니다. compare는 두 실행을 플로우별로 짝지어 불일치 쌍에 대해 McNemar 검정을 실행합니다. 두 탐지기가 불일치하는 플로우만이 이들을 구별하기 때문입니다. 비용은 모든 탐지기에 대해 동일하게 prices.json의 정가에 토큰을 곱하여 오프라인으로 계산됩니다.

논문 재현

docs/protocol.md는 입력(2,000개 플로우의 paper 분할, 프롬프트, 모델 ID, 가격)을 고정하며, make paper는 해당 분할에 대해 네 개의 탐지기를 실행하여 results/paper/에 저장하고 results/paper/summary.csv를 작성합니다. 각 탐지기는 자체 타겟(make paper-jev, make paper-llm, make paper-random-forest, make paper-isolation-forest)을 가지므로 별도의 터미널에서 실행할 수 있습니다; LLM이 느린 쪽입니다. make paper-llm은 Vertex AI에서 Gemini 3.6 Flash를 k당 하나씩 다섯 개의 병렬 프로세스로 실행합니다(make -j5 paper-llm); 할당량 오류나 타임아웃은 오류 행이 되며, uv run jev-ids redo-errors results/paper/<run>이 해당 플로우를 제자리에서 다시 판정합니다. 전체 표와 그림은 docs/results.md에 있습니다.

빠르고 저렴한 이유

  • 하나의 요청, 두 개의 답변. 두 질문 모두 동일한 state에서 실행되며 확률, 옵션 및 신뢰도로 반환됩니다. 파싱할 것도, 강제할 스키마도 없습니다.
  • 입력만. Jev는 백만 입력 토큰당 $0.042를 청구하며 출력에는 아무것도 청구하지 않습니다. 플로우당 약 1,800 토큰에서 백만 건의 판정 비용은 약 $74입니다.
  • 프롬프트는 파일입니다. 그 sha256이 모든 행에 실리므로 서로 다른 프롬프트를 가진 실행이 동등하게 비교되는 일은 없습니다.
  • 가장 안쪽 루프에 플로우. 프롬프트 접두사가 가능한 한 오래 일정하게 유지되므로 제공자 캐시가 최상의 기회를 얻습니다.
  • 실패 시 열림. 실패한 호출은 error가 있는 행이 되며, 경보 없음으로 계산됩니다. 결코 충돌하지 않습니다.
  • 모두에게 동일한 컷. p_attack ≥ 0.5가 Jev, LLM 및 forest에 대해 결정합니다. 탐지기별 튜닝은 없습니다.

읽을 수 있을 만큼 작음

도구 다운로드