Mfumo wa faili steganografia

Habari Habr.

Ningependa kukuonyesha mradi mdogo steganografia, iliyotengenezwa kwa wakati wangu wa bure kutoka kwa kusoma.

Nilifanya mradi juu ya uhifadhi uliofichwa wa habari kwenye mfumo wa faili (zaidi FS).
Hii inaweza kutumika kuiba taarifa za siri kwa madhumuni ya elimu.

Mfumo wa faili steganografia

Linux FS ya zamani sana ilichaguliwa kama mfano ext2.

Utekelezaji

Mazingatio ya Utekelezaji

Ikiwa ni vizuri "kufungua" kiwango cha ext2, basi unaweza kuchukua nafasi ya kwamba katika FS kuna kinachojulikana. Superblocks, ambayo hutoa taarifa za msingi kuhusu mfumo. Baada ya kupatikana Zuia Bitmap ΠΈ Jedwali la Inode. Karibu mara moja, wazo la kurekodi habari kwenye vizuizi tupu vya FS lilizaliwa. Sasa ilikuwa inafaa kufikiria juu ya ulinzi kutoka kwa programu iliyo na silaha mhariri wa hex.

Ikiwa utahifadhi habari iliyofichwa bila usimbuaji, basi, hata licha ya ukungu wake katika FS, bado itakuwa wazi sana, haswa ikiwa programu anajua nini cha kutafuta. Kwa hivyo, iliamuliwa kusimba vizuizi vyote vya faili ya chanzo. Nilichagua block cipher AES, lakini kama unavyoelewa, hii sio muhimu.

Ili kutenganisha vitalu muhimu kutoka kwa wengine wote wakati wa kusoma, iliamuliwa kuongeza alama maalum kwa kila block mwanzoni mwa block. Tokeni hii ilisimbwa kwa njia fiche kulingana na nambari ya kuzuia katika faili chanzo. Hila hii mara moja ilifanya iwezekanavyo si tu kupata vitalu muhimu, lakini pia kutambua utaratibu wao sahihi.

Kanuni ya jumla ya uendeshaji wa mfumo.

Mfumo wa faili steganografia

Algorithm ya kurekodi

pointi:

  • Kwanza andika habari fulani kwenye mfumo wa faili wa chanzo;
  • Futa habari hii (sio lazima zote);
  • Faili iliyofichwa imegawanywa katika vitalu vya urefu sawa, na kuongeza alama;
  • Simba vizuizi hivi kwa njia fiche;
  • Weka vizuizi vilivyosimbwa kwa njia fiche kwenye vizuizi tupu vya FS.

Kwa wapenzi wa mchoro wa block

Chini ni mchoro wa kuzuia wa algorithm ya kurekodi. Algorithm inapokea faili nne kama pembejeo:
-Picha ya mfumo wa faili unaoweza kubadilishwa;
-Faili chini ya steganografia;
-Faili iliyo na ufunguo wa usimbuaji kwa AES;
-Faili iliyo na alama.
Mfumo wa faili steganografia

Inastahili kuzingatia mara moja kwamba algorithm hii ina shida moja: baada ya kuandika faili kwa FS, hawezi andika chochote kipya kwenye FS, kwa kuwa taarifa yoyote mpya inaweza kuishia kwenye vizuizi ambavyo tumetenga kwa faili yetu iliyofungwa, ingawa hii pia inafungua uwezekano wa "kufunika nyimbo zetu kwa haraka."

Lakini ni dhahiri kabisa jinsi hii inaweza kurekebishwa: ni muhimu kuandika upya algorithm ya kuandika vitalu katika FS. Hii ni kazi inayoeleweka, lakini inayotumia wakati mwingi.
Kwa Uthibitisho wa Idhini sikutekeleza hili.

Kama matokeo, mabadiliko yafuatayo yatafanywa kwa FS; hivi ndivyo FS inavyoonekana kabla ya steganografia (faili la sauti lilirekodiwa hapo awali).
Mfumo wa faili steganografia
Na hivi ndivyo FS inavyoonekana na habari ambayo tayari imefungwa.
Mfumo wa faili steganografia

Algorithm ya kusoma

pointi:

  • Kwa ujuzi wa ufunguo na njia ya kujenga alama, tengeneza alama za kwanza za N, na dhamana ya kwamba N iliyozidishwa na urefu wa kizuizi cha mfumo wa faili ni kubwa zaidi kuliko urefu wa faili iliyofungwa;
  • Tafuta vitalu katika FS kuanzia na alama;
  • Tambua vitalu vilivyopokelewa na utenganishe alama;
  • Kusanya vizuizi vinavyotokana na mpangilio sahihi na upate faili ya chanzo.

Kwa wapenzi wa mchoro wa block

Chini ni mchoro wa kuzuia wa algorithm ya kurekodi. Algorithm inapokea faili tatu kama pembejeo:
- Picha ya mfumo wa faili;
-Faili iliyo na ufunguo wa usimbuaji kwa AES;
-Faili iliyo na alama.
Mfumo wa faili steganografia

Baada ya programu kuendeshwa, faili ya Soma inaonekana, ambayo itakuwa faili iliyotolewa kutoka kwa mfumo wa faili wa steganographed; ikiwa ufunguo au alama iliainishwa vibaya, basi faili ya Soma itakuwa tupu.
(kwa wapenzi wa urembo, unaweza kuingiza sio faili tu, lakini "kichwa" kilicho na habari ya meta: jina la faili, haki, wakati wa mwisho uliorekebishwa, nk.)

Anza otomatiki

Kwa urahisi, maandishi ya bash yaliandikwa ili kuhariri uzinduzi kwenye Linux (iliyojaribiwa kwenye Ubuntu 16.04.3 LTS).
Wacha tuangalie uzinduzi hatua kwa hatua.
Rekodi:

  1. sudo Copy_Flash.sh "DEVICE" - pata picha ya FS kutoka kwa DEVICE (flash);
  2. ./Write.sh "FILE" "KEY" "ALAMA" - tengeneza mazingira ya mtandaoni, pakua maktaba muhimu na uendesha hati ya kuandika;
  3. sudo ./Write_Flash.sh "DEVICE" - andika FS iliyobadilishwa tena kwa DEVICE.

Kusoma:

  1. sudo Copy_Flash.sh "DEVICE" - pata picha ya FS kutoka kwa DEVICE (flash);
  2. ./Read.sh "KEY" 'AMAKER" - tengeneza mazingira ya mtandaoni, pakua maktaba muhimu na uendeshe ruka kwa usomaji;
  3. Katika saraka ya sasa, fungua faili ya Soma - hii ni habari iliyofungwa.

Hitimisho

Mbinu hii ya steganografia pengine inahitaji uboreshaji, majaribio ya ziada na ugani kwa mifumo maarufu zaidi ya faili, kama vile Fat32, NTFS ΠΈ ext4.
Lakini madhumuni ya kazi hii ilikuwa kuonyesha kanuni ambayo inawezekana kufanya uhifadhi wa siri wa habari katika mfumo wa faili.
Kwa msaada wa algorithms kama hizo, unaweza kuhifadhi habari bila woga, na ikiwa, ikiwa unajua ufunguo, inawezekana kuteka mfumo kama huo sio kwa nguvu ya kikatili (lakini kwa algorithm ndefu sana), basi bila kujua ufunguo, hii. mfumo unaonekana kwangu kuwa thabiti kabisa, hata hivyo, hii inaweza kutumika kama sababu ya nakala tofauti.

Nambari zote zinatekelezwa katika toleo la Python 3.5.2. Mfano wa kazi iliyotolewa kwenye chaneli yangu ya youtube. Msimbo kamili wa mradi umechapishwa github.
(Ndio, ndio, najua kuwa kwa toleo la uzalishaji unahitaji kuandika kwa kitu "haraka", kwa mfano C πŸ˜‰)
Katika utekelezaji huu, ukubwa wa faili ya pembejeo kwa steganografia haipaswi kuzidi 1000 kB.

Ninataka kutoa shukrani zangu kwa mtumiaji PavelMSTU kwa ushauri muhimu katika kupanga utafiti na mapendekezo juu ya muundo wa makala.

Chanzo: mapenzi.com

Kuongeza maoni