貼った瞬間、テキストは一通ではなく、あとから回収できない複製になる
マスキングを、画面上の礼儀だと取る人は多いです。番号を星に換えれば、見た目は整う。本当の問題は、貼ったあとに起きます。チケットは本文を保存します。チャットはメッセージを残します。エラー監視はスタックを掴みます。セッション再生は入力欄を記録します。委託先のキューは、もう一通を書き出します。自分の画面で数文字を直しても、すでにこれらの系へ書いた複製は消えません。あとから「チケットを清書する」のは、いま見えている一通だけです。履歴検索、メール通知、下流の分析には、原文が残ることがあります。
OWASP のログ・チートシートは、これを文案ではなく開発の制約として書いています。ログへ直接書かず、削除、マスク、洗浄、ハッシュ、暗号化を検討すべきものとして、機微な個人データと一部の識別情報、認証パスワード、アクセス・トークン、暗号鍵とその他のマスター鍵、銀行口座や支払カードの会員データを挙げます。社内では、チケットとグループチャットが「形式ばらないログ」になりがちです。検索は楽で、本番庫より権限が緩く、保持は長い。利用者の原文を丸ごと貼ることは、OWASP が残すなと書く記録を、自分で作ることです。
HTTPS が守るのは、伝送中の盗聴です。次の系へ渡した平文は消しません。前のノートで書いたとおり、アドレスバーのクエリは履歴、Referer、アクセスログへ入ります。本文の番号は同じ種類の露出です。運ぶものが URL から段落へ変わっただけです。共有前に問うのは「このチケット基盤は安全か」ではありません。「この段落に、いまのタブから出してはいけない欄があるか」です。
規則が見るのは形と検査桁であり、この文が何を語っているかではない
規則ベースのマスキングの仕事は狭いです。正規表現で候補を拾い、検査関数で明らかに違う命中を捨て、重なりは優先度で解きます。「山田」が人名であること、「明日、渋谷へ届ける」が住所であることは知りません。知るのは、この 11 桁が中国本土の携帯の形か、この 18 桁が公民身分番号の検査を通るか、この 16 桁がカードでよく使う Luhn を通るか、この列が @ を挟んだメールか、公開の接頭辞を持つトークンか、点区切りの IPv4 か、です。
これは「モデルがチケットを読んで書き換える」道ではありません。大規模モデルへ送って PII を再走査することは、原文を別の処理者へ渡すことです。ゲートウェイ側のマスキングも、テキストを識別サービスへ送ります。規則走査は、いまのタブに留められます。入力はブラウザを出ず、結果はマスク済みの複製です。代償は、名簿の外を通すことです。名簿に無い証明書、自作の鍵接頭辞、空白で割った数字は漏れます。
検査桁は誤検知を下げるためのもので、「これが実在の身分だ」の証明ではありません。中国の 18 桁公民身分番号は、GB 11643-1999 / ISO 7064 MOD 11-2 で第 18 位を計算します。前 17 位に 7、9、10、5、8、4、2、1、6、3、7、9、10、5、8、4、2 を掛け、11 で割った余りを照合表 10X98765432 に当てます。余りが 2 なら第 18 位は X(10 を表す)です。検査を通ることは、「この文字列が合法な番号に見える」ことまでです。公安の庫にその人がいることではありません。カード側でよく使うのは ISO/IEC 7812 の Luhn です。右から一つおきに 2 倍し、9 を超えたら 9 を引き、合計が 10 で割り切れれば受けます。適当に打った 16 桁の多くは Luhn を通りません。規則は、それをカードとして扱うべきではありません。
六種類がそれぞれ何を認識し、伏せたあとどう見えるか
安定して拾えるのは、公開の形式があり、さらに検査を足せる欄です。下表は、共有テキストでよく出る順です。マスクの形は「先頭と末尾を少し残し、中央を星にする」賢いマスクの例です。見える数字も消したいときは、完全マスクへ切ります。
| 種類 | 規則がおおむね見るもの | 賢いマスクのよくある結果 |
|---|---|---|
| 電話 | 中国本土 11 桁の 1[3-9]、+ 付きの国際番号、北米でよくある区切り |
138****8000、または国番号と下 4 桁を残す |
| 身分証明書番号 | 検査を通る 18 桁公民身分番号、米国 SSN の形、英国 NINO の形 | 先頭 3 桁と末尾 4 桁を残し、中央を星にする |
| カード番号 | 13–19 桁で Luhn を通る数字。身分番号をカードに誤認しない | 下 4 桁だけを残す |
| メール | ローカル部と @ とドメイン |
ローカル部は先頭 1 文字、ドメインは残す |
| API Key | 公開接頭辞を持つトークン。例:ghp_、AKIA、sk_live_、xoxb- |
接頭辞と末尾 4 桁、または Bearer *** |
| IP | 合法な IPv4 と、よくある IPv6 の書き方 | 203.0.*.*、または IPv6 の先頭 2 グループに星 |
電話の規則は、「連続 11 桁」と「空白、括弧、ハイフン付き」の両方を見ます。中国本土は 1[3-9] で始まる 11 桁という公開の号帯であり、ある事業者の内部表ではありません。国際番号は E.164 のよくある外見で拾います。+ のあと 7 から 15 桁です。短すぎる列や、より長い数字の真ん中は捨てます。そうしないと注文番号や伝票も携帯になります。
日本の携帯は、ここで境界がはっきりします。総務省の電気通信番号計画では、090 / 080 / 070 は 11 桁で、日常の書き方は 090-1234-5678 の 3-4-4 です。規則が安定して拾う北米形は 3-3-4、+ 付きの国際形、中国本土の連続 11 桁です。ハイフン無しの 09012345678 は 0 始まりなので中国本土にも北米にも当たりません。+819012345678 や +81 90-1234-5678 なら国際形として拾えます。国内向けのチケットを、ハイフン付きのまま貼るなら、電話は人手で見る前提にしてください。
身分証明書番号側は、中国 18 桁に加え、米国社会保障番号を AAA-GG-SSSS と書いたときの無効区(000、666、9 始まり、グループ 00、一連番号 0000)と、英国国民保険番号(2 文字 + 6 桁 + A–D、BG / GB などの接頭辞を除外)を見ます。これらは「証明書に見える」確度を上げます。「この人が存在する」証明ではありません。日本のマイナンバーは 12 桁の個人識別符号です。18 桁でもなく、ハイフン付き SSN でもなく、13 桁以上の Luhn カードでもありません。英字を含む 6–12 桁の雑多な番号規則にも当たりません。12 桁をそのまま貼れば、規則は通します。運転免許証番号のよくある 12 桁も同じです。
カード側では、決済業界は「画面に何桁まで出してよいか」と「保存時にどう切り詰めるか」を分けます。PCI セキュリティ基準協議会は 8 桁 BIN の説明で、主口座番号の表示について、各ブランドが広く受けている上限はなお先頭 6 と末尾 4 だと再確認しています。照合に下 4 桁だけで足りる席なら、下 4 桁だけが見えるべきです。チケットの共有はアクワイアラの系ではありません。既定は下 4 桁だけを残す方が安全です。これは PCI 認証の主張ではありません。16 桁をそのままチャットへ貼ることが、表示側のよくある上限を超える、という事実です。
メールのマスクがローカル部だけを伏せ、ドメインを残すと、受け手は「どの会社の人か」を読めます。鍵の規則は公開接頭辞に依存します。GitHub のクラシックな個人アクセス・トークンは ghp_ のあと 36 桁、細粒度は github_pat_。AWS IAM のアクセスキー識別子はよく AKIA のあと 16 桁。Stripe のライブ鍵は sk_live_。Slack のボット・トークンは xoxb-。接頭辞があるのは、SDK と走査器が拾うためです。規則が止められる理由も同じです。安定した接頭辞の無い自作トークン、「g h p 下線……」と割った列は、普通の文として通ります。
IP は、各オクテットが 0–255 の点区切りで拾い、版番号 1.2.3 を取り込みません。デモとカナリアは、文書用の予約区間を使い、本番の住所を書かないでください。RFC 5737 は 192.0.2.0/24、198.51.100.0/24、203.0.113.0/24 を残し、公衆経路に出さないと書いています。メールのデモは example.com です。根拠は RFC 2606 の予約ドメインであり、実在の会社ではありません。
身分証明書番号とカード番号は、同じ数字列を取り合う
18 桁の公民身分番号は、末尾が数字ならすべて数字です。それを「長いカード番号」としてカード規則へ渡すと、Luhn が偶然通ることがあります。二種類が同じ段落に重なるときは、先に優先度を決めます。決めないと、同じ列を二度伏せるか、誤った形に伏せます。
落ち着いた並べ方は、身分証明書番号を鍵より先、鍵を電話より先、電話をメールより先、メールをカードより先、カードを IP より先です。理由は具体的です。先に証明書を確定すれば、18 桁が Luhn でカードになりません。鍵の接頭辞は「電話に見える数字」より特殊です。メールの中の数字を、電話規則がもう一度切るべきではありません。IP がいちばん広く、最後に置けば版番号や注文の点区切りを食べにくくなります。重なりでは、優先度が高い方、または長い方だけを残します。
ページで「身分証明書番号」を切り、「カード番号」だけを残すと、その列をカードとして扱うのが正しいです。規則を試すときの想定であり、既定の共有方針ではありません。既定は六種類をすべて付け、漏れた氏名と住所は人の目で見ます。
本物の顧客、同僚、自分の証明書、カード、鍵、マイナンバーでデモしないでください。電話は公開の試験形、または +81 付きの捨てられる列を使います。カードは決済文書の試験用主口座 4111111111111111 を使います。証明書の検査を通したいときだけ、あり得ない生年月日で第 18 位を自分で計算し、使い終わったら捨てます。
星印は匿名ではなく、仮名加工が終わったことにもならない
個人情報保護委員会の匿名加工情報の説明は、問いを先に置きます。「個人データをマスキングすれば匿名加工情報になるの?」答えは否です。法令が定める適切な加工をしていなければ、匿名加工情報ではなく、個人データのままです。委員会が挙げる適切な加工には、氏名など特定の個人を識別できる記述の削除、個人識別符号の全部削除、他の情報とつなぐ符号の削除、特異な記述の削除が含まれます。中央を星に換える操作は、この一覧のどの項にも当たるとは書いてありません。
2022 年 4 月施行の改正は、個人情報の保護に関する法律へ仮名加工情報を足しました。他の情報と照合しなければ特定の個人を識別できないように加工したものです。復元の余地は残ります。匿名加工情報は、識別できず、かつ元へ戻せないことが要ります。賢いマスクは、照合用の尻尾を意図して残します。電話の下 4 桁、カードの下 4 桁、メールのドメイン、鍵の接頭辞です。チケットに氏名、住所、社内の顧客番号が残っていれば、下 4 桁だけで「識別できる」から「識別した」へ戻せます。これは仮名加工の方向に寄ることがあっても、匿名加工には届きません。完全マスクは、当たった区間を同じ長さの星に換え、つなぎの手がかりを一つ減らします。長さ、位置、周りの文は残ります。文そのものが「契約者へ折り返してください」や「マイナンバーの写しは添付」と書くこともあります。
したがって、「規則を通した」を「この段落は公開ナレッジに入れてよい」や「ある認証を満たした」とは書けません。ツールページも GDPR や個人情報保護法の認証は主張しません。正しい文は次です。既知の形の欄はマスクに換わった。未知の形の欄は動いていない。具体の人へ戻せるかは、文脈を見て自分が判断する。
規則が知らない一文が、共有事故の本体になることが多い
漏れを名簿にした方が、命中を機能として書くより役立ちます。第一は、安定した数字形を持たない直接の識別です。日本語の氏名、住所、勤務先、病状の記述、子どもの学校です。規則に「全国の氏名表」はありません。氏名認識を付けるクラウドも、普通の語を氏名と誤ることがあります。第二は、書き換えた機微です。「ゼロキュウゼロ、イチニサンヨン……」、全角数字、間に「の」やゼロ幅文字を入れた列、テキストではなくスクリーンショット。正規表現が見るのは、いまの符号点の列です。人が読み上げた番号ではありません。
第三は、公開接頭辞の無い秘密です。データベース接続文字列、JWT の三段、自作の token=、社内システムのセッション cookie は、ghp_ / AKIA / xoxb- の短い名簿にありません。第四は添付とリッチテキストです。Word のヘッダ、表の隠れ列、メール署名の携帯、PDF のレイヤ。規則が走査するのは、入力欄へ貼ったプレーンテキストだけです。第五は意味の層の機密です。未公開の契約額、脆弱性の詳細、苦情の原文。PII の形ではありません。外へ出せば同じように傷が付きます。
日本の現場では、もう一種類を先に書いておくべきです。マイナンバー 12 桁、運転免許証のよくある 12 桁、ハイフン付きの 090 / 080 / 070。上で見たとおり、これらは六種類の中心には入っていません。+81 を付けた携帯と、公開接頭辞のある鍵と、Luhn を通るカードは拾えます。12 桁の個人識別符号と、読み上げと、住所は通します。「マスキングした」画面を見て安心するのは、この差を見落としたときです。
「当たったが、伏せ方が違う」もあります。注文番号、伝票、会議室の内線が電話に見えることがあります。文書の版 10.20.30.40 は IPv4 に見えます。検査と境界(前後が数字でないこと)は一部を止め、全部は止めません。だから結果欄は、「どの種類が、何回当たったか」を、星だらけの文と同時に出すべきです。照合するのは種類が合っているかであり、星の多さではありません。
その場で照合する:カナリアを入力欄へ入れ、Network を探す
「ローカルでマスクし、アップロードしない」という標語は、自己証明になりません。その場で見えるのは四つです。どの種類が指名されたか、マスクの形が合っているか、わざと残した文が残っているか、原文が業務データとして出ていないか。
まず、実在の身分を含まないカナリアを用意します。電話は国際形の捨てられる列、たとえば +819012345678(自分の番号にしない)。メールは canary@example.com。IP は 203.0.113.10。カードは 4111111111111111。鍵は公開接頭辞のあとを捨てられる文字にした偽トークン、たとえば ghp_ のあと自分で作った 36 桁。使い終わったら失効扱いです。証明書は誰の本物も使いません。検査ロジックを試すなら、あり得ない生年月日(1900 年 1 月 1 日など)で第 18 位を自分で計算し、段落に「架空」と書きます。
カナリアを、普通のチケット文へ埋めます。「利用者 canary@example.com がログインできないと連絡。折り返しは +819012345678。送信元 IP は 203.0.113.10。試験カード 4111111111111111。トークン ghp_……。送付先は東京都千代田区霞が関一丁目1番1号。」走査のあと、メール、国際形の電話、IP、カード、トークンは命中集計に出て、上表の形へ換わるはずです。「東京都千代田区霞が関一丁目1番1号」は原文のまま残るはずです。これは故障ではありません。規則の境界です。住所まで伏せたなら、使っているのは純規則ではないか、規則が広すぎます。誤検知を別に見てください。
同じ段落に、国内形の 090-1234-5678(架空)と、12 桁の捨てられる数字列を足してもよいです。これらが命中集計に出ないなら、漏れの実演です。出たなら、その回の規則が広いだけです。どちらでも、結論は同じです。国内携帯とマイナンバー相当は、人の目の担当です。
次に開発者ツールの Network を開き、Preserve log を入れ、カナリアの独特な列で探します。たとえば +819012345678、canary@example.com、偽トークンの全文です。XHR / Fetch のリクエスト行、クエリ、本文に出てはいけません。アクセス解析の query と body にも出てはいけません。静的スクリプトのファイル名に「privacy」「redact」が出るのは想定内です。原文が業務欄として出ることだけが失敗です。
- 架空の国際形電話、example.com のメール、RFC 5737 の住所、試験カード、接頭辞付きの偽トークンでチケット文を組み、日本語の住所をわざと残す。
- 走査後、五種類の数字・アカウントが指名され、住所が結果に残ることを照合する。
- カナリア原文で Network を探す。業務リクエストに当たれば、入力がタブを出たことになる。
この手順が証明する範囲は狭いです。この操作では、既知の形がマスクに換わり、住所の文は動かず、観察した HTTP 欄として原文はタブを出ていない。拡張機能が入力欄を読んでいないことは証明しません。本物のチケットへ換えたときに漏れないことも証明しません。ブラウザを変える、規則のスイッチを変えたあとは、カナリアをもう一度走らせる価値があります。
同僚へ渡す最短の文:規則は、形が決まった欄を先に伏せる。氏名と住所とマイナンバーは人が見る。星が残した尻尾は、文脈と合わせると本人へ戻せる。伏せきれない秘密は、チャットで「洗って」入れず、渡し方を変える。
開いてすぐ使えるマスキングページで、境界を手に馴染ませる
種類のスイッチと命中集計をページ上に出す道具で練習するなら、MakePwd の UTM削除・マスキングから個人情報マスキングへ入れます。開いてすぐ使え、登録もアカウントもありません。走査とマスクはいまのタブで終わります。製品の説明どおり、原文はリクエストに出さず、analytics にも書きません。付け外しできる種類は、上の六種類です。電話、身分証明書番号、カード番号、メール、API Key、IP。既定は賢いマスクで、完全マスクにも変えられます。一度のテキスト上限は 512 KB です。ページははっきり書いています。すべての証明書形式を認識できるわけではなく、テキストがあるコンプライアンス要求を満たしたことも証明できません。重要な共有前の送信は、人手で確認してください。
練習はカナリアだけにします。走査のあと、三箇所を同時に見ます。命中種類の回数、結果テキストの住所が誤って動いていないか、Network に原文が無いか。回数は「種類を当てたか」に答えます。住所は「規則の境界はどこか」に答えます。Network は「アップロードしたか」に答えます。三箇所を通ってから、同僚へ説明できます。伏せたのはこれらの種類だ。住所は残っている。カナリアは出域を探した。
リンクの追跡パラメータは、別の仕事です。チケットに utm_source や fbclid 付きの完全な URL が残っているなら、先にキー名でクエリを剥がし、それから本文の番号を処理します。手順はUTM付きの完全なURLをチャットに貼ると、どの追跡情報が一緒に送られるかにあります。マスキングのあとも、そのまま届ける必要のある秘密なら、ワンタイムリンクで一度送り、鍵は URL の # フラグメントに残します。ファイル一式は、ファイル暗号化でこの端末で .lock / .enc にします。単一ファイルは 5 GB までです。そのあとクラウドストレージやメールへ載せます。どの手順もログインを求めません。
よくある質問
星印で伏せたあと、その文はまだ個人情報ですか?
多くの場合、まだ個人情報です。個人情報保護委員会は、個人データを単にマスキングしただけでは匿名加工情報にならず、個人データのままだと書いています。下 4 桁が残った電話、ドメインが残ったメールは、チケットの文脈と合わせると本人へ戻せることもあります。規則マスクは仮名加工情報の方向に寄ることがあっても、匿名加工情報とは書けません。
規則ベースのマスキングは、人手の確認の代わりになりますか?
なりません。規則が見るのは形と検査桁であり、意味ではありません。氏名、住所、マイナンバー、読み上げ数字、画像、書き換えた鍵は通ります。重要な送出は、結果を自分で通読してください。ツールページも GDPR や個人情報保護法の認証は主張しません。
マスキングは原文をアップロードしますか?
製品の説明どおり、走査とマスクはいまのタブで終わり、原文はリクエストに出さず、analytics にも書きません。架空のカナリアを Network で探せば、その回の観察は照合できます。拡張機能が入力欄を読んでいないことまでは証明しません。
まだ伏せきれていない秘密は、どう送りますか?
散らばった電話やメールは規則で伏せます。そのまま届ける必要のあるパスフレーズや未公開の材料は、ワンタイムリンクで一度送り、鍵は URL の # フラグメントに残します。ファイル一式は、ファイル暗号化でこの端末で .lock または .enc にしてから、クラウドストレージやメールへ載せます。
次に外へ出す前に、覚えておく三つのこと
第一に、貼ることは複製することです。チケット、チャット、監視、書き出しがそれぞれ一通を持ち、あとから今のページを直しても、すでに出した原文は戻りません。第二に、規則が止めるのは、形があり検査できる欄です。氏名、住所、マイナンバー、読み上げ数字、自作の鍵は人が見ます。マスクが残した尻尾は、文脈と合わせると本人へ戻せます。第三に、照合は三箇所です。命中種類、わざと残した文、カナリアで探す Network。
完全な URL のクエリを一緒に出してよいかを続けるなら、UTM付きの完全なURLをチャットに貼ると、どの追跡情報が一緒に送られるかを読んでください。平文が業務データとしてタブを出ていないかを照合するなら、ブラウザで暗号化するなら、平文が端末を出ていないことをその場で確かめるを読んでください。本文が扱うのは、「規則マスキングがチケット本文に対して何ができ、何と書いてはいけないか」を、結論に書ける範囲へ落とすことだけです。