Një paraqitje e vogël
Steganografia, nëse dikush nuk e mban mend, është fshehja e informacionit në ndonjë kontejner. Për shembull, në imazhe (kjo u diskutua dhe ). Mund të fshehni gjithashtu të dhënat në tabelat e shërbimit të sistemit të skedarëve (për këtë është shkruar ), dhe madje . Fatkeqësisht, të gjithë këto metoda kanë një të metë të vetme: për të futur informacionin pa u vërejtur në kontejner, ne na nevojiten algoritma të sofistikuar që marrin parasysh karakteristikat e brendshme të kontejnerit. Po ashtu, ka probleme me qëndrueshmërinë e kontejnerit ndaj manipulimeve: për shembull, nëse modifikoni pak imazhin, informacioni i fshehur humbet.
A mund të dëshmojmë ndonjëherë pa algoritma të sofistikuara dhe manipulatorë të hollë të të dhënave, dhe megjithatë të sigurojmë funksionalitetin e kontejnerit dhe një nivel të pranueshëm të ruajtjes së të dhënave të fshehura? Duke iu referuar së ardhmes do të them - po, është e mundur! Dhe madje do të propozoj një vegël.
Detajet e tmerrshme të metodës
Ideja kryesore është e thjeshtë si një goditje me shufër në ballë: në disk ekzistojnë zona në të cilat sistemi operativ kurrë nuk shkruan (ose shkruan në raste të rralla). Që të mos duhet të kërkoni këto zona me algoritma të sofistikuar, do të përdorim tepricën - do të kopjojmë informacionin tonë të fshehur shumë-më shumë herë në të gjithë sektorët e diskut. Pastaj, mbi gjithë këtë bukuri, mund të krijoni ndarjet e nevojshme, të formatoni sistemet e skedarëve, të shkruani skedarët dhe të vendosni sistemet operuese - pjesa e sekretit do të ruhet dhe mund të nxirret, dhe kopjimi i përsëritur do të na ndihmojë të rregullojmë informacionin e origjinës nga copat.
Avantazhi i një metode të tillë është i dukshëm: ne nuk jemi të varur nga formati i skedarëve, as nga tipi i sistemit të skedarëve të përdorur.
Të metat gjithashtu, mendoj, janë të dukshme:
- Të dhënat sekrete mund të ndryshohen vetëm me një riprodhim të plotë të gjithë diskut, me një rifillim të përmbajtjes që i është parë përdoruesit. Në këtë rast, nuk mund të përdoren software që riprodhojnë diskun nga një imazh: ai do të riprodhojë gjithashtu dhe të dhënat sekrete të mëparshme.
- Sa më i madh të jetë volumi i të dhënave sekrete, aq më e madhe është probabiliteti i humbjes së një pjese të informacionit.
- Nxjerrja e të dhënave nga disku mund të marrë shumë kohë. Nga disa minuta në disa ditë (disqe moderne janë më të mëdhaja).
Tani le të kalojmë te detajet.
E kuptueshme qĂ« nĂ«se shpĂ«rndajmĂ« thjesht tĂ« dhĂ«nat e fshehta nĂ« tĂ« gjithĂ« diskun, ato do tĂ« mbeten tĂ« fshehta vetĂ«m nga syri i zakonshĂ«m. Po tĂ« armatosim syrin, le tĂ« themi, me njĂ« redaktues disku, tĂ« dhĂ«nat do tĂ« shfaqen nĂ« gjithĂ« shkĂ«lqimin e tyre. Prandaj, Ă«shtĂ« mĂ«se e nevojshme qĂ« tĂ« dhĂ«nat tĂ« enkriptohen, pĂ«r tĂ« mos u dalluar. Do ta bĂ«jmĂ« kĂ«tĂ« duke pĂ«rdorur njĂ« metodĂ« tĂ« thjeshtĂ«, por me stil: me algoritmin aes256-cbc. ĂelĂ«sin e enkriptimit do ta kĂ«rkojmĂ« nga pĂ«rdoruesi, le t'i shpikĂ« njĂ« fjalĂ«kalim tĂ« mirĂ«.
Pyetja tjetĂ«r Ă«shtĂ« se si tĂ« dallojmĂ« tĂ« dhĂ«nat "e duhura" nga ato tĂ« prishura. KĂ«tu do tĂ« na ndihmojĂ« shuma e kontrollit, por jo njĂ« e zakonshme, por SHA1. Pse jo? PĂ«r git Ă«shtĂ« mjaft e mirĂ«, prandaj Ă«shtĂ« gjithashtu e dobishme pĂ«r ne. E vendosur: do t'i pajisim çdo fragment tĂ« ruajtur tĂ« informacionit me njĂ« shifĂ«r kontrolli, dhe nĂ«se pas dekriptimit ajo pĂ«rputhet â do tĂ« thotĂ« se dekriptimi ka qenĂ« i suksesshĂ«m.
Gjithashtu do tĂ« na nevojitet numri i fragmentit dhe gjatĂ«sia totale e tĂ« dhĂ«nave tĂ« fshehta. Numri i fragmentit â pĂ«r tĂ« ndjekur se cilat pjesĂ« kemi dekriptuar tashmĂ«, dhe cilat kanĂ« mbetur. GjatĂ«sia totale na nevojitet kur tĂ« pĂ«rpunojmĂ« fragmentin e fundit, pĂ«r tĂ« mos shkruar tĂ« dhĂ«na tĂ« panevojshme (tĂ« njohura si padding). Po ashtu, duke qenĂ« se kemi njĂ« titull, do ta shtojmĂ« emrin e skedarit tĂ« fshehtĂ«. Ky do tĂ« jetĂ« i dobishĂ«m pas dekriptimit, pĂ«r tĂ« mos u menduar se me çfarĂ« ta hapim atĂ«.
Do ta testojmë metodën në praktikë
PĂ«r verifikimin do tĂ« marrim mbajtĂ«sin mĂ« tĂ« zakonshĂ«m â njĂ« flash drive. Kam gjetur njĂ« tĂ« vjetĂ«r 1 Gb, qĂ« Ă«shtĂ« perfekt pĂ«r eksperimente. NĂ«se edhe juve, si dhe mua, ju erdhi nĂ« mendje tĂ« mos shqetĂ«soheni pĂ«r mbajtĂ«sit fizikĂ«, por tĂ« provoni me njĂ« skedar â njĂ« imazh disku, tĂ« them menjĂ«herĂ«: nuk do tĂ« funksionojĂ«. Kur formatoni njĂ« âdiskâ tĂ« tillĂ«, Linux krijon njĂ« skedar tĂ« ri, dhe tĂ« gjitha sektorĂ«t e papĂ«rdorur do tĂ« mbushen me zero.
Si makinĂ« me Linux, pĂ«r fat tĂ« keq, duhet tĂ« pĂ«rdorim njĂ« stacion meteorologjik qĂ« ndodhet nĂ« ballkon, tĂ« bazuar nĂ« Raspberry Pi 3. Atje nuk ka shumĂ« memorie, prandaj nuk do tĂ« fshehim skedarĂ« tĂ« mĂ«dhenj. Do t'u pĂ«rshtatemi njĂ« madhĂ«sie maksimale prej 10 megabajtĂ«sh. SkedarĂ«t shumĂ« tĂ« vegjĂ«l gjithashtu nuk kanĂ« kuptim tĂ« fshihen: utilitari shkruan tĂ« dhĂ«na nĂ« disk nĂ« grupe prej 4 Kb. Prandaj, nga poshtĂ«, do tĂ« kufizohemi nĂ« njĂ« skedar prej 3 Kb â ai mund tĂ« strehohet nĂ« njĂ« grup tĂ« tillĂ«.
Do ta testojmë flash drive-n me një qasje të etapizuar, duke kontrolluar pas çdo etape nëse informacioni i fshehur është lexueshme:
- Formatim i shpejtë në formatin FAT16 me madhësinë e klasterit 16 kb. Kjo është ajo që ofron Windows 7 me një memorje USB që nuk ka një sistem skedarësh.
- Mbushja e memorjes USB me të dhëna të ndryshme deri në 50%.
- Mbushja e memorjes USB me të dhëna të ndryshme deri në 100%.
- Formatim "i gjatë" në formatin FAT16 (me riparimin e gjithë informacionit).
Dy provat e para përfunduan me një fitore të plotë: aplikacioni arriti të nxjerrë me sukses 10 megabajt të dhënash sekrete nga memorja USB. Megjithatë, pasi memorja u mbush me skedarë, ndodhi një dështim:
Totali i grupeve të lexuara: 250752, të dekoduara: 158
Gabim: nuk mund të shkruaj dosjen e sekretit të paplotë
Siç shohim, arritĂ«m tĂ« dekriptojmĂ« vetĂ«m 158 klastera (632 kilobajt tĂ« dhĂ«nash tĂ« papĂ«rpunuara, qĂ« japin 636424 byte informacion tĂ« dobishĂ«m). ĂshtĂ« e qartĂ« se 10 megabajt kĂ«tu nuk mund tĂ« grumbullohen, dhe mes kĂ«tyre klasterĂ«ve ka padyshim dublika. Edhe 1 megabajt nuk mund tĂ« rikuperohet kĂ«shtu. MegjithatĂ«, mund tĂ« garantojmĂ« se 3 kilobajt tĂ« dhĂ«nash sekrete do tĂ« rikuperohen nga memoria edhe pasi tĂ« formatizohet dhe tĂ« mbushet. SidoqoftĂ«, eksperimentet tregojnĂ« se Ă«shtĂ« me tĂ« vĂ«rtetĂ« e mundur tĂ« nxirret njĂ« skedar me gjatĂ«si 120 kilobajt nga njĂ« memorje e tillĂ«.
Prova e fundit, fatkeqësisht, tregoi se memoria është ri-shkruar e tëra:
$ sudo .\/steganodisk -p password \/dev\/sda
Madhësia e pajisjes: 250752 klasterë
250700 99%
Klasterë të totalizuar të lexuar: 250752, të çosur: 0
Gabim: nuk mund të shkruaj dosjen e sekretit të paplotë
AsnjĂ« klaster nuk u ruajt... E trishtĂ«, por jo tragjike! Do tĂ« pĂ«rpiqemi tĂ« krijojmĂ« njĂ« ndarje nĂ« memorjen USB para formatimit, dhe pastaj nĂ« tĂ« â njĂ« sistem skedarĂ«sh. PĂ«r mĂ« tepĂ«r, ajo erdhi nga fabrika me kĂ«tĂ« formatim, kĂ«shtu qĂ« nuk po bĂ«jmĂ« asgjĂ« tĂ« dyshimtĂ«.
Padyshim që hapësira e disponueshme në memorjen USB paksa u zvogëlua.
Po ashtu, ishte e pritshme që 10 megabajt nuk arritën të fshihen në një disk të mbushur plotësisht. Por tani numri i klasterëve të dekriptuar u rrit më shumë se dy herë!
Totali i klasterëve të lexuar: 250752, të dekriptuar: 405
MegabajtĂ«, fatkeqĂ«sisht, nuk mund tĂ« mblidhen nga copat, por dyqind kilobajtĂ« â lehtĂ«sisht.
Dhe ora e fundit, kontrollet e 4-ta, këtë herë sjell lajme të gëzueshme: formatimi i plotë i kësaj memorjeje nuk çoi në shkatërrimin e të gjithë informacionit! 120 kilobajt të dhënash sekrete u ruajtën në hapësirën e pavendosur.
Të dhënat përmbledhëse për testimin:

Pak teori: për hapësirën e lirë dhe sektorët e pavendosur
Nëse ndonjëherë keni ndarë një hard disk në partitë, atëherë mund të keni vënë re se nuk është gjithmonë e mundur të alokoni gjithë hapësirën e lirë në disk. Partita e parë gjithmonë fillon me një margjinal të caktuar (zakonisht 1 megabajt, ose 2048 sektorë). Pas pjesës së fundit gjithashtu, ndonjëherë, mbetet një "bisht" i vogël i sektorëve të pa përdorur. Po ashtu, mes partive ndonjëherë mbeten hapësira, ndonëse rrallë.
Me fjalë të tjera, në disk ka sektorë, të cilët nuk kanë qasje në punën normale me diskun, por të dhënat mund të shkruhen në këta sektorë! Pra, mund të lexohen gjithashtu. Me faktin se ka gjithashtu një tabelë të repartit dhe një kod boot që ndodhen në zonën e zbrazët në fillim të diskut.
Të shkojmë pak nga partitë dhe të shikojmë diskun nga një lartësi, si të thuash, një fluturim me zog. Këtu kemi një repart të zbrazët në disk. Le të krijojmë një sistem skedarësh në të. A mund të themi se disa sektorë në disk kanë mbetur të pa zënë?
Dhe â njĂ« ritĂ«m daulle! PĂ«rgjigjja zakonisht do tĂ« jetĂ« â po! Sepse nĂ« shumicĂ«n e rasteve krijimi i njĂ« sistemi skedarĂ«sh pĂ«rfundon me faktin se nĂ« disk shkruhen vetĂ«m disa blloqe informacioni shĂ«rbimi, dhe pĂ«r tĂ« tjerat, pĂ«rmbajtja e repartit nuk ndryshohet.
Po ashtu â nĂ« mĂ«nyrĂ« empirike â mund tĂ« supozojmĂ« se sistemi i skedarĂ«ve nuk mund tĂ« zĂ«rĂ« gjithmonĂ« gjithĂ« hapĂ«sirĂ«n e caktuar deri nĂ« sektorin e fundit. PĂ«r shembull, njĂ« sistem skedarĂ«sh FAT16 me njĂ« madhĂ«si klasteri prej 64 kilobajtĂ«sh, natyrisht, nuk do tĂ« jetĂ« nĂ« gjendje tĂ« zĂ«rĂ« plotĂ«sisht njĂ« repart qĂ« nuk Ă«shtĂ« shumĂ«fish i 64 kilobajtĂ«ve. NĂ« fund tĂ« njĂ« tĂ« tillĂ« partie duhet tĂ« mbetet "bishti" i disa sektorĂ«ve, tĂ« pa arritshĂ«m pĂ«r ruajtjen e tĂ« dhĂ«nave tĂ« pĂ«rdoruesve. MegjithatĂ«, nuk u arrit tĂ« konfirmohet eksperimenti pĂ«r kĂ«tĂ« supozim.
Pra, pĂ«r tĂ« maksimizuar hapĂ«sirĂ«n e disponueshme pĂ«r steganogramin, duhet tĂ« pĂ«rdoret njĂ« sistem skedarĂ«sh me njĂ« madhĂ«si klasteri mĂ« tĂ« madhe. Mund tĂ« krijoni gjithashtu njĂ« repart, edhe nĂ«se kjo nuk Ă«shtĂ« e nevojshme (pĂ«r shembull, nĂ« njĂ« flash drive). Nuk Ă«shtĂ« e nevojshme tĂ« krijoni reparte tĂ« zbrazĂ«ta ose tĂ« lini zona tĂ« pa ndara â kjo do tĂ« tĂ«rheqĂ« vĂ«mendjen e atyre qĂ« janĂ« tĂ« interesuar.
Utiliteti për eksperimente
Mund të hetoni burimet e utilitetit
PĂ«r ndĂ«rtimin e tij kĂ«rkohet Qt versioni 5.0 dhe mĂ« lart dhe OpenSSL. NĂ«se diçka nuk kompilohet â ndoshta do tĂ« duhet tĂ« rregulloni skedarin steganodisk.pro.
Mund të ndryshoni madhësinë e klasterit nga 4 KB në, për shembull, 512 byte (në secretfile.h). Në këtë rast, do të rriten shpenzimet për informacionin mbështetës: titulli dhe kontrolli i shumës zënë 68 byte të fiksuara.
Duhen nisur aplikacionin natyrisht me të drejtat e përdoruesit root, dhe me kujdes. Nuk do të ketë pyetje para se të ridëgjohet skedari ose pajisja përkatëse!
Shijoni.
Burimi: habr.com
