カバーにする画像・音声を選ぶ
データを埋め込む画像、WAV、MP3を選択・ドロップ・貼り付けします。大きいファイルほど多く保存でき、複雑な写真や音楽ほど変更を目立たなくできます。
steghide 0.5.1のブラウザ移植版です。BMP・PNGの画素/LSB方式、JPEGのDCT係数方式に加え、PCM WAVとMP3にも対応。ファイルやメッセージを隠し、パスフレーズで取り出せます。
ファイルも秘密も、この端末の外に出ません。 デコード、埋め込み、暗号化、抽出はすべてこのタブ内で行います。サーバーに一切送信しないため、サーバーから漏れるデータもありません。
大きいファイルほど多く隠せます。画像は約8画素につき1バイト、PCM WAVは16サンプルにつき1バイト、MP3は音声フレームの未使用部分に保存します。
steghide コマンドラインツール 。PNG出力は同じ画素配列を維持しますが、steghide CLIはPNGを読めません。
この画像に隠された秘密を取り出すために、魔法をかけましょう: 画像の周りをポインターで3周してください。時計回りでも反時計回りでも構いません 。隠しデータが姿を現します。
描いた軌跡が光り、円が閉じるたびに月が1つ点灯します。ポインターを離すか画像の外に出るとリセットされます。ポインターがない場合は、画像にフォーカスしてEnterを押してください。
復元したファイル名、サイズ、チェックサムの状態が表示されます。テキストや画像はそのまま表示し、音声にはプレーヤーを表示します。その他の形式はダウンロードのみ可能です。
インストール・アップロード不要。画像、WAV、MP3を選び、秘密を追加して結果を保存します。
データを埋め込む画像、WAV、MP3を選択・ドロップ・貼り付けします。大きいファイルほど多く保存でき、複雑な写真や音楽ほど変更を目立たなくできます。
ファイルを添付するかメッセージを入力し、パスフレーズを設定します。パスフレーズはデータの分散位置を決め、任意で暗号化にも使います。
steghideとの互換性が必要ならBMP、サイズを小さくしたいならPNGで保存します。画像とパスフレーズを持つ人はデータを取り出せます。
ImageStegはsteghide 0.5.1のTypeScript移植版で、BMP・PNGの画素/LSB方式とJPEGのDCT方式に対応します。さらにPCM WAVでも同様にデータを隠し、MP3ではフレーム末尾の未使用部分に格納します。単にファイルを順番に書き換える方式ではありません。
サンプルを頂点にまとめ、最小重みマッチングで変更箇所を選ぶため、隠す値1つにつき約1サンプルだけを変更します。
内蔵JPEGエントロピーコーデックで量子化DCT係数を読み取り、その偶奇にデータを隠して再符号化します。steghideのlibjpegと同じ段階で処理し、ベースライン・プログレッシブの両方に対応します。
MD5をシードとする並べ替えで画像全体にデータを分散し、予測可能な順序で保存されないようにします。
埋め込み前にzlibでデータを圧縮し、任意のCRC32チェックサムで抽出結果の信頼性をすぐ確認できます。
libmcryptと同じ鍵導出によるRijndaelのCBCモードで暗号化し、画像が疑われても内容を秘密に保ちます。
画像の画素にデータを隠す場合の実用上の制限。
互換性: ビット配置、サンプルの並べ替え、Rijndael/CBC暗号化はsteghide 0.5.1に従うため、BMPとJPEGの出力は次で読み取れます: steghide extract -sf image.bmp -p passphrase または -sf image.jpg。また、steghideコマンドラインで作ったファイルもここで読み取れます。出力はカバー形式に対応します。JPEGのデータはJPEGだけが保持できる係数内にあるため、JPEGからはJPEGを出力します。画素方式ではBMPとPNGを提供しますが、steghide CLIはPNG非対応です。
steghideのJPEG処理はlibjpegの次の関数を呼び出します: jpeg_read_coefficients()。これはハフマン復号の直後、逆量子化とIDCTの前で止まり、生の量子化DCT係数を得ます。ブラウザにはそれを取得するAPIがないため、このページは独自のJPEGエントロピーコーデックを備えています。ベースラインとプログレッシブに対応し、逐次近似の精緻化スキャンも扱います。
jpeg_write_coefficients() 。そのため、算術符号の入力は出力時にベースラインまたはプログレッシブの識別子へ変更されます。埋め込み処理はファイル形式ではなく、デコード済み画素配列だけを扱うため、steghideのBMP/LSB方式をそのままPNGに使えます。実用上は次の4点が重要です。
はい。埋め込みも抽出も無料で、登録、透かし、人為的なファイルサイズ制限はありません。
いいえ。デコード、埋め込み、圧縮、暗号化はJavaScriptとWebCryptoでブラウザ内実行します。73hiのサーバーには送りません。
ブラウザでデコードできる画像は画素方式のカバーにできます。ベースライン・プログレッシブJPEGはDCT方式を使います。JPEG入力はJPEG出力、画素方式はBMPとPNGを出力します。steghideコマンドラインはBMPとJPEGを読めますが、PNGは読めません。
steghideコマンドラインと同じく、量子化DCT係数に隠します。内蔵JPEGエントロピーコーデックで係数まで復号し、偶奇を変更して再符号化します。
はい。スペクトル選択と逐次近似精緻化を含むすべてのスキャンを復号し、同じ方式で書き戻すため、元の係数を持つプログレッシブJPEGとして出力されます。
読み取りに対応します。ハフマンではなくQM(二進算術)符号のSOF9(逐次)・SOF10(プログレッシブ)は、libjpegと同じ算術デコーダーで処理し、同一の係数を得ます。出力はsteghideと同じくハフマン符号化です。
およそ8画素につき1バイトから、ヘッダー、ファイル名、任意の暗号化の分を差し引いた容量です。画像を選ぶと使用可能容量を表示します。
はい、BMPをダウンロードすれば読めます。ビット配置、パスフレーズによるサンプルの並べ替え、Rijndael/CBC暗号化はsteghide 0.5.1に従っています。
データは個々の画素値に保存されます。再圧縮、リサイズ、フィルター、JPEGなど非可逆形式への変換で壊れます。元のBMPか可逆PNGを保管してください。
同じファイルへ2回埋め込む方法ではできません。2回目は画像全体から独自の位置を選び、最初のデータを一部上書きします。暗号化前に圧縮しているため、数ビットの変化でもメッセージ全体を失います。元のsteghideも同様です。同じパスフレーズでも最初から同じ位置を上書きするため、最新のメッセージだけが残ります。階層化したい場合は、小さい画像に最初の秘密を隠して保存し、そのファイル全体を別のパスフレーズで大きな画像に隠してください。各層を画素ではなく保護されたデータとして扱うため、バイト単位で維持できます。
いいえ。読み込みはバイト列を読むだけです。JPEGは逆変換や再量子化せずDCT係数へ直接アクセスし、画素方式は可逆にデコードするため、データは維持されます。JPEGはエントロピー符号の書き直しでサイズが少し変わる場合がありますが、隠しデータには影響しません。他の人が作ったファイルも安全に開いて取り出せます。
はい。写真に著作権表示や所有の証明を埋め込めます。データは画素やJPEG係数にあり、通常の表示では見えないため、公開しても気づかれません。無断使用された場合も、ファイル内に隠し印が残っていれば、侵害を記録するため第三者のプラットフォームに載せた同じ画像にも証拠が含まれ、削除申請や権利主張を支える資料になります。
もちろんです。「好きです」など対面では伝えにくい言葉を日常の写真に隠し、相手の誕生日をパスフレーズに設定してみてください。写真を送り、ImageSteg(または73hi.com/image-steg.html)で開くよう伝えます。パスフレーズを知る人だけが読めるため、声に出す照れくささを避けて気持ちを伝えられます。