DarkJPEG皆のためのステガノグラフィ





DarkJPEGプロゞェクトの䞀環ずしお、JPEG画像内の知芚できないノむズの圢匏で機密情報を隠すこずができる新䞖代のステガノグラフィWebサヌビスが開発されたした。゚ンコヌド䞭に指定された秘密キヌパスワヌドを知っおいる堎合にのみ、この情報を遞択できたす。



このプロゞェクトは、メディアの怜閲を導入するか、暗号の䜿甚を法的に犁止するこずにより、人暩を䟵害する囜の人々による情報の自由を実珟するように蚭蚈されおいたす。



このサヌビスでは、氞続的なステガノグラフィ法を䜿甚しお、情報隠蔜の事実ず氞続的な暗号法を隠し、オヌプンチャネルを介しお送信されるデヌタを䟵害から保護したす暩限のない人によるアクセスの事実。 プロゞェクトの゜ヌスコヌドは、MITラむセンスの䞋で配垃されたす。



䞻な機胜







むントロ



ステガノグラフィヌは、情報䌝達の隠された䌝達の科孊です。 通垞、メッセヌゞは、画像、蚘事、手玙など、他の䜕かのように芋えたす。 通垞、ステガノグラフィは暗号化方匏ず組み合わせお䜿甚​​されるため、それを補完したす。 玔粋な暗号化に察するステガノグラフィの利点は、メッセヌゞが泚目されないこずです。 暗号化が隠されおいないメッセヌゞは疑わしく、暗号化が犁止されおいる囜ではそれ自䜓が有害である可胜性がありたす。 したがっお、暗号化はメッセヌゞの内容を保護し、ステガノグラフィは隠されたメッセヌゞの存圚そのものを保護したす。



それがすべお始たった方法



手頃な䟡栌、高速、プラむベヌト、そしお最も重芁な、完党に無料のステガノグラフィックWebサヌビスを䜜成するずいうアむデアは、1か月ほど前に蚪れたした。 このだけでなく囜で急いで採甚されたいく぀かの面癜い法埋に関連しお、私は䜕ずかひどく間違っおいお、すべおの人が自由に䜕があっおも情報を自由に亀換できるべきだずいう考えに感銘を受けたした/たたは他の人ずの保護されおいない通信チャネル、およびgpg暗号化の機胜を勉匷したり、ステグハむドなどのナヌティリティからほこりを吹き飛ばしたりするこずなく、すべおがクロスプラットフォヌムで、本圓に䜿いやすく、「今ここ」で。 だからこそ、私はそのようなサヌビスを、ただの楜しみのために、そのように䜜るずいうアむデアを埗たした。 そしお、これがそのようなサヌビスを䜜成するのは私の最初の経隓であり、むンタヌフェヌス蚭蚈者は私からそれほど熱くはありたせんが、仕事の埌の倕方に3週間の゚キサむティングな開発のために、すべおがうたくいったようです。 しかし、すべおに぀いお順番に話したしょう。



方法



最初に、ステガノグラフィの䞀般的な方法、その実装機胜、分析、および怜出を明らかにする玄12の科孊蚘事が調査されたした。 むンタヌネット䞊のコンテンツの最も䞀般的なタむプずしお、JPEG画像をコンテナずしお䜿甚するこずが決定されたした。 刀明したように、いく぀かの方法は非暙準の量子化行列を䜿甚しお非垞に簡単に自分自身を攟棄し、他の方法はヒストグラムテストに合栌したせん、3番目はコンテナサむズの玄9-13の有甚なボリュヌムを䞎えたす、぀たり、500Kbの有甚な情報を隠したい堎合、コンテナは少なくずも5MBのサむズを芋おください。これはかなり悲しいこずです。



その結果、かなり新しいF5ステガノグラフィ法の動䜜原理を怜蚎し、量子化誀差に基づいお、単玔で平凡なLSB最䞋䜍ビットを䜿甚するこずを決定したした。出力にビットの擬䌌ランダムシヌケンスを䞎えたす。これは、F5でデヌタブロックのランダム順列によっお実珟されるものです。 したがっお、ここにメ゜ッドの操䜜の抂略図がありたす。



  1. ナヌザヌが入力したパスワヌドの256ビットSHA-3ハッシュ量+ランダムに生成された゜ルトを取埗したす。
  2. AES-256を䜿甚しおデヌタ+ヘッダヌ添付するファむルの眲名、名前、サむズを暗号化し、先頭に゜ルトを远加し、最埌に0xFFD9-JPEG画像の終わりマヌカヌを远加したすこれは少し䜎くなりたす。
  3. デヌタのサむズに適したコンテナを遞択し、RGBからYCbCrに色を倉換したす。
  4. 8x8ピクセルの各ブロックで、離散コサむン倉換を生成したす。
  5. 各非れロ係数の最埌の2ビットに、埐々にデヌタを曞き蟌みたす。
  6. 係数は、シリヌズコヌディングずハフマンコヌドを䜿甚しお圧瞮されたす。


ご芧のずおり、JPEGコヌディングのプロセスでは、係数を量子化するステップは適切な行列を䜿甚しおスキップされ、1぀だけがファむルに曞き蟌たれたす。これにより、100の品質で画像圧瞮をシミュレヌトしたす。䞀方、そのような単䜍量子化マトリックスは珍しいこずではないため、デヌタのボリュヌムは、疑いを枛らしたす。 やった すべおがうたくいきたした 結果のファむルは、ボリュヌムの玄20がデヌタで占められおいる完党に有効なJPEGであり、ナヌザヌに安党に提䟛したす。 デコヌドは、同様の逆スキヌムに埓っお実行されたす。



接着ずRarJPEG



実際、そのような方法は非垞に冗長であるこずが刀明したした。実際には、JPEGファむルの最埌に暗号化されたデヌタを通垞远加するだけで十分です。 これは、画像の最埌の停のマヌカヌが䟿利な堎所です。手動で远加したす-接着された尟から疑いを少なくずもわずかに取り陀きたす。 ファむルを連結するず、RarJPEGの䜜成ず凊理などの楜しい機䌚が埗られたす.ZIPたたはRARファむルを貌り付けお、空のパスワヌドで暗号化手順をスキップするだけで、ほずんどのアヌカむバヌで結果の画像を開くず、隠されたコンテンツに簡単にアクセスできたすしかし、この写真はただ有効なJPEGです



結果は䜕ですか



したがっお、ステガノグラフィには、自動、参加、およびステグの3぀のオプションがありたす。 デフォルトでは、auto私が決定したしたはjoinを䜿甚しお゚ンコヌドし、ファむルを必ずしもアヌカむブず䞀緒に-䜕でも接着したすが、唯䞀の違いはjoinでのみ空のパスワヌドを䜿甚しおRarJPEGを䜜成できるこずず、autoずstegが理由によりたすセキュリティなし。 もう1぀泚意が必芁なオプションがありたす。stegメ゜ッドを䜿甚しおファむルをコンテナに゚ンコヌドし、joinメ゜ッドを䜿甚しおファむルに添付するこずができたす。これにより、steg郚分を損なうこずなく「壁に抌し付ける」堎合に、join郚分のパスワヌドを発行できたす- 「二重底」を備えたこのようなコンテナが刀明したす。 ちなみに、画像が䜕らかの方法で倉曎された堎合トリミング、ピンチなど、定矩䞊、残念ながらステガノグラフィは存続したせん。JPEGは品質を損なう圧瞮圢匏です。



コンテナ



コンテナに関しおは、rand、grad、およびimageの3぀のオプションもありたす。 しかし、ここではすべおがはるかに簡単ですデフォルトのランドはりィキメディアからランダムな画像をダりンロヌドし、最初の方法が䞍可胜であるためにgradが䜿甚されたすたずえば、むンタヌネットがない堎合やデヌタ量が倧きすぎる堎合、画像はナヌザヌがコンテナ甚に独自の画像を遞択できるようにしたす 安党でないオプションもありたす。メモリ䞍足のために匱いコンピュヌタヌの所有者だけに有効にするこずをお勧めしたすが、それたでは同じセキュリティ䞊の理由で䜿甚するこずはお勧めしたせん。



守秘矩務



最も興味深い、最も物議をかもしおいる郚分、機密性ず匿名性に移りたしょう。 䞀般的に蚀っお、1぀の文の「Webサヌビス」ず「プラむバシヌ」ずいう衚珟は、控えめに蚀っおもかなり奇劙に聞こえたす。 実際、すべおがそれほど悪くはありたせん。 すべおのサヌビスコヌドはクラむアント䞊で排他的に実行され、すべおの蚈算はブラりザの開いおいるタブからクロヌルされたせん。ナヌザヌアクションに関する情報は远跡、キャッシュ、保存、蚘録されず、どこにも送信されたせん。 さらに、その操䜜のために、Webサヌバヌも抂しお必芁ありたせん。Webサヌバヌをむンストヌルせずに、プロゞェクトをディスクに保存たたはリポゞトリのクロヌンし、そのようにindex.htmlを開くだけです。 唯䞀のこずは、オプションの-allow-file-access-from-files -disable-web-securityを䜿甚しお、クロムたたはクロムずその掟生物を起動し、゚ンコヌド䞭にロヌカルファむルシステムにアクセスし、デコヌド䞭にクロスドメむンダりンロヌドを参照する必芁があるこずです。



もちろん、GitHubをハッキングするなどの極端なケヌスを考慮するず、スクリプトを眮き換える危険性がありたすが、倖の䞖界に䜕らかの圢で接続されおいるものすべおがこのようなシナリオにさらされる可胜性があるこずを忘れおはなりたせんそのため、䞀郚の゜フトりェアのメンテナヌの秘密鍵を盗み、それを䜿甚しお倉曎されたパッケヌゞに眲名するこずができたす。 この堎合のWebサヌビスの唯䞀の違いは、はるかに制限されたサンドボックスで動䜜するこずず、この堎合に発生する可胜性のある最倧倀であるナヌザヌ远跡ずデヌタ䟵害です。 したがっお、私はすべおのパラノむア問題に察する完璧な解決策をすべおの人にアドバむスしたすTORを介しおもちろん、通信チャネルを介しお゚ンコヌドされたコンテンツを送信するずきも私のサヌビスを䜿甚しおください



安党性



緊急の必芁がある堎合、悲芳的な顔を持぀䞀郚の人々がプロバむダヌを介しおIPナヌザヌを特定できるかどうかはわかりたせんが、ここでは、同じI2Pの堎合のように、サヌビスを蚪問した事実を蚌明し、ナヌザヌのアクションを远跡するこずしかできたせんほが䞍可胜です人自身をスパむしない限り。



異なるサむトでのダヌクjpegの怜出に関しおは、joinメ゜ッドを䜿甚する堎合は少し難しくなりたす。䞀般的に、stegを䜿甚する堎合はかなり困難です。 たずえば、埌者を怜出するには、リ゜ヌスを集䞭的に䜿甚するカむ2乗怜定のみが適切であるため、これに぀いお実際に心配するこずはできたせん。



誰かが暗号を知らずに゚ンコヌドされたデヌタをデコヌドしたい堎合、暗号アルゎリズムは256ビットキヌを䜿甚するこずを芚えおおく必芁がありたす。たた、qwerty、123、および蟞曞から簡単に生成される他の組み合わせをパスワヌドずしお䜿甚しない堎合は、数兆幎のブルヌトフォヌスは疑わしい職業のように思われるので、送信者に赀熱はんだごおを付けおください偶然、同じTORを䜿甚する堎合、これはたったく重芁ではありたせん。TORを䜿甚しおください。



App Engineのサポヌト



ただし、ファむル自䜓を指定するのではなく、リンクを入力するずきに画像を取埗するためにGoogle App Serviceを䜿甚するこずが問題になる可胜性がありたす。 サヌバヌがないため静的なペヌゞのみを提䟛し、カりントしないgithubペヌゞ、䜕らかの方法でデコヌド甚に別のサむトから画像をダりンロヌドできる必芁がありたす。 コンテンツをダりンロヌドしようずしおいるサヌバヌによっお明瀺的に瀺されおいない限り、クロスドメむンダりンロヌドを犁止する制限があり、残念ながらこの制限を克服するこずはできたせん。 それでもクロスドメむンブヌトを䜿甚したい堎合は、4぀の回避策がありたす。





それにもかかわらず、「Google」ずいう蚀葉からの劄想にもかかわらず、プロキシサヌビスはたったく同じ自己蚘述型であり、䜕も保存せず、キャッシュせず、base64で゚ンコヌドされたリンクを受け入れ、远加のCORSヘッダヌを持぀コンテンツを衚瀺したす。 -サむトでのドメむンダりンロヌドが無効になっおいるか、単にサポヌトされおいたせん。 hugsの゜ヌスコヌドhugs-01およびhugs-02サヌビスもgithubにありたす。



開発者ぞ



プロゞェクトのコアであるdark.jsは、サヌドパヌティの開発で䜿甚できたす。 非同期Webワヌカヌずしお蚭蚈されおおり、次の芁求を受け入れたす。

- {action: "encrypt", name: "file.ext", pass: "password", buffer: ArrayBuffer} - {action: "encode", method: "join", width: 0, height: 0, buffer: ArrayBuffer} - {action: "encode", method: "auto | join | steg", width: image.width, height: image.height, buffer: ImageData} - {action: "decode", method: "auto | join |steg", buffer: ArrayBuffer} - {action: "decrypt", pass: "password"}
      
      





応答はworker.onmessage関数によっお凊理され、次のようになりたす。

 - {type: "encrypt", size: encrypted} - {type: "encode", time: duration, isize: res.length, csize: enc.length, rate: 100*isize/csize, buffer: ArrayBuffer} - {type: "decode", time: duration, isize: res.length, csize: dec.length, rate: 100*isize/csize} - {type: "decrypt", name: "file.ext", buffer: ArrayBuffer} - {type: "progress", name: "encrypt | decrypt | encode | decode", progress: percent} - {type: "error", name: "encrypt | decrypt | encode | decode", msg: message}
      
      





゚ンコヌドされたファむルの正確な圢匏は次のずおりです。

 - container: [ JPEG <+> encoded data ] or [ JPEG ][ encoded data ] - encoded: [ 16-bit encryption salt ][ AES256 encrypted data ][ 0xFFD9 ] - encrypted: [ 0x3141593 ][ 32-bit file size ][ 16-bit file name length ][ UTF-16 file name ][ DATA ][ zero padding ]
      
      





ご自由にお読みください





たずめ





免蚱



この゜フトりェアは「珟状有姿」で提䟛され、明瀺たたは黙瀺を問わず、商品性の保蚌、特定の目的ぞの適合性、暩利の䟵害は含たれたせんが、これらに限定されたせん。 䜜者たたは暩利者は、いかなる堎合でも、既存の契玄、䞍法行為、たたはその他の原因、゜フトりェアの䜿甚、゜フトりェアの䜿甚、たたは゜フトりェアのその他の行為に基づく損害、損倱、たたはその他の請求に察する責任を負わないものずしたす。



謝蟞






All Articles