![見出し画像](https://assets.st-note.com/production/uploads/images/116470687/rectangle_large_type_2_ee1c8e8372c2e9e4db13f8a5213840ad.png?width=1200)
ChatGPTと共に秘密のメッセージを画像内に潜ませよう!実用的なステガノグラフィー
あなたの大切なデータやメッセージを他人の目から隠す新しい方法をご存知でしょうか。
ChatGPTの「Advanced Data Analysis(旧:Code Interpreter)」を活用すれば、画像ファイルの中に秘密の文字列を隠すことが可能です。
この記事では、その方法をステップバイステップでご紹介します。
この技術「ステガノグラフィー」を用いれば、第三者があなたの画像を見ても、事前の情報無しには秘密のメッセージが隠されていることに気付くことはできません。
復号化の例
先にステガノグラフィーで埋め込んだ情報の復号を例としてあげます。
以下の画像に「hello!」と事前に情報を埋め込みました。
これを、ChatGPTに復号してもらいます。
![](https://assets.st-note.com/img/1694963784970-Emb8CFvlWU.png)
そのため、この画像からは情報が失われている可能性が高いです。
一応、この画像に「hello!」が埋め込まれています。
画像自体は適当にStable Diffusionであらかじめ作成したものです。
なんでも良いですし、単色の画像であればChatGTP側でも作る事が可能です。
![](https://assets.st-note.com/img/1694965950812-dhVlwNIKQb.png)
プロンプト
この画像ファイルはステガノグラフィである文字列が埋め込まれています。
以下の情報を元に、復号化してください。
-メッセージの終了を示すデリミタは「1111111111111110」(16ビット)です。
-各文字は8ビットのバイナリとして埋め込まれています。
![](https://assets.st-note.com/img/1694963894958-c41PziqpFA.png?width=1200)
復号化用にあらためてチャットを開始しています。
やりとりは、上記のChatGPTのURLを参照ください。
暗号化
以下のような指示で暗号化しています。
「改めて、~」というのはその前に日本語で埋め込もうとして失敗していたためです。(やりとりはこの記事下部の「おまけ」を参照ください。)
なので、最初から処理をしてもらう際には、そのまま「この画像ファイルにステガノグラフィーを用いて「XXXXXXX」という文字列を埋め込んでください。その際に、抽出する手がかりとなる情報を連携してください。」でよいでしょう。
![](https://assets.st-note.com/img/1694964046581-0inr9uH9qf.png?width=1200)
注意として挙げると、私の試行において、日本語のメッセージはうまく埋め込むことができませんでした。
指示としては、もっと明確に文字コードを指定すればできるかもしれません。また、ステガノグラフィーにも様々な方法がありますので、それを具体的に指定しても良さそうです。この辺は継続して研究してみます。
加えて、復号化する際の手がかりも出力してもらうと、改めて依頼した際にそれを連携すればかなりスムーズに復号化できます。
ステガノグラフィーとは
ステガノグラフィーとは、情報を巧妙に隠す技術を指します。
特に、画像、音声、動画などのメディアファイルの中に、見た目や聞こえに変化を与えずに秘密のメッセージやデータを埋め込む技術を指します。
基本的な方法
以下の2つがあげられます。今回、採用されたのはLSB埋め込みです。
LSB (Least Significant Bit) 埋め込み
画像の各ピクセルの最も小さいビット(最下位ビット)を使って情報を埋め込む。
この方法は目で見て分からない程度の微小な変化を生じます。DCT (Discrete Cosine Transform) 埋め込み
JPEG画像などで使用されるDCTを利用して、情報を埋め込む。
画像の周波数領域に情報を埋め込むため、人間の目にはほとんど変化が認識されません。
なぜステガノグラフィーが利用されるのか?
1.秘密通信:敵に気づかれずに情報をやり取りするため。
2.デジタルウォーターマーキング:著作権情報などを埋め込んで、不正コピーを防ぐため。
3.フォレンジック:犯罪捜査での証拠収集や、情報の隠蔽を検出するため。
懸念点
以下にステガノグラフィーを採用する際の懸念点をまとめます。
検出の難しさ:
ステガノグラフィーは、情報を目立たずに隠すことが目的であるため、埋め込まれた情報の検出が非常に困難であることが多い。今回は、復号化する際のとっかかりもあわせてChatGPTに連携していますし、LSB埋め込みですので困難になることは考えにくいです。しかし、より堅牢さを重視し、難解なルールとした場合は確かに困難となるリスクがあります。
データ損失のリスク:
画像や音声ファイルが圧縮や変換を経ると、埋め込まれた情報が失われるリスクがある。特にクラウドサービスを利用する際に、画像の圧縮が行われた場合、折角埋め込まれた情報が失われる可能性があります。
不正利用:
悪意ある者がステガノグラフィーを利用して、マルウェアやスパイウェアのコード、違法な情報を埋め込む可能性がある。少なくとも自分が使ううえでは、法律に引っかかるようなこと、公序良俗に反することには使用しないようにしましょう。
著作権侵害:
第三者が著作権情報を変更するためにステガノグラフィーを利用する場合が考えられる。
プライバシーの侵害:
個人情報や機密情報を含むデータをステガノグラフィーで埋め込む場合、そのデータが漏洩した際のプライバシーのリスクが高まる。確かに復号化しにくい特性はありますが、絶対ではありません。それに気付かれた場合、復号化される可能性は常にあります。
管理の難しさ:
ステガノグラフィーによって埋め込まれた情報を正確に把握し、管理するのは困難である。誤って情報が含まれたファイルを公開すると、情報が第三者に漏洩するリスクがある。
互換性の懸念:
特定のステガノグラフィー技術やツールに依存して情報を埋め込むと、将来その技術やツールが使えなくなった場合、情報を取り出すのが難しくなる可能性がある。
まとめ
ChatGPTで非常に簡単に、画像に情報を埋め込めるのは便利ですね。
例えば、BitLockerの復旧用のキーをこうして埋め込んでおくのも面白いかと思います。
その際には上記であげた懸念点に留意する必要があります。
おまけ(ChatGPTとのやりとり)
この記事が気に入ったらサポートをしてみませんか?