ゼロ幅文字ステガノグラフィ

概要

ゼロ幅文字ステガノグラフィーは、見えないUnicode文字を使って普通のテキストの中に秘密のメッセージを隠すツールです。表示されるテキストは完全に普通に見えます — 余分なスペースも、変わった記号もありません — しかし内部にはこのツール(または技術を知っている人)だけが抽出できる隠されたデータが含まれています。

仕組み:ゼロ幅のモールス符号

このツールは、表示幅がゼロの3つの特定のUnicode文字を使います — テキスト内に存在しますが、画面にはまったく表示されません。

  • U+200B(ゼロ幅スペース):モールス符号の文字区切り
  • U+200C(ゼロ幅非接続文字):モールス符号の点(短信号)
  • U+200D(ゼロ幅接続文字):モールス符号の線(長信号)

メッセージを隠すために、ツールはまず隠しテキストをモールス符号に変換し、次に各点、線、区切りを対応する見えない文字に置き換えます。このシーケンスは、入力した「開始テキスト」と「終了テキスト」の間に挿入されます。受信者には2つの表示可能な部分が繋がって見えますが、その間に見えないシーケンスが隠れています。

出力の見た目

開始テキスト:明日
隠しテキスト:10:00
終了テキスト:会おう

表示上の出力:明日会おう
実際の内容:明日[見えないシーケンス]会おう

表示されるメッセージを読む人は「明日会おう」と見ます。しかし全テキストを復号モードに貼り付けると、ツールは「10:00」を取り出します。

ゼロ幅文字を削除する可能性があるプラットフォーム

隠されたデータはほとんどのプレーンテキスト環境でのコピーアンドペーストを生き延びますが、一部のシステムは見えない文字を積極的に削除します。

  • リッチテキストエディタ(Google Docs、Notion):貼り付け時に非印刷文字を削除する場合がある
  • プレーンテキストのフォームフィールドとデータベース:非印刷文字をサニタイズするものがある
  • 一部のSNSプラットフォーム:バックエンドが投稿からゼロ幅文字を積極的にクリーンアップするものがある
  • コードフォーマッタ:lintやformatツールが文字列からゼロ幅文字を削除する場合がある

隠しデータが生き残ると想定する前に、対象プラットフォームでテストしてください。

復号の仕組み

復号モードに切り替えてテキストを貼り付けると、ツールは最初の連続するゼロ幅文字のシーケンスをスキャンします。それらをモールス符号から読みやすいテキストに戻します。テキストにゼロ幅文字が含まれていない場合、ツールは「ゼロ幅文字が検出されませんでした」と表示します。

ソーステキストが途中で変換された場合(HTMLからコピー、PDFからエクスポート)、見えない文字はすでに消えている可能性があります — 復号結果が空の場合は、転送中にデータが失われたことを意味し、ツールの故障ではありません。

セキュリティの限界

ゼロ幅ステガノグラフィーが提供するのは隠蔽性であり、暗号化の強度ではありません。この技術を知っている人、またはUnicodeアナライザーを使う人なら誰でも、隠されたコンテンツを簡単にデコードできます。このツールは、楽しい隠しメッセージ、見えない透かし、秘密のメモなどに適しています。本当に機密性の高い情報の保護には適していません。