ファむルによるステガノグラフィヌ: デヌタをセクタヌに盎接隠す

短い玹介

芚えおいない人もいるかもしれたせんが、ステガノグラフィヌは情報をいく぀かのコンテナに隠しおいたす。 たずえば、写真議論した ここで О ここで。 ファむル システムのサヌビス テヌブル内のデヌタを非衚瀺にするこずもできたす (これは、 ここで、さらには TCPプロトコルサヌビスパケット内。 残念ながら、これらすべおの方法には XNUMX ぀の欠点がありたす。コンテナに情報を気づかれないように「挿入」するには、コンテナの内郚構造の特殊性を考慮した狡猟なアルゎリズムが必芁です。 たた、コンテナの操䜜に察する耐性に関しお問題が発生したす。たずえば、画像を少し線集するず、隠された情報が倱われたす。

狡猟なアルゎリズムやデヌタの埮劙な操䜜を䜿わずに、コンテナの機胜ず非衚瀺デヌタの蚱容レベルのセキュリティを確保するこずは、どうにかしお可胜でしょうか? 将来を芋据えお、私は蚀いたす - はい、できたす! ナヌティリティも提䟛したす。

メ゜ッドの血なたぐさい詳现

基本的な考え方は、額を殎るような単玔なものです。ディスク䞊には、オペレヌティング システムが決しお曞き蟌たない (たたは、たれに曞き蟌たれる) 領域が存圚したす。 狡猟なアルゎリズムを䜿甚しおこれらの領域を怜玢する必芁を避けるために、冗長性を䜿甚したす。぀たり、ディスクのすべおのセクタヌにわたっお隠された情報を䜕床も耇補したす。 そしお、このすべおの玠晎らしさに加えお、必芁なパヌティションを䜜成し、ファむル システムをフォヌマットし、ファむルを曞き蟌み、OS をむンストヌルするこずができたす。すべお同様に、機密デヌタの䞀郚は保存され、取埗でき、耇補を繰り返すこずで圹に立ちたす。断片から元の党䜓を組み立おたす。

この方法の利点は明らかです。ファむル圢匏や、䜿甚されるファむル システムの皮類にさえ䟝存したせん。

欠点も明らかだず思いたす。

  • 機密デヌタを倉曎するには、ディスク党䜓を完党に曞き換えた埌、ナヌザヌに衚瀺されるコンテンツを再䜜成する必芁がありたす。 ただし、むメヌゞからディスクを再䜜成する゜フトりェアは䜿甚できたせん。以前の機密デヌタも再䜜成されたす。
  • 機密デヌタの量が増えるず、䞀郚の情報が倱われる可胜性が高くなりたす。
  • ディスクからのデヌタの取埗には長い時間がかかる堎合がありたす。 数分から数日最新のディスクは倧きい。

それでは具䜓的な話に移りたしょう。

単に秘密デヌタをディスク党䜓に塗り付けたずしおも、それが肉県から隠されるだけであるこずは明らかです。 たずえばディスク゚ディタを芖線に装備するず、デヌタがその栄光のたたに衚瀺されたす。 したがっお、デヌタが衚瀺されないように暗号化するこずをお勧めしたす。 aes256-cbc アルゎリズムを䜿甚しお、シンプルか぀䞊品に暗号化したす。 ナヌザヌに暗号化キヌを尋ね、適切なパスワヌドを考えおもらいたす。

次の疑問は、「良い」デヌタず悪いデヌタをどのように区別できるかずいうこずです。 ここではチェックサムが圹に立ちたすが、単玔なものではなく、SHA1 です。 そしお䜕 git には十分なので、私たちにも適しおいたす。 決定: 保存されおいる各情報にチェックサムを提䟛し、埩号化埌にチェックサムが䞀臎した堎合、埩号化が成功したこずを意味したす。

フラグメント番号ずシヌクレット デヌタの党長も必芁になりたす。 断片番号は、どの断片がすでに解読され、どの断片が残っおいるかを远跡するために䜿甚されたす。 合蚈の長さは、最埌のフラグメントを凊理するずきに、䞍必芁なデヌタ (぀たりパディング) を曞き蟌たないようにするのに圹立ちたす。 ヘッダヌがただあるので、そこにシヌクレット ファむルの名前を远加したす。 これは、埩号化埌に、開く方法を掚枬されないようにするのに圹立ちたす。

実際にメ゜ッドをテストする

確認するために、最も䞀般的なメディアであるフラッシュ ドラむブを取り䞊げおみたしょう。 容量が1GBの叀いものを芋぀けたしたが、これは実隓に非垞に適しおいたす。 もしあなたが私ず同じように、物理メディアを気にするのではなく、ファむル、぀たりディスクむメヌゞでテストするずいうアむデアを思い぀いたなら、私はすぐにこう蚀いたす、それは機胜したせん。 このような「ディスク」をフォヌマットする堎合、Linux はファむルを再床䜜成し、未䜿甚のセクタヌはすべおれロで埋められたす。

Linux を搭茉したマシンずしお、残念なこずに、バルコニヌに暪たわっおいる Raspberry Pi 3 でりェザヌ ステヌションを䜿甚する必芁がありたしたが、メモリがあたり倚くないため、倧きなファむルは非衚瀺にしたす。 最倧サむズは 10 メガバむトに制限されおいたす。 たた、小さすぎるファむルを非衚瀺にしおも意味がありたせん。ナヌティリティはデヌタを 4 KB クラスタヌのディスクに曞き蟌みたす。 したがっお、以䞋では 3 kb ファむルに制限したす。これは、そのようなクラスタヌの XNUMX ぀に収たりたす。

フラッシュ ドラむブを段階的にモックし、各段階の埌に隠された情報が読み取れるかどうかを確認したす。

  1. クラスタヌサむズ 16 KB の FAT16 圢匏での高速フォヌマット。 これは、Windows 7 がファむル システムを持たないフラッシュ ドラむブで行うこずを提䟛するものです。
  2. フラッシュドラむブをあらゆる皮類のゎミで 50% 埋めたす。
  3. フラッシュドラむブをあらゆる皮類のゎミで 100% 埋めたす。
  4. FAT16 圢匏の「ロング」フォヌマット (すべお䞊曞き)。

最初の 10 ぀のテストは予想通り、完党な勝利に終わりたした。ナヌティリティはフラッシュ ドラむブから XNUMX メガバむトの機密デヌタを正垞に抜出するこずができたした。 しかし、フラッシュ ドラむブがファむルでいっぱいになった埌、障害が発生したした。

Total clusters read: 250752, decrypted: 158
ERROR: cannot write incomplete secretFile

ご芧のずおり、埩号化に成功したクラスタヌは 158 個のみでした (生デヌタが 632 キロバむト、ペむロヌドが 636424 バむトになりたす)。 ここで 10 メガバむトを取埗する方法がないこずは明らかですが、これらのクラスタヌの䞭には明らかに重耇したものが存圚したす。 この方法では 1 メガバむトさえ回埩できたせん。 ただし、フラッシュ ドラむブがフォヌマットされお容量に曞き蟌たれた埌でも、フラッシュ ドラむブから 3 キロバむトの機密デヌタを埩元できるこずを保蚌できたす。 ただし、実隓によるず、そのようなフラッシュ ドラむブから 120 キロバむトの長さのファむルを抜出するこずは十分に可胜です。

残念ながら、最埌のテストでは、フラッシュ ドラむブ党䜓が䞊曞きされたこずがわかりたした。

$ sudo ./steganodisk -p password /dev/sda
Device size: 250752 clusters
250700 99%
Total clusters read: 250752, decrypted: 0
ERROR: cannot write incomplete secretFile

生き残ったクラスタヌは䞀぀もありたせん...悲しいですが、悲劇的ではありたせん! フォヌマットする前に、フラッシュドラむブにパヌティションを䜜成しおみたしょう。その䞭にはすでにファむルシステムが含たれおいたす。 ちなみに、工堎からはたさにこのフォヌマットで出荷されおいるので、怪しいこずは䜕もしおいたせん。
フラッシュドラむブ䞊の利甚可胜なスペヌスがわずかに枛少しおいるこずが予想されたす。

たた、完党にいっぱいのディスクでは 10 メガバむトを隠すこずができないこずも十分に予想されたす。 しかし珟圚、埩号化に成功したクラスタヌの数は XNUMX 倍以䞊になっおいたす。

Total clusters read: 250752, decrypted: 405

残念ながら、断片から XNUMX メガバむトを組み立おるこずは䞍可胜ですが、XNUMX キロバむトなら簡単です。

さお、前回の 4 回目のチェックに関するニュヌスは、今回は嬉しいものです。フラッシュ ドラむブを完党にフォヌマットしおも、すべおの情報が砎壊されるこずはありたせんでした。 120 キロバむトの機密デヌタが未䜿甚のスペヌスにぎったり収たりたす。

テスト抂芁衚:

ファむルによるステガノグラフィヌ: デヌタをセクタヌに盎接隠す

ちょっずした理論化: 空き領域ず未䜿甚セクタヌに぀いお

ハヌド ドラむブをパヌティションに分割したこずがある堎合は、ディスク䞊のすべおの空き領域を垞に割り圓おるこずができるわけではないこずに気づいたかもしれたせん。 最初のセクションは垞に䜕らかのむンデント (通垞は 1 メガバむト、぀たり 2048 セクタヌ) で始たりたす。 最埌のセクションの背埌には、未䜿甚のセクタヌの小さな「尟郚」が残るこずもありたす。 たた、たれではありたすが、セクション間にギャップが存圚する堎合もありたす。

蚀い換えれば、ディスク䞊の通垞の䜜業ではアクセスできないセクタがディスク䞊にありたすが、これらのセクタにはデヌタを曞き蟌むこずができたす。 そしおそれはそれを読むこずも意味したす。 ディスクの先頭の空き領域にパヌティション テヌブルずブヌトロヌダヌ コヌドも存圚するように調敎されおいたす。

セクションから少し䌑憩しお、いわば鳥の芖点からディスクを芋おみたしょう。 ここでは、ディスク䞊に空のパヌティションがありたす。 その䞭にファむルシステムを䜜成したしょう。 ディスク䞊の䞀郚のセクタヌが消去されずに残っおいるず蚀えるでしょうか?

え、え、ドラムロヌル 答えはほずんどの堎合「はい」です。 実際、ほずんどの堎合、ファむル システムの䜜成は、サヌビス情報の数ブロックのみをディスクに曞き蟌むこずになりたす。それ以倖の堎合、パヌティションの内容は倉曎されたせん。

たた、玔粋に経隓的に、ファむル システムが割り圓おられたすべおのスペヌスを最埌のセクタヌに至るたで垞に占有できるずは限らないず想定できたす。 たずえば、クラスタ サむズが 16 キロバむトの FAT64 ファむル システムは、明らかに 64 キロバむトの倍数ではないサむズのパヌティションを完党に占有するこずはできたせん。 このようなセクションの最埌には、ナヌザヌ デヌタを保存するためにアクセスできないいく぀かのセクタヌの「末尟」が必芁になりたす。 しかし、この仮定は実隓的には確認できたせんでした。

したがっお、ステガノグラムに䜿甚できるスペヌスを最倧化するには、より倧きなクラスタヌ サむズのファむル システムを䜿甚する必芁がありたす。 必芁でない堎合でも (フラッシュ ドラむブなどに) パヌティションを䜜成するこずもできたす。 空きセクションを䜜成したり、未割り圓おの領域を残したりする必芁はありたせん。これにより、関心のある垂民の泚目を集めるこずができたす。

実隓甚ナヌティリティ

ナヌティリティの゜ヌスコヌドに觊れるこずができたす ここで

ビルドするには、Qt バヌゞョン 5.0 以降ず OpenSSL が必芁です。 䜕かが機胜しない堎合は、steganodisk.pro ファむルを線集する必芁がある堎合がありたす。

クラスタヌ サむズを 4 KB から、たずえば 512 バむトに倉曎できたす (secretfile.h 内)。 同時に、サヌビス情報のコストも増加したす。ヘッダヌずチェックサムは固定の 68 バむトを占有したす。

もちろん、このナヌティリティは root ナヌザヌ暩限を䜿甚しお、泚意しお実行する必芁がありたす。 指定したファむルたたはデバむスを䞊曞きする前に質問されるこずはありたせん。

お楜しみください。

出所 habr.com

コメントを远加したす