シークレット墨消しツール

シークレット墨消しツールは、これから共有しようとしているテキスト——ログの抜粋、サポートチケット、チャットメッセージ、設定ダンプ——を走査し、他の人が読む前に中に隠れた認証情報を取り除きます。ここにテキストを貼るかファイルをドロップすると、プロバイダの 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 は3つの base64url セグメント構造で認識され、カード番号は Luhn チェックサムを通過した場合にだけフラグが立つので、通常の注文番号やタイムスタンプは静かに通り過ぎます。

エントロピー、プレースホルダ、そして正直な限界

第二層は、プロバイダの形を持たない秘密をカバーします:password = …、api_key: …、client_secret = … のような代入です。裸のキーワードは何の証明にもならないので、値はさらに二つの門をくぐらなければなりません——12文字以上であることと、シャノンエントロピーが文字あたり3.2ビット以上であること。ランダムなキーは楽々通過し、通常の単語は落ちます。プレースホルダの値は設計上除外されます:example、test、dummy、xxx、your-、placeholder、changeme を含むものはすべてドキュメントであって認証情報ではなく、それにフラグを立てるとスキャナを無視するよう訓練されてしまいます。形が重なる場所では、具体的なパターンが勝ちます:変数に代入された Stripe キーは一度だけ、Stripe キーとして報告されます。

二つの検出の種類は、システムではなく人を守ります。メールアドレスは個人データとしてフラグが立ちます。顧客のアドレスでいっぱいのチケットは、パスワードが現れなくてもプライバシー事故だからです。カード番号は、数字が Luhn を通過した場合にだけフラグが立ちます。Luhn はすべての本物のカード番号に組み込まれたチェックサムであり、単に長くて数字らしいだけの請求書番号、追跡コード、Unix タイムスタンプをスキャナが無視できるのも同じテストのおかげです。画面上では、各値は最大で先頭4文字までマスクされるので、肩越しに覗く人やスクリーンショットは秘密の種類と場所を知っても、秘密そのものは決して知りません。短い値は何も表示されません。完全な値はあなたの元のテキストの中にだけ存在し、それはページを離れることがありません。

墨消しツールは保証としてではなく、より安全な共有習慣の一歩としてお使いください。ローカルで墨消しし、墨消し済みのコピーを共有し、本物の秘密——秘密が本当に受け渡されなければならないとき——はシークレットマネージャか期限切れになる共有リンク経由で送り、墨消し済みテキストと同じチケットやチャットでは決して送らないでください。本物の認証情報がすでにどこかに墨消しなしで貼られてしまった場合、メッセージを削除するだけでは不十分です:コピー、索引、通知がすでに存在するかもしれないので、その認証情報をローテーションし、古いものを公開済みとして扱ってください。コンパニオン記事貼り付ける前に秘密を墨消しするはその流れを完全にたどります。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ドットで区切られた3つの base64url セグメントで、最初の2つが eyJ で始まります——すべての JWT が始まる JSON ヘッダとペイロードのエンコード形式です。
汎用代入api_key、secret、token、password、passwd、auth_token、access_token、client_secret のような名前に代入された値で、値が12文字以上かつシャノンエントロピーが3.2に達した場合にだけフラグが立ちます。文書化されたプレースホルダには決してフラグが立ちません。
メールアドレス通常のメールアドレスを個人データ(PII)として報告し、顧客やスタッフのアドレスの大量貼り付けが広がる前に捕捉します。
カード番号13桁から19桁の数字列で、スペースとダッシュを許容し、本物のカード番号すべてが満たす Luhn チェックサムを通過した場合にだけフラグが立ちます。
マスクとマーカー画面上では、値は先頭4文字と省略記号までしか表示されず、4文字以下の値は何も表示されません。墨消し済みコピーでは、すべてのヒットが唯一のマーカー [REDACTED] になります。種類は検出表の中で見え続け、インラインには決して現れません。

よくある質問

私のテキストはどこかにアップロードされたり保存されたりしますか?

いいえ。走査はこのページの中で、あなたのデバイス上で走ります:何もアップロードされず、送信されず、保存されず、走査でネットワークリクエストは発生しません。これは意図的な設計ルールです——秘密を取り除くために秘密だらけのテキストのアップロードを求めるツールは、問題の一部になってしまいます。

どんな種類の秘密を見つけられますか?

プロバイダの形をした認証情報——AWS アクセスキーと、GitHub、Stripe、OpenAI、Anthropic、Google、Slack のキーとトークン——に加えて、秘密鍵ブロック全体、JSON Web Token、password や api_key のような名前へ代入された高エントロピーの値、メールアドレス、Luhn チェックサムを通過するカード番号です。上の事実表が、すべてのパターンを平易な言葉で並べています。

テキストの中で私には見える秘密を見落としたのはなぜですか?

正直な理由が三つあります。値が複数行に分かれていたり折り返されていたりして、単一の形が一致しないのかもしれません。汎用ルールが知らない名前に代入された、低エントロピーの人間のパスワードなのかもしれません。あるいは、まだどのパターンもカバーしていない形式——データベース接続文字列、Cookie の値、ベーシック認証 URL——なのかもしれません。スキャナは一般的でよく文書化された形を決定的に捕捉します。これは安全網であって、テキストがクリーンである証明ではないので、共有する前にプレビューを自分で一目見てください。

本物の秘密ではないものにフラグが立ったのはなぜですか?

たいてい、その値が正直に秘密らしい形をしているからです:プレースホルダの文言のないランダムらしいテスト値、内部ドキュメントのサンプルトークン、フロントエンドの例として使われる JWT。共有する前に検出表を確認してください——誤検出は一目で済みますが、見落としはローテーションが要ります。example、test、dummy、xxx、your-、placeholder、changeme を含む値には決してフラグが立たないので、サンプルをそのように印付けることでノイズを低く保てます。

元のテキストがすでに漏れてしまった場合、墨消しすれば秘密は安全になりますか?

いいえ。墨消しはこれから作るコピーを守ります。秘密が入ったまま出てしまったチケット、チャットメッセージ、ログを回収することはできません。共有システムに墨消しなしで現れた認証情報はすべて公開済みとして扱ってください:プロバイダでローテーションし、古いものを失効させ、それから初めて墨消し済みテキストを共有してください。コンパニオン記事貼り付ける前に秘密を墨消しするは、ローテーションを先にする順序と、メッセージを削除するだけでは不十分な理由を説明します。