Steganografia na faili: kuficha data moja kwa moja katika sekta

Dibaji fupi

Steganografia, ikiwa hakuna mtu anayekumbuka, anaficha habari kwenye vyombo vingine. Kwa mfano, katika picha (iliyojadiliwa hapa ΠΈ hapa) Unaweza pia kuficha data kwenye meza za huduma za mfumo wa faili (hii iliandikwa kuhusu hapa), na hata katika pakiti za huduma za itifaki ya TCP. Kwa bahati mbaya, njia hizi zote zina shida moja: ili "kuingiza" habari kwa njia isiyoeleweka kwenye chombo, unahitaji algorithms ya ujanja ambayo inazingatia upekee wa muundo wa ndani wa chombo. Na shida huibuka na upinzani wa chombo kwa kudanganywa: kwa mfano, ikiwa utahariri picha kidogo, habari iliyofichwa inapotea.

Inawezekana kwa namna fulani kufanya bila algorithms ya ujanja na udanganyifu wa hila na data, na bado kuhakikisha utendaji wa chombo na kiwango cha kukubalika cha usalama wa data iliyofichwa? Kuangalia mbele, nitasema - ndio, unaweza! Nitatoa hata matumizi.

Maelezo ya umwagaji damu ya njia

Wazo la msingi ni rahisi kama pigo kwenye paji la uso: kuna maeneo kwenye diski ambayo mfumo wa uendeshaji hauandiki kamwe (au huandika katika matukio machache). Ili kuepuka hitaji la kutafuta maeneo haya kwa kutumia algorithms ya ujanja, tutatumia upunguzaji - yaani, tutaiga habari zetu zilizofichwa mara nyingi, mara nyingi katika sekta zote za diski. Kisha, juu ya utukufu huu wote, unaweza kuunda sehemu zinazohitajika, mifumo ya faili ya fomati, kuandika faili na kusakinisha OS - sawa, sehemu ya data ya siri itahifadhiwa na inaweza kupatikana, na kurudia mara kwa mara kutatusaidia. weka nzima ya asili pamoja kutoka kwa vipande.

Faida ya njia hii ni dhahiri: hatutegemei muundo wa faili, au hata kwa aina ya mfumo wa faili uliotumiwa.

Ubaya pia, nadhani, ni dhahiri:

  • Data ya siri inaweza tu kubadilishwa kwa kuandika upya kabisa diski nzima, ikifuatiwa na kuunda upya maudhui yanayoonekana kwa mtumiaji. Hata hivyo, huwezi kutumia programu ambayo inaunda upya diski kutoka kwa picha: pia itaunda upya data ya siri ya awali.
  • Kadiri idadi ya data ya siri inavyoongezeka, ndivyo uwezekano wa kupoteza habari fulani.
  • Kurejesha data kutoka kwa diski kunaweza kuchukua muda mrefu. Kutoka dakika kadhaa hadi siku kadhaa (disks za kisasa ni kubwa).

Sasa hebu tuendelee kwenye maalum.

Ni wazi kwamba ikiwa utapaka tu data ya siri kwenye diski yote, itafichwa tu kutoka kwa jicho la uchi. Ikiwa utaandaa macho yako, sema, mhariri wa diski, data itaonekana katika utukufu wake wote. Kwa hivyo, itakuwa ni wazo nzuri kusimba data ili isionekane. Tutasimba kwa njia fiche kwa urahisi, lakini kwa ladha: kwa kutumia algoriti ya aes256-cbc. Tutamwomba mtumiaji ufunguo wa usimbaji fiche na umruhusu aje na nenosiri zuri.

Swali linalofuata ni jinsi tunaweza kutofautisha data "nzuri" kutoka kwa data mbaya. Hapa checksum itatusaidia, lakini sio rahisi, lakini SHA1. Na nini? Ni nzuri ya kutosha kwa git, kwa hivyo itatufaa sisi pia. Imeamuliwa: tunatoa kila taarifa iliyohifadhiwa na cheki, na ikiwa baada ya kusimbua inalingana, inamaanisha usimbuaji ulifanikiwa.

Utahitaji pia nambari ya kipande na urefu wa jumla wa data ya siri. Nambari ya kipande ni kuweka wimbo wa vipande ambavyo tayari tumeshafafanua na ambavyo vimesalia. Urefu wa jumla utakuwa muhimu kwetu wakati wa kusindika kipande cha mwisho, ili usiandike data isiyo ya lazima (yaani, pedi). Naam, kwa kuwa bado tuna kichwa, tutaongeza jina la faili ya siri huko. Itakuwa muhimu baada ya decryption, ili si nadhani jinsi ya kuifungua.

Kujaribu mbinu katika mazoezi

Kuangalia, hebu tuchukue kati ya kawaida - gari la flash. Nilipata ya zamani yenye uwezo wa GB 1, ambayo inafaa kabisa kwa majaribio. Ikiwa wewe, kama mimi, ulikuja na wazo la kutojisumbua na media ya mwili, lakini kuijaribu kwenye faili - picha ya diski, basi nitasema mara moja: haitafanya kazi. Wakati wa kupangilia "diski" kama hiyo, Linux inaunda faili tena, na sekta zote ambazo hazijatumiwa zitajazwa na sifuri.

Kama mashine iliyo na Linux, kwa bahati mbaya, ilibidi nitumie kituo cha hali ya hewa kwenye Raspberry Pi 3 iliyolala kwenye balcony. Hakuna kumbukumbu nyingi hapo, kwa hivyo hatutaficha faili kubwa. Tunajiwekea kikomo kwa ukubwa wa juu wa megabytes 10. Pia hakuna maana katika kuficha faili ambazo ni ndogo sana: shirika linaandika data kwenye diski katika makundi 4 KB. Kwa hivyo, hapa chini tutajiwekea kikomo kwa faili ya kb 3 - inafaa kwenye nguzo moja kama hiyo.

Tutadhihaki kiendeshi cha flash kwa hatua, tukiangalia baada ya kila hatua ikiwa habari iliyofichwa inaweza kusomeka:

  1. Uumbizaji wa haraka katika umbizo la FAT16 na ukubwa wa nguzo wa 16 KB. Hivi ndivyo Windows 7 inatoa kufanya na gari la flash ambalo halina mfumo wa faili.
  2. Kujaza gari la flash na kila aina ya takataka kwa 50%.
  3. Kujaza gari la flash na kila aina ya takataka kwa 100%.
  4. Umbizo la "muda mrefu" katika muundo wa FAT16 (kubadilisha kila kitu).

Vipimo viwili vya kwanza, kama inavyotarajiwa, vilimalizika kwa ushindi kamili: shirika liliweza kutoa kwa mafanikio megabytes 10 za data ya siri kutoka kwa gari la flash. Lakini baada ya gari la flash kujazwa na faili, kutofaulu kulitokea:

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

Kama unavyoona, ni nguzo 158 pekee zilisimbwa kwa ufanisi (kilobaiti 632 za data ghafi, ambayo inatoa baiti 636424 za upakiaji). Ni wazi kwamba hakuna njia ya kupata megabytes 10 hapa, na bado kati ya makundi haya kuna nakala za wazi. Huwezi hata kurejesha megabaiti 1 kwa njia hii. Lakini tunaweza kuhakikisha kwamba tutaokoa kilobytes 3 za data ya siri kutoka kwa gari la flash hata baada ya kupangiliwa na kuandikwa kwa uwezo. Walakini, majaribio yanaonyesha kuwa inawezekana kabisa kutoa faili yenye urefu wa kilobytes 120 kutoka kwa gari kama hilo.

Jaribio la mwisho, kwa bahati mbaya, lilionyesha kuwa kiendeshi kizima kiliandikwa tena:

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

Hakuna nguzo moja iliyosalia ... Inasikitisha, lakini sio ya kusikitisha! Kabla ya kupangilia, hebu jaribu kuunda kizigeu kwenye gari la flash, na tayari ndani yake mfumo wa faili. Kwa njia, ilitoka kwa kiwanda na umbizo hili haswa, kwa hivyo hatufanyi chochote cha kutiliwa shaka.
Inatarajiwa kabisa kwamba nafasi iliyopo kwenye gari la flash imepungua kidogo.

Inatarajiwa pia kuwa megabytes 10 haziwezi kufichwa kwenye diski kamili kabisa. Lakini sasa idadi ya vikundi vilivyosimbwa kwa mafanikio imeongezeka zaidi ya mara mbili!

Total clusters read: 250752, decrypted: 405

Kwa bahati mbaya, haiwezekani kukusanya megabyte kutoka kwa vipande, lakini kilobytes mia mbili ni rahisi.

Kweli, habari juu ya cheki ya mwisho, ya 4, wakati huu ni ya kufurahisha: kuunda muundo wa gari kama hilo haukusababisha uharibifu wa habari zote! Kilobaiti 120 za data ya siri zinafaa kikamilifu katika nafasi isiyotumiwa.

Jedwali la muhtasari wa jaribio:

Steganografia na faili: kuficha data moja kwa moja katika sekta

Nadharia kidogo: kuhusu nafasi ya bure na sekta zisizotumiwa

Ikiwa umewahi kugawanya gari lako ngumu katika sehemu, unaweza kuwa umeona kuwa si mara zote inawezekana kutenga nafasi yote ya bure kwenye diski. Sehemu ya kwanza daima huanza na ujongezaji fulani (kawaida megabyte 1, au sekta 2048). Nyuma ya sehemu ya mwisho, pia hutokea kwamba bado kuna "mkia" mdogo wa sekta zisizotumiwa. Na wakati mwingine kuna mapungufu kati ya sehemu, ingawa mara chache.

Kwa maneno mengine, kuna sekta kwenye diski ambayo haiwezi kupatikana wakati wa kazi ya kawaida na diski, lakini data inaweza kuandikwa kwa sekta hizi! Na hiyo inamaanisha kuisoma pia. Imebadilishwa kwa ukweli kwamba pia kuna meza ya kugawanya na msimbo wa bootloader, ambayo iko katika eneo tupu mwanzoni mwa diski.

Hebu tuchukue mapumziko kutoka kwa sehemu kwa muda na tuangalie diski kutoka kwa jicho la ndege, kwa kusema. Hapa tuna kizigeu tupu kwenye diski. Wacha tuunda mfumo wa faili ndani yake. Je, tunaweza kusema kwamba baadhi ya sekta kwenye diski bado hazijafutwa?

E-e-e - roll ya ngoma! Jibu litakuwa karibu kila wakati ndio! Hakika, katika hali nyingi, kuunda mfumo wa faili huja kwa kuandika vitalu vichache tu vya habari za huduma kwenye diski, na vinginevyo yaliyomo ya ugawaji haubadilika.

Na pia - kwa nguvu - tunaweza kudhani kuwa mfumo wa faili hauwezi kila wakati kuchukua nafasi yote iliyopewa hadi sekta ya mwisho. Kwa mfano, mfumo wa faili wa FAT16 wenye saizi ya nguzo ya kilobaiti 64 ni wazi hauwezi kuchukua kizigeu kilicho na saizi isiyozidisha ya kilobaiti 64. Mwishoni mwa sehemu kama hiyo italazimika kuwa na "mkia" wa sekta kadhaa, isiyoweza kufikiwa kwa kuhifadhi data ya mtumiaji. Walakini, dhana hii haikuweza kuthibitishwa kwa majaribio.

Kwa hiyo, ili kuongeza nafasi iliyopo kwa steganogram, unahitaji kutumia mfumo wa faili na ukubwa mkubwa wa nguzo. Unaweza pia kuunda kizigeu, hata ikiwa hii sio lazima (kwenye gari la flash, kwa mfano). Hakuna haja ya kuunda sehemu tupu au kuacha maeneo yasiyotengwa - hii itavutia tahadhari ya wananchi wenye nia.

Utility kwa majaribio

Unaweza kugusa msimbo wa chanzo wa matumizi hapa

Ili kuunda, utahitaji toleo la Qt 5.0 au toleo jipya zaidi na OpenSSL. Ikiwa kitu hakifanyi kazi, unaweza kuhariri faili ya steganodisk.pro.

Unaweza kubadilisha ukubwa wa nguzo kutoka 4 KB hadi, sema, 512 byte (katika secretfile.h). Wakati huo huo, gharama ya habari ya huduma itaongezeka: kichwa na hundi huchukua 68 byte fasta.

Unahitaji kuendesha matumizi, bila shaka, na haki za mtumiaji wa mizizi, na kwa tahadhari. Hakutakuwa na maswali yaliyoulizwa kabla ya kufuta faili au kifaa maalum!

Furahia.

Chanzo: mapenzi.com

Kuongeza maoni