PDFからSSNを黒塗りする
社会保障番号(SSN)は、黒塗りの典型的なケースです。SSNは短く、見落としやすく、個人を特定できるものであり、漏洩した場合には取り返しのつかない損害をもたらします。裁判所の提出書類、公的記録の開示請求、ベンダーとの契約書、保険申請書類などを準備している場合、「黒いボックスで覆ったから大丈夫」というのは保護にはなりません。探し方を知っている人にとっては、それは単なるブックマーク(目印)にすぎないのです。ここでは、実際の黒塗りがどのように機能するのか、そして文書をどこにもアップロードせずにそれを行う方法について説明します。
致命的な間違い:黒いボックスを描くこと
Section titled “致命的な間違い:黒いボックスを描くこと”PDFエディターを開き、機密テキストの上に黒い長方形を描いて保存する、というのが直感的な操作でしょう。しかし、これは確実に失敗します。その理由はPDFフォーマット自体にあります。
PDFはテキストの2つの並行した表現を保存します。画面に描画されるグリフである可視レイヤーと、ページのコンテンツストリームに存在する実際の文字コードであるテキストレイヤーです。検索エンジン、コピー&ペースト、スクリーンリーダーが読み取るのは後者です。黒いボックスを描くとき、変更されるのは可視レイヤーだけです。その下にあるテキストレイヤーは完全に無傷であり、誰でも「黒塗りされた」領域を選択してコピーしたり、テキストをエクスポートしてSSNをプレーンテキストで読んだりすることができます。さらに悪いことに、基本的なエディターの「黒塗り」機能の一部は、文字通り暗い色で塗りつぶされた単なる長方形にすぎません。
電子情報開示(e-discovery)において、この失敗のパターンには名前がついています。これは**メタデータ/テキストレイヤーの侵害(metadata / text-layer breach)**と呼ばれ、実際の裁判で封印された文書を暴露したこともあります。Ctrl+AやCtrl+Cで無効化されるような黒塗りは、黒塗りとは呼べません。
本物の黒塗りがすること
Section titled “本物の黒塗りがすること”本物の黒塗りは、コンテンツストリーム自体からテキストを削除します。文字がファイルから物理的に削除され、その後初めて視覚的な領域が覆われます。真の黒塗りを行った後は、次のようになります:
- 領域を選択しても何も選択されません。
- コピー&ペーストしても隠しテキストは返されません。
- ファイル内でSSNを検索しても0件のヒットとなります。
- ファイルのバイト内に文字コードは存在しなくなります。
これ以下のことしかできないツールは黒塗りを行っているとは言えません。そしてその違いは数秒でテスト可能です(これについては後述します)。
最初にすべての出現箇所を見つける
Section titled “最初にすべての出現箇所を見つける”もう一つの典型的な失敗は、4ページ目のSSNを黒塗りして、ヘッダー、署名ブロック、または添付ファイルにある12ページ目の同じ番号を残してしまうことです。徹底的な作業は、手動での通読ではなく、パターンのスキャンから始まります。
米国のSSNは予測可能なパターン(9桁の数字、通常は3-2-4にグループ化される)に一致します。つまり、パスポート番号や国民ID番号、クレジットカード番号、電話番号、メールアドレス、銀行口座の詳細など、他のリスクの高い識別子とともに、プログラムで見つけることができます。PDFLeanのPII Redactionツールはこのスキャンをローカルで実行します。ブラウザ上でSSN、ID、電話番号、カード、メールアドレスの候補を検出し、それぞれのコンテキストを表示して、何も削除される前に確認または拒否できるようにします。カスタムキーワード(プロジェクトのコードネームや取引先の名前など)も同じスキャン処理に追加できます。
「それぞれのコンテキストを表示し、確認させる」というステップが重要です。パターンマッチングだけでは、無害な9桁の数字が大量にフラグ付けされてしまいます。黒塗りは元に戻せないため、人間が各ヒットを承認する必要があります。
ステップバイステップ:アップロードせずに黒塗りする
Section titled “ステップバイステップ:アップロードせずに黒塗りする”- PII Redactionツールを開きます。スキャン全体がブラウザで実行されます。
- PDFを読み込みます。ローカルメモリにのみ入るため、何も送信されません。
- 検出された候補(SSN、ID、電話番号、カード、メール、カスタムキーワード)を確認します。周囲のコンテキストに基づいて、各ヒットのオン/オフを切り替えます。
- 黒塗りを実行します。このツールは、コンテンツストリームから文字コードを削除し、該当する領域を覆います。
- 検証します(次のセクションを参照してください。絶対にスキップしないでください)。
- 黒塗りされたコピーを保存します。
特定の名前や既知の値をピンポイントで削除したい場合は、手動のRedact PDFツールにキーワードリストを渡すことで、同じ方法ですべての出現箇所を削除できます。
ほとんどの人がスキップしてしまう検証のステップ
Section titled “ほとんどの人がスキップしてしまう検証のステップ”「黒塗り済み」と主張するのは簡単ですが、検証こそが証明です。出力ファイルに対して、次の3つすべてを実行してください:
- 検索テスト。 保存したPDFを開き、正確なSSNを検索します(ダッシュありとなしで試してください:
123-45-6789および123456789)。0件ヒットであることが唯一の許容される結果です。 - 選択テスト。 黒塗りされた領域をドラッグして選択し、コピーします。クリップボードに数字が含まれている場合は、テキストレイヤーが生き残っています。
- テキスト抽出テスト。 すべてのテキストをエクスポートし(Text Extractorがこれをローカルで実行します)、そのダンプを検索します。数字がどこかに表示される場合は、黒塗りが不完全です。別のページに2つ目のコピーが存在する可能性が最も高いです。
これをアプリ内のプレビューではなく、最終的に保存されたファイルで実行してください。プレビュー画面はライブ状態からレンダリングされます。真実を語るのは保存されたバイトのみです。
もう一つ:メタデータ
Section titled “もう一つ:メタデータ”テキストコンテンツは明白なターゲットですが、PDFのメタデータは、より見落とされやすいターゲットです。文書のプロパティ(作成者、タイトル、サブジェクト、作成したソフトウェア、時にはカスタムフィールドなど)には、名前、ID、および元の作成アプリケーションからの内部パスが含まれる可能性があります。完全に黒塗りされた文書でも、プロパティにAuthor: J. Smith, SSN 123-45-6789とあれば、依然として情報が漏洩しています。
黒塗り作業の最後のステップとしてメタデータを削除してください。また、ファイルが敵対的な場所(公的提出物、情報公開法に基づく回答など)に送られる場合は、同じ目的でSanitizeツールを使用して、埋め込まれたスクリプト、隠されたアクション、およびその他のアクティブなコンテンツを取り除きます。
黒塗りが間違ったツールである場合
Section titled “黒塗りが間違ったツールである場合”黒塗りは基となるテキストを永久に破壊します。後で番号を明かす必要がある場合(内部チームが黒塗りされていない原本をレビューする場合など)は、管理されたストレージに黒塗りされていない別のコピーを保持し、配布するコピーのみを黒塗りします。配布されるファイルは情報が消去されたものであるべきで、マスターは機密の原本がすでに存在している場所に保管します。
再利用されるフォームでは、コピー時に黒塗りするパターンが多くの場合より優れています。マスターをクリーンに保ち、外部の受信者ごとに黒塗りバージョンを生成することで、黒塗りミスが起こってもソース文書に影響がさかのぼらないようにします。
よくある質問
Section titled “よくある質問”スキャンしたPDFを黒塗りできますか? 可視画像を覆うことはできますが、スキャンには削除するテキストレイヤーがありません。まずOCR(PDF OCR)を実行し、復元されたテキストを黒塗りしてから、画像レイヤーを保持するか統合(フラット化)するかを決定します。スキャンの上の黒いボックスが適切と言えるのは、単に上に塗られるだけでなく、スキャンのピクセルが実際に破壊されている場合のみです。
黒塗りは元に戻せますか? いいえ、それが黒塗りの目的です。バイトは消去されています。だからこそ、実行前に検出された各候補を確認することが重要であり、クリーンなマスターを取っておくべき理由でもあります。
パスワード保護は黒塗りとしてカウントされますか? いいえ。暗号化はアクセスを制御し、黒塗りはコンテンツを削除します。黒塗りされていないSSNを含むパスワード保護されたPDFには依然としてSSNが含まれており、パスワード(またはクラック)を持つ人なら誰でもそれを読むことができます。
なぜ私のツールの「黒塗り」ボタンは単なる黒いボックスを作成するのですか? 多くの基本的なエディターは、真のコンテンツストリームの黒塗りではなく、注釈スタイルのハイライト/ボックス化を実装しています。その後で検索しても何も出ない結果をツールが示せない場合、それは黒塗りではなく描画を行っているだけです。
作業全体は、テスト可能な1つの主張に要約されます。作業が完了した後、ファイル内に機密文字が存在してはならないということです。それらを検索し、選択し、テキストを抽出して、もし番号が見つかれば、黒塗りは失敗です。ボックスを描き、バイトを削除し、保存したファイルで検証し、メタデータを消去して、クリーンなマスターを保持する。その一連の流れこそが、「黒塗りされた」ということの意味なのです。