시크릿 마스킹 도구
시크릿 마스킹 도구는 공유하려는 텍스트 — 로그 발췌, 지원 티켓, 채팅 메시지, 설정 덤프 — 를 스캔하여 다른 사람이 읽기 전에 그 안에 숨은 자격 증명을 제거합니다. 여기에 텍스트를 붙여넣거나 파일을 드롭하면 공급자 API 키, 액세스 토큰, 개인 키 블록, JSON Web Token, 카드 번호, 이메일 주소를 찾아 각 적중을 마스킹하여 표로 보여주고, 모든 비밀이 [REDACTED] 로 교체된 깨끗한 복사본을 만듭니다. 모든 것은 브라우저 안에서 100% 실행됩니다: 아무것도 업로드되지 않고, 아무것도 저장되지 않으며, 텍스트 분석은 네트워크 요청을 만들지 않습니다. 동반 가이드 붙여넣기 전에 비밀을 마스킹하세요는 스캐너가 잡을 수 있는 것과 없는 것을 설명합니다. 브라우저 캡처에는 HAR 분석기를, 설정 파일에는 .env 파서를 사용하세요.
마지막 업데이트:
또는 텍스트 파일을 이 상자 안 어디에나 드롭하세요. 제한: 2 MB. 파일은 이 기기에서만 읽히며 절대 업로드되지 않습니다.
스캔 결과
강조 미리보기 (마스킹됨)
발견 항목
스캐너가 찾는 것 — 그리고 판단하는 방법
대부분의 비밀은 공격이 아니라 도움을 주려는 마음에서 샙니다. 누군가 로그를 티켓에 붙이고, 설정 파일을 채팅에 붙이고, curl 명령을 포럼 글에 붙이면 — 마침 그 안에 있던 자격 증명도 함께 이동하여, 텍스트를 색인하고 전달하고 영원히 보관하는 시스템으로 들어갑니다. 이 페이지는 그 붙여넣기 직전의 멈춤입니다. 텍스트를 입력하거나 드롭하면 입력하는 동안 스캔이 실행됩니다: 개수 밴드가 유형별로 발견을 합산하고, 미리보기가 각 적중을 그 자리에서 강조하며 값을 마스킹하고, 발견 표가 유형, 마스킹된 형태, 줄 번호를 나열하며, 아래의 마스킹된 복사본이 각 적중을 하나의 표식 [REDACTED] 로 교체하여 복사하거나 .txt 파일로 다운로드할 준비를 합니다.
탐지의 첫 번째 층은 형태입니다. 실제 공급자의 실제 자격 증명은 알아볼 수 있는 형태를 가지며, 스캐너는 주요한 것들을 압니다: AWS 액세스 키, 클래식 형태와 세분화된 형태의 GitHub 토큰, Stripe 비밀 키와 제한 키, OpenAI 프로젝트 키와 일반 키, Anthropic 키, Google API 키, Slack 토큰. 개인 키 블록은 BEGIN 줄부터 END 줄까지 통째로 하나의 적중으로 포착됩니다. 블록의 일부만 마스킹하면 사용할 수 있는 키가 남기 때문입니다. JSON Web Token은 세 개의 base64url 세그먼트 구조로 인식되고, 카드 번호는 Luhn 체크섬을 통과해야만 표시되므로, 평범한 주문 번호와 타임스탬프는 조용히 지나갑니다.
엔트로피, 자리 표시자, 그리고 정직한 한계
두 번째 층은 공급자 형태가 없는 비밀을 다룹니다: password = …, api_key: …, client_secret = … 같은 할당입니다. 맨 키워드만으로는 아무것도 증명할 수 없으므로 값은 두 개의 문을 더 통과해야 합니다 — 최소 열두 문자, 그리고 문자당 최소 3.2비트의 섀넌 엔트로피. 무작위 키는 쉽게 통과하고 평범한 단어는 떨어집니다. 자리 표시자 값은 설계상 제외됩니다: example, test, dummy, xxx, your-, placeholder, changeme 를 포함하는 것은 모두 문서이지 자격 증명이 아니며, 그것을 표시하면 스캐너를 무시하도록 훈련될 뿐입니다. 형태가 겹치는 곳에서는 구체적인 패턴이 이깁니다: 변수에 할당된 Stripe 키는 한 번만, Stripe 키로 보고됩니다.
두 가지 발견 유형은 시스템이 아니라 사람을 보호합니다. 이메일 주소는 개인 데이터로 표시됩니다. 고객 주소로 가득한 티켓은 비밀번호가 등장하지 않아도 개인정보 사고이기 때문입니다. 카드 번호는 숫자가 Luhn을 통과할 때만 표시됩니다. Luhn은 모든 진짜 카드 번호에 내장된 체크섬이며, 단지 길고 숫자처럼 보일 뿐인 청구서 번호, 추적 코드, Unix 타임스탬프를 스캐너가 무시할 수 있게 하는 것도 같은 검사입니다. 화면에서는 각 값이 최대 처음 네 문자까지만 마스킹되므로, 어깨 너머로 보는 사람이나 스크린샷은 비밀의 유형과 위치는 알아도 비밀 자체는 결코 알지 못합니다. 짧은 값은 아무것도 보여주지 않습니다. 전체 값은 페이지에서 결코 떠나지 않는 원본 텍스트 안에만 존재합니다.
마스킹 도구를 보장이 아니라 더 안전한 공유 습관의 한 단계로 사용하세요. 로컬에서 마스킹하고, 마스킹된 복사본을 공유하며, 실제 비밀은 — 비밀이 정말로 손을 바꿔야 할 때 — 시크릿 관리자나 만료되는 공유 링크를 통해 보내고, 마스킹된 텍스트와 같은 티켓이나 채팅으로는 절대 보내지 마세요. 실제 자격 증명이 이미 어딘가에 마스킹 없이 붙여넣어졌다면, 메시지를 삭제하는 것만으로는 부족합니다: 복사본, 색인, 알림이 이미 존재할 수 있으므로 그 자격 증명을 교체하고 예전 것을 공개된 것으로 취급하세요. 동반 기사 붙여넣기 전에 비밀을 마스킹하세요는 그 흐름을 온전히 다룹니다. HAR 분석기는 브라우저 캡처에 대해 같은 일을 하고, .env 파서는 커밋하기 전에 설정 파일을 검사합니다.
탐지 라이브러리를 쉬운 말로
| AWS 액세스 키 | AKIA 또는 ASIA 뒤에 정확히 16자의 대문자 또는 숫자 — 장기 및 임시 AWS 액세스 키 ID의 형태입니다. |
| GitHub 토큰 | ghp_, gho_, ghu_, ghs_, ghr_ 접두사에 최소 36자가 더 붙은 것과 세분화된 github_pat_ 형태입니다. |
| Stripe 키 | sk_ 또는 rk_ 뒤에 live_ 또는 test_ 와 최소 16자의 영숫자 — 비밀 키와 제한 키이며, 테스트 키는 계정 구조와 습관을 드러내므로 테스트 모드도 포함됩니다. |
| OpenAI 및 Anthropic 키 | sk-proj- 프로젝트 키와 32자 이상의 일반 sk- 키는 OpenAI로 셉니다. sk-ant- 키는 Anthropic으로 보고되며, 별도의 유형과 별도의 교체 경로를 가집니다. |
| Google API 키와 Slack 토큰 | Google은 AIza 뒤에 35자, Slack은 봇, 앱, 사용자, 새로 고침, 세션 토큰에 대한 xoxb, xoxa, xoxp, xoxr, xoxs 접두사입니다. |
| 개인 키 블록 | -----BEGIN PRIVATE KEY----- (RSA, EC, OpenSSH, PGP 변형 포함)부터 대응하는 END 줄까지의 PEM 블록 전체를 하나의 적중으로 보고하고 마스킹합니다. |
| JSON Web Token | 점으로 구분된 세 개의 base64url 세그먼트로, 처음 두 개가 eyJ로 시작합니다 — 모든 JWT가 시작하는 JSON 헤더와 페이로드의 인코딩 형태입니다. |
| 일반 할당 | api_key, secret, token, password, passwd, auth_token, access_token, client_secret 같은 이름에 할당된 값으로, 값이 최소 12자이고 섀넌 엔트로피가 3.2에 도달할 때만 표시됩니다. 문서화된 자리 표시자는 절대 표시되지 않습니다. |
| 이메일 주소 | 일반 이메일 주소를 개인 데이터(PII)로 보고하여 고객이나 직원의 주소를 대량으로 붙여넣은 것이 퍼지기 전에 잡습니다. |
| 카드 번호 | 공백과 대시를 허용하는 13~19자리 숫자 열로, 모든 진짜 카드 번호가 만족하는 Luhn 체크섬을 통과할 때만 표시됩니다. |
| 마스킹과 표식 | 화면에서 값은 최대 처음 네 문자와 생략 부호까지만 보여주며, 네 문자 이하의 값은 아무것도 보여주지 않습니다. 마스킹된 복사본에서는 모든 적중이 하나의 표식 [REDACTED] 가 됩니다. 유형은 발견 표 안에서 계속 보이며 인라인으로는 절대 나타나지 않습니다. |
자주 묻는 질문
제 텍스트가 어딘가에 업로드되거나 저장되나요?
아니요. 스캔은 이 페이지 안에서, 사용자의 기기에서 실행됩니다: 아무것도 업로드, 전송, 저장되지 않으며 스캔은 네트워크 요청을 만들지 않습니다. 이는 의도적인 설계 규칙입니다 — 비밀을 제거하기 위해 비밀로 가득한 텍스트를 업로드하라고 요구하는 도구는 문제의 일부가 될 것입니다.
어떤 종류의 비밀을 찾을 수 있나요?
공급자 형태의 자격 증명 — AWS 액세스 키와 GitHub, Stripe, OpenAI, Anthropic, Google, Slack의 키와 토큰 — 에 더해 개인 키 블록 전체, JSON Web Token, password나 api_key 같은 이름에 할당된 높은 엔트로피 값, 이메일 주소, Luhn 체크섬을 통과하는 카드 번호입니다. 위의 사실 표가 모든 패턴을 쉬운 말로 나열합니다.
제 텍스트에서 제가 볼 수 있는 비밀을 왜 놓쳤나요?
정직한 이유가 세 가지 있습니다. 값이 여러 줄에 나뉘거나 줄바꿈되어 하나의 형태도 일치하지 않을 수 있습니다. 일반 규칙이 모르는 이름에 할당된, 엔트로피가 낮은 사람의 비밀번호일 수 있습니다. 또는 아직 어떤 패턴도 다루지 않는 형식 — 데이터베이스 연결 문자열, 쿠키 값, 기본 인증 URL — 일 수 있습니다. 스캐너는 흔하고 잘 문서화된 형태를 결정적으로 잡습니다. 이것은 안전망이지 텍스트가 깨끗하다는 증명이 아니므로 공유하기 전에 미리보기를 직접 훑어보세요.
진짜 비밀이 아닌 것을 왜 표시했나요?
대개 그 값이 정직하게 비밀처럼 생겼기 때문입니다: 자리 표시자 문구가 없는 무작위처럼 보이는 테스트 값, 내부 문서의 예시 토큰, 프런트엔드 예시로 쓰이는 JWT. 공유하기 전에 발견 표를 확인하세요 — 오탐은 한 번 보는 것으로 끝나지만, 놓친 항목은 교체 비용이 듭니다. example, test, dummy, xxx, your-, placeholder, changeme 를 포함하는 값은 절대 표시되지 않으므로 샘플을 그렇게 표시하면 잡음을 낮게 유지할 수 있습니다.
원본이 이미 유출됐다면 마스킹으로 비밀이 안전해지나요?
아니요. 마스킹은 지금부터 만드는 복사본을 보호합니다. 비밀이 들어간 채 이미 나간 티켓, 채팅 메시지, 로그는 되돌릴 수 없습니다. 공유 시스템에 마스킹 없이 나타난 자격 증명은 모두 공개된 것으로 취급하세요: 공급자에서 교체하고, 예전 것을 폐기한 뒤에야 마스킹된 텍스트를 공유하세요. 동반 기사 붙여넣기 전에 비밀을 마스킹하세요는 교체를 먼저 하는 순서와 메시지를 삭제하는 것만으로는 부족한 이유를 설명합니다.