Steganografia në sistemin e skedarëve

Përshëndetje, Habr.

Dua të prezantoj një projekt të vogël në lidhje me steganografinë, e bërë në kohën e lirë nga studimet.

Kam bërë një projekt për ruajtjen e fshehtë të informacionit në sistemin e skedarëve ( më tej FS).
) Kjo mund të aplikohet për vjedhjen e informacionit të ndjeshëm për qëllime arsimore.

Steganografia në sistemin e skedarëve

Si një shembull eksperimental është zgjedhur një sistem skedarësh i vjetër linuksian ext2.

Realizimi

Konsideratat për implementimin

Nëse e shqetsoni mirë standardin ext2, mund të zëvendësoni se në FS ekziston një e ashtuquajtur Superblocks, në të cilin jepet informacioni kryesor mbi sistemin. Pas kësaj, unë gjetsha Block Bitmap dhe Tabela e Inode-ve. Pothuajse menjëherë lindi ideja për të regjistruar informacionin në blloqet e zbrazëta të race së FS. Tani duhej të mendonim për mbrojtjen nga programuesi, i armatosur me editorin hex.

Nëse ruani informacionin e fshehur pa enkriptim, atëherë, edhe përkundër përhapjes së tij në FS, ajo do të jetë akoma shumë e dukshme, veçanërisht nese programuesi di se çfarë duhet të kërkojë. Prandaj, u mor vendimi për të enkriptuar të gjitha blloqet e skedarit burimor. Kam zgjedhur algoritmin e enkriptimit AES, por siç e kuptoni, kjo nuk është thelbësore.

Për të ndarë blloqet e nevojshme nga të gjitha të tjerat gjatë leximit, u vendos të shtohet një përdorues i veçantë në fillim të çdo blloku. Ky përdorues ishte koduar në varësi të numrit të bllokut në skedarin burimor. Kjo strategji jo vetëm që ndihmon për të gjetur blloqet e nevojshme, por gjithashtu siguron rendin e tyre të saktë.

Parimi i përgjithshëm i funksionimit të sistemit.

Steganografia në sistemin e skedarëve

Algoritmi i regjistrimit

Hapat:

  • Fillimisht, shkruani ndonjĂ« informacion nĂ« sistemin origjinal tĂ« skedarĂ«ve;
  • Fshini kĂ«tĂ« informacion (nuk Ă«shtĂ« e domosdoshme qĂ« ta fshini tĂ« gjithĂ«);
  • Shkoni skedarin qĂ« do fshihet nĂ« blloqe me tĂ« njĂ«jtin gjatĂ«si, duke shtuar njĂ« pĂ«rdorues;
  • Shkruani kĂ«to blloqe;
  • Vendosni blloqet e koduara nĂ« blloqet e zbrazĂ«ta tĂ« FS.

Për dashamirësit e diagramëve të bllokut

Më poshtë është paraqitur një diagram blloku i algoritmit të regjistrimit. Algoritmi merr katër skedarë si input:
-Imazhi i sistemit të skedarëve të ndryshueshëm;
-Skedari që nënshtrohet steganografisë;
-Skedari me çelësin e kodimit për AES;
-Skedari me përdoruesin.
Steganografia në sistemin e skedarëve

Duhet theksuar se ky algoritëm ka një disavantazh: pas regjistrimit të skedarit në FS, nuk është e mundur të regjistrosh diçka të re në sistemin e skedarëve, pasi çdo informacion i ri mund të bjerë në ato blloqe që i kemi rezervuar për skedarin tonë të steganografuar, por kjo hap mundësinë për "mashtimin e shpejtë të gjurmëve".

Por është mjaft e qartë se si mund të rregullohet kjo: është e nevojshme të ri-programohet algoritmi i regjistrimit të blloqeve në sistemin e skedarëve. Kjo është një detyrë e qartë, por jashtëzakonisht e lodhshme.
Për Proof Of Concept nuk e kam zbatuar këtë.

Si rezultat, do të rezultojnë ndryshimet e mëposhtme në sistemin e skedarëve, kështu duket sistemi i skedarëve para steganografisë (paraprakisht ishte regjistruar një skedar audio).
Steganografia në sistemin e skedarëve
Dhe kështu duket sistemi i skedarëve me informacionin e steganografuar tashmë.
Steganografia në sistemin e skedarëve

Algoritmi i leximit

Hapat:

  • Me njohjen e çelĂ«sit dhe mĂ«nyrĂ«s sĂ« ndĂ«rtimit tĂ« markuesve, pĂ«rgatitni markuesit e parĂ« N, me garancinĂ« qĂ« N, e shumĂ«zuar me gjatĂ«si blloku tĂ« sistemit tĂ« skedarĂ«ve Ă«shtĂ« mĂ« e madhe se gjatĂ«si e skedarit tĂ« steganografuar;
  • Kryeni kĂ«rkimin e blloqeve nĂ« sistemin e skedarĂ«ve, qĂ« fillojnĂ« me markuesit;
  • Dekriptoni blloqet e marra dhe ndanĂ« markuesit;
  • Grumbuloni blloqet e marra nĂ« rendin e duhur dhe merrni skedarin origjinal.

Për dashamirësit e diagramëve të bllokut

Më poshtë është paraqitur një diagram i algoritmit të regjistrimit. Në hyrje, algoritmi merr tre skedarë:
- Imazhi i sistemit të skedarëve;
-Skedari me çelësin e kodimit për AES;
-Skedari me përdoruesin.
Steganografia në sistemin e skedarëve

Pas punës së programit shfaqet një skedar Read, i cili do të jetë skedari i nxjerrë nga sistemi fs steganografik. Nëse çelësi ose markuesi janë treguar gabimisht, atëherë skedari Read do të jetë bosh.
(për ata që i pëlqejnë bukuritë, mund të inkorporoni jo vetëm skedarin, por edhe "kapak", i cili përmban metainformacion: emri i skedarit, të drejtat, koha e ndryshimit të fundit, etj.)

Automatizimi i fillimit

Për lehtësi, janë shkruar skriptet bash që automatizojnë fillimin në Linux (testuar në Ubuntu 16.04.3 LTS).
Do të shqyrtojmë fillimin hap pas hapi.
Shkrimi:

  1. sudo Copy_Flash.sh “DEVICE” — marrim imazhin e FS nga DEVICE (flashi);
  2. ./Write.sh “FILE” “KEY” “MARKER” – krijojmĂ« njĂ« ambient virtual, shkarkojmĂ« bibliotekat e nevojshme dhe fillojmĂ« skriptin pĂ«r shkrim;
  3. sudo ./Write_Flash.sh “DEVICE” – shkruajmĂ« FS tĂ« ndryshuar rishtazi nĂ« DEVICE.

Leximi:

  1. sudo Copy_Flash.sh “DEVICE” — marrim imazhin e FS nga DEVICE (flashi);
  2. ./Read.sh “KEY” ‘MARKER” — krijojmĂ« njĂ« ambient virtual, shkarkojmĂ« bibliotekat e nevojshme dhe fillojmĂ« skriptin pĂ«r lexim;
  3. NĂ« katalogun aktual hapim skedarin Read – kjo Ă«shtĂ« informata steganografike.

Përfundimi

Ky metodë steganografie, ndoshta, ka nevojë për përmirësim, testim shtesë dhe zgjerim në sisteme më popullore skedarësh si Fat32, NTFS dhe ext4.
Qëllimi i kësaj pune ishte të tregohej parimi, përmes të cilit mund të realizohet ruajtja e fshehtë e informacionit në sistemin e skedarëve.
Me algoritme të tillë mund të ruhet informacioni pa frikë, dhe nëse me njohjen e çelësit një sistem i tillë mund të hakohet jo përmes një provimi të plotë (por me një algoritëm shumë të gjatë), pa njohjen e çelësit, ky sistem më duket krejtësisht i fortë; megjithatë, kjo mund të jetë një temë për një artikull të veçantë.

I gjithë kodi është realizuar në gjuhën Python version 3.5.2. Një shembull i punës është paraqitur në kanalin tim youtube. Kodi i plotë i projektit është publikuar në github.
(Po, po, e di qĂ« pĂ«r versionin e prodhimit duhet shkruar nĂ« diçka "tĂ« shpejtĂ«", siç Ă«shtĂ« C 😉)
Në këtë realizim, madhësia e skedarit hyrës për steganografinë nuk duhet të kalojë 1000 kB.

Dua të shpreh mirënjohjen time për përdoruesin PavelMSTU për këshillat e vlefshme në planifikimin e studimit dhe rekomandimet për formatimin e artikullit.

Burimi: habr.com

Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster