TL;DR

  • ScrubVault는 외부 대형 언어 모델(LLM)에 프롬프트를 보내기 전 개인 식별 정보(PII)를 로컬에서 마스킹하고 응답에서 복원하는 제로 의존성 프라이버시 프록시임.
  • 이메일, 국제은행계좌번호(IBAN), IP 주소, 신용카드 번호, 납세자 식별 번호를 {{EMAIL_1}}, {{IBAN_1}} 같은 결정적 토큰으로 대체함.
  • 토큰 매핑은 휘발성 메모리에만 저장되며 디스크에는 기록되지 않음.
  • Python SDK, 독립 실행형 명령줄 인터페이스(CLI), 표준 입출력(stdio) 기반 모델 컨텍스트 프로토콜(MCP) 서버를 제공함.
  • 순수 Python 표준 라이브러리만 사용하며, 정규식 서비스 거부(ReDoS) 방어와 Raptor Guard 정적 애플리케이션 보안 테스트(SAST) 결과를 제시함.

아키텍처

  • 프롬프트를 ScrubVault의 로컬 메모리에서 검사하고 민감 정보를 마스킹한 뒤, 마스킹된 프롬프트를 공용 클라우드 LLM API로 전송하는 구조임.
  • 클라우드 응답에 포함된 토큰은 로컬 메모리에서 원래 값으로 복원되며, 서비스 설명에 따르면 PII는 클라우드로 전송되지 않음.
  • 설치 명령은 pip install scrub-vault임.

빠른 시작

  • Python SDK에서는 ScrubVault를 생성한 뒤 mask로 입력을 마스킹하고, 마스킹된 텍스트를 원하는 LLM에 전달한 다음 unmask와 토큰 매핑으로 응답을 복원하는 방식임.
  • 예시 입력에는 고객 이름 Max, 이메일 주소, IBAN이 포함되며, 마스킹 결과에서 이메일과 IBAN이 각각 {{EMAIL_1}}, {{IBAN_1}}로 대체됨.
  • 독립 실행형 CLI는 계약서 문구의 GDPR 제32조 위험 점수 계산과 데이터셋 파일의 직접 마스킹을 지원함.
  • 위험 점수 계산 명령은 python -m src.cli.main audit "Contract with Herr Schmidt, IBAN: DE89370400440532013000"임.
  • 데이터셋 마스킹 명령은 python -m src.cli.main scrub-dataset input.json output_clean.json임.

MCP 통합

  • ScrubVault에는 네이티브 stdio MCP 서버가 포함되며, claude_desktop_config.json 또는 Antigravity 설정에 서버 명령, 인수, 작업 디렉터리를 등록하는 방식임.
  • 사용 가능한 MCP 도구는 다음 네 가지임.
  • scrub_mask_text: 입력 텍스트의 PII를 마스킹하고 되돌릴 수 있는 토큰 매핑을 반환함.
  • scrub_unmask_text: 토큰을 원래 값으로 바꿈.
  • scrub_audit_risk: 위험 점수와 탐지 내역을 계산함.
  • scrub_anonymize_json: JSON 구조를 재귀적으로 마스킹함.

보안 및 코드 표준

  • re, json, sys, typing 등 Python 표준 라이브러리만 사용하는 제로 서드파티 의존성 구성임.
  • 토큰 매핑은 휘발성 메모리에만 존재하며 디스크에 기록되지 않는 인메모리 볼트 방식임.
  • 정규식 패턴은 알고리즘 복잡도 공격을 방지하도록 엄격히 제한됨.
  • Raptor Guard SAST 검증 결과는 치명적, 높음, 중간 심각도 발견 사항이 모두 0건임.

라이선스

  • Apache License 2.0으로 제공되며, Diamantenschmiede의 오픈소스 연구 및 엔지니어링 프로젝트임.