Përshëndetje, Habr.
Dua të prezantoj një projekt të vogël në lidhje me , 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.

Si një shembull eksperimental është zgjedhur një sistem skedarësh i vjetër linuksian .
Realizimi
Konsideratat për implementimin
Nëse e shqetsoni mirë standardin ext2, mund të zëvendësoni se në FS ekziston një e ashtuquajtur , në të cilin jepet informacioni kryesor mbi sistemin. Pas kësaj, unë gjetsha dhe . 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 .
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 , 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.

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.

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).

Dhe kështu duket sistemi i skedarëve me informacionin e steganografuar tashmë.

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.

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:
- sudo Copy_Flash.sh âDEVICEâ â marrim imazhin e FS nga DEVICE (flashi);
- ./Write.sh âFILEâ âKEYâ âMARKERâ â krijojmĂ« njĂ« ambient virtual, shkarkojmĂ« bibliotekat e nevojshme dhe fillojmĂ« skriptin pĂ«r shkrim;
- sudo ./Write_Flash.sh âDEVICEâ â shkruajmĂ« FS tĂ« ndryshuar rishtazi nĂ« DEVICE.
Leximi:
- sudo Copy_Flash.sh âDEVICEâ â marrim imazhin e FS nga DEVICE (flashi);
- ./Read.sh âKEYâ âMARKERâ â krijojmĂ« njĂ« ambient virtual, shkarkojmĂ« bibliotekat e nevojshme dhe fillojmĂ« skriptin pĂ«r lexim;
- 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 , dhe .
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. është paraqitur në kanalin tim youtube. Kodi i plotë i projektit është publikuar në .
(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 për këshillat e vlefshme në planifikimin e studimit dhe rekomandimet për formatimin e artikullit.
Burimi: habr.com
