Underlayer › オンラインツール
画像に文字を隠す — 無料のオンライン・ステガノグラフィーツール
写真の中に秘密のメッセージを入れたり、画像に隠しメッセージがないか調べたりできます。このブラウザ上で動くので画像はどこにもアップロードされず、結果は Underlayer アプリでも開けます。
プライバシー重視:画像と文字はこのブラウザのタブ内で処理され、アップロードされることはありません。タブを閉じると消去されます。
画像に文字を隠す方法
- 画像を選びます。細部の多い写真が最適で、大きな画像ほど長いメッセージを入れられます。
- メッセージを入力してモードを選びます。ファイルとして送るなら隠しモード、メッセンジャーでふつうの写真として送るならオープンモードです。
- メッセージを隠すを押して PNG をダウンロードします。
- 読むときは、このページのメッセージを読むタブを開くか、Underlayer アプリで画像を開きます。
ステガノグラフィーとは
ステガノグラフィーとは、ふつうに見えるものの中にメッセージを隠し、メッセージがあること自体に気づかれないようにする技術です。暗号化は文章を読めなくし、ステガノグラフィーは文章を見えなくします。デジタル画像では、写真の見た目がまったく変わらないほどわずかにピクセルの値を変えることを指します。
隠しモードの仕組み(LSB ステガノグラフィーをやさしく解説)
各ピクセルの色は、赤・緑・青の3つの数値(0〜255)で記録されています。数値を1だけ変えても、色の変化は目では分かりません。LSB(least significant bit、最下位ビット)ステガノグラフィーは、この最も小さいビットにメッセージの1ビットを載せる方式です。
Underlayer は文章をバイト列(UTF-8 なので、日本語でも絵文字でも使えます)に変換し、メッセージの始まりと終わりを示す短い目印を付けて、8×8 ブロックごとに1ピクセルの緑チャンネルの最下位ビットに書き込みます。予備のコピーを別のピクセル配置にも書き込み、読み取り時に照合します。書き込みの前に画像を高画質で一度保存し直すため、見た目は元の画像と同じでも、バイト単位では同一のファイルではありません。
その代わり容量は小さく、64ピクセルにつき1ビットです。1080×1080 の写真には約18,000ビット入り、読み取れるメッセージは最大740バイト。日本語なら約240文字、英数字なら約740文字です。
メッセンジャーで隠しメッセージが消える理由
隠しモードのデータはピクセルのいちばん細かい部分にあり、JPEG 圧縮が捨てるのはまさにその部分です。LINE、Telegram、WhatsApp、Instagram など多くのアプリや SNS は、通信量を減らすために写真を再圧縮するので、隠したビットが上書きされてしまいます。私たちのテストでは、隠しモードの画像を JPEG で保存し直すと、品質90でも毎回メッセージが消えました。このツールが PNG を出力するのはそのためです。
| たいてい残る | 隠しモードのメッセージがたいてい消える |
|---|---|
| ファイル・ドキュメントとして送信、メールの添付、クラウドストレージ、USB メモリ | メッセンジャーでふつうの写真として送信、SNS への投稿、スクリーンショット、編集、縮小、JPEG への変換 |
メッセージを消さずに画像を送るには
隠しモードでは、画像が再圧縮されず同じ PNG ファイルのまま相手に届く必要があります。
- LINE: トーク画面の「+」→「ファイル」から PNG を送ります。写真としてふつうに送ると再圧縮され、メッセージが消えることがあります。
- Telegram: クリップ →「ファイル」で送ります(パソコン版では「画像を圧縮」のチェックを外します)。ふつうに写真として送るとメッセージは消えます。
- WhatsApp: クリップ →「ドキュメント」から PNG を選びます。「ギャラリー」から送ると写真が再圧縮されます。
- メールとクラウド(Google ドライブ、iCloud Drive など):添付ファイルやファイルの共有リンクなら、ピクセルはそのまま保たれます。
- X や Instagram への投稿は画像が再圧縮されるため、隠しモードには向きません。
ファイルとして送れない場合は、オープンモードでメッセージを隠してください。オープンモードの枠は、ふつうの写真送信を前提に作られています。
オープンモードを使うとき
オープンモードは、メッセージがあること自体は隠しません。画像のまわりに色付きの四角でできた枠を描き、四角1つの色で2ビットを表します。黒地にはっきりした色を使うため再圧縮に強く、私たちのテストでは JPEG 品質75で保存し直した後もメッセージを読み取れました。LINE、Telegram、WhatsApp でふつうの写真として送るときに使ってください。
小さな画像では枠に入る文字数が少なくなります。英数字で 640×480 なら約90文字、1080×1080 なら約280文字、1600×1200 なら約560文字(日本語は1文字で3倍の容量を使います)。小さな画像を大きく縮小すると、枠が壊れることもあります。
隠すことは暗号化ではありません
Underlayer にはパスワードがなく、暗号化もしません。Underlayer やこのページで画像を開けば誰でもメッセージを読めますし、統計的な解析でピクセルが変更されたことが分かる場合もあります。メモやゲーム、さりげない電子透かしに使ってください。文章そのものを秘密にしたい場合は、先に別のツールで暗号化し、その暗号文を隠してください。
画像の隠し文字を読み取る
メッセージを読むタブは、このページまたはアプリで Underlayer を使って隠した、隠しモードとオープンモード両方のメッセージを探します。ほかのプログラムで隠したメッセージは読めません。プログラムごとに独自の形式を使っているためです。何も見つからない場合、その画像には Underlayer のメッセージがないか、メッセージを隠した後に圧縮された可能性が高いです。
Underlayer アプリと同じ形式
このページは Android・iOS 版 Underlayer アプリと同じ隠す・読むコードで動いています。パソコンで隠したメッセージをスマホで読むことも、その逆もできます。アプリならギャラリーやほかのアプリから画像を共有するだけで、ファイルを保存せずにメッセージを隠したり読んだりできます。
使い方のアイデア
- 友だちへの写真に、メモやなぞなぞをこっそり入れる。謎解きゲームの仕掛けにも。
- さりげない電子透かしとして、自分の写真に名前や日付を入れておく。
- 共有アルバムの写真に、目立たない短いメッセージを残す。
よくある質問
無料ですか? 画像はアップロードされますか?
無料で、登録も透かしもありません。画像とメッセージが端末の外に出ることはありません。すべてブラウザ内の JavaScript で処理され、サーバーには何も送信されません。
このページで隠したメッセージを Underlayer アプリで読めますか?
はい。このページはアプリと同じ隠す・読むコードで動いているので、ここで作った画像はアプリで、アプリで作った画像はここで開けます。途中で圧縮されていなければ大丈夫です。
「隠しメッセージは見つかりませんでした」と表示されるのはなぜ?
画像に何も隠されていないか、別のプログラムで隠されたか、画像が再圧縮された(たとえばメッセンジャーで写真として送られた、SNS に投稿された)可能性があります。再圧縮されると隠しモードのメッセージは消えます。
ほかのステガノグラフィーツールで隠したメッセージも読めますか?
いいえ。ステガノグラフィーのプログラムはそれぞれ独自の配置と目印を使っています。このツールが読めるのは Underlayer で隠したメッセージです。
隠したメッセージは暗号化されたメッセージと同じですか?
いいえ。Underlayer は暗号化せず、パスワードもありません。Underlayer やこのページで画像を開けば、誰でもメッセージを読めます。秘密にしたい文章は、先に暗号化してから暗号文を隠してください。
写真を送ったら隠しメッセージが消えたのはなぜ?
メッセンジャーが写真を再圧縮したためです。PNG をファイルやドキュメントとして送るか、オープンモードを使ってください。
メッセージはどのくらいの長さまで入りますか?
最大740バイトで、英数字なら約740文字、日本語なら約240文字です。隠しモードには十分なピクセル数が必要で、オープンモードは小さな画像ほど入る量が減ります。英数字で 640×480 なら約90文字、1080×1080 なら約280文字です。
なぜ結果が PNG ファイルなのですか?
PNG は可逆圧縮なので、変更したピクセルがそのまま保存されます。JPEG で保存すると画像が再圧縮され、隠しモードのメッセージが消えてしまいます。