Hoy Habr.
Nais kong ipakita sa iyo ang isang maliit na proyekto sa
Gumawa ako ng isang proyekto sa nakatagong imbakan ng impormasyon sa file system (karagdagang ФС).
Maaari itong magamit upang magnakaw ng kumpidensyal na impormasyon para sa mga layuning pang-edukasyon.
Isang napakatandang Linux FS ang napili bilang prototype
Pagpapatupad
Mga Pagsasaalang-alang sa Pagpapatupad
Kung magandang i-“unravel” ang ext2 standard, pwede mong palitan yan sa FS may tinatawag na
Kung mag-imbak ka ng nakatagong impormasyon nang walang pag-encrypt, kung gayon, kahit na sa kabila ng pagkalabo nito sa FS, ito ay magiging masyadong kapansin-pansin, lalo na kung alam ng programmer kung ano ang hahanapin. Samakatuwid, napagpasyahan na i-encrypt ang lahat ng mga bloke ng source file. Pinili ko ang block cipher
Upang paghiwalayin ang mga kinakailangang bloke mula sa lahat ng iba pa kapag nagbabasa, napagpasyahan na magdagdag ng isang espesyal na marker sa bawat bloke sa simula ng bloke. Ang token na ito ay na-encrypt depende sa block number sa source file. Ang lansihin na ito ay agad na ginawang posible hindi lamang upang mahanap ang mga kinakailangang bloke, ngunit din upang makilala ang kanilang tamang pagkakasunud-sunod.
Pangkalahatang prinsipyo ng pagpapatakbo ng system.
Pagre-record ng algorithm
Ang mga puntos:
- Sumulat muna ng ilang impormasyon sa source file system;
- Tanggalin ang impormasyong ito (hindi lahat);
- Ang file na itatago ay nahahati sa mga bloke ng pantay na haba, pagdaragdag ng isang marker;
- I-encrypt ang mga bloke na ito;
- Ilagay ang mga naka-encrypt na bloke sa mga walang laman na bloke ng FS.
Para sa mga mahilig sa block diagram
Nasa ibaba ang isang block diagram ng recording algorithm. Ang algorithm ay tumatanggap ng apat na file bilang input:
-Larawan ng isang nababagong file system;
-File na napapailalim sa steganography;
-File na may encryption key para sa AES;
-File na may marker.
Dapat pansinin kaagad na ang algorithm na ito ay may isang sagabal: pagkatapos isulat ang file sa FS, hindi pwede magsulat ng anumang bago sa FS, dahil ang anumang bagong impormasyon ay maaaring mapunta sa mga bloke na inilaan namin sa aming naka-zip na file, bagama't nagbubukas din ito ng posibilidad na "mabilis na takpan ang aming mga track."
Ngunit medyo halata kung paano ito maaayos: kinakailangan na muling isulat ang algorithm para sa pagsusulat ng mga bloke sa FS. Ito ay isang naiintindihan, ngunit hindi kapani-paniwalang pag-ubos ng oras na gawain.
For Proof Of Consept hindi ko ito ipinatupad.
Bilang resulta, ang mga sumusunod na pagbabago ay gagawin sa FS; ito ang hitsura ng FS bago ang steganography (isang audio file ay dating naitala).
At ito ang hitsura ng FS na may naka-zip na impormasyon.
Pagbasa ng algorithm
Ang mga puntos:
- Sa kaalaman sa susi at paraan ng paggawa ng mga marker, buuin ang unang N marker, na may garantiya na ang N na pinarami ng haba ng block ng file system ay mas malaki kaysa sa haba ng naka-zip na file;
- Maghanap ng mga bloke sa FS na nagsisimula sa mga marker;
- Tukuyin ang natanggap na mga bloke at paghiwalayin ang mga marker;
- Kolektahin ang mga nagresultang bloke sa tamang pagkakasunud-sunod at kunin ang source file.
Para sa mga mahilig sa block diagram
Nasa ibaba ang isang block diagram ng recording algorithm. Ang algorithm ay tumatanggap ng tatlong mga file bilang input:
-Imahe ng system ng file;
-File na may encryption key para sa AES;
-File na may marker.
Matapos tumakbo ang programa, lilitaw ang Read file, na kung saan ay ang file na kinuha mula sa steganographed file system; kung ang key o marker ay tinukoy nang hindi tama, ang Read file ay magiging walang laman.
(para sa mga mahilig sa kagandahan, maaari mong ipasok hindi lamang ang file, ngunit isang "header" na naglalaman ng meta-impormasyon: pangalan ng file, mga karapatan, huling binagong oras, atbp.)
Startup automation
Para sa kaginhawahan, isinulat ang mga script ng bash upang i-automate ang paglulunsad sa Linux (nasubok sa Ubuntu 16.04.3 LTS).
Tingnan natin ang hakbang-hakbang na paglulunsad.
Itala:
- sudo Copy_Flash.sh “DEVICE” - kunin ang FS na imahe mula sa DEVICE (flash);
- ./Write.sh “FILE” “KEY” “MARKER” – lumikha ng isang virtual na kapaligiran, i-download ang mga kinakailangang aklatan at patakbuhin ang write script;
- sudo ./Write_Flash.sh “DEVICE” – isulat muli ang binagong FS sa DEVICE.
Pagbasa:
- sudo Copy_Flash.sh “DEVICE” - kunin ang FS na imahe mula sa DEVICE (flash);
- ./Read.sh “KEY” ‘MARKER’ - lumikha ng virtual na kapaligiran, i-download ang mga kinakailangang aklatan at patakbuhin ang skipt para sa pagbabasa;
- Sa kasalukuyang direktoryo, buksan ang Read file - ito ang naka-zip na impormasyon.
Konklusyon
Ang pamamaraang ito ng steganography ay malamang na nangangailangan ng pagpapabuti, karagdagang pagsubok at extension sa mas sikat na mga file system, gaya ng
Ngunit ang layunin ng gawaing ito ay upang ipakita ang prinsipyo kung saan posible na isagawa ang nakatagong imbakan ng impormasyon sa file system.
Sa tulong ng naturang mga algorithm, maaari kang walang takot na mag-imbak ng impormasyon, at kung, kung alam mo ang susi, posible na i-hack ang naturang sistema hindi sa pamamagitan ng malupit na puwersa (ngunit sa pamamagitan ng isang napakahabang algorithm), kung gayon nang hindi nalalaman ang susi, ito Ang sistema ay tila sa akin ay ganap na matatag, gayunpaman, ito ay maaaring magsilbi bilang isang dahilan para sa isang hiwalay na artikulo.
Ang lahat ng code ay ipinatupad sa Python bersyon 3.5.2.
(Oo, oo, alam ko na para sa bersyon ng produksyon kailangan mong magsulat sa isang bagay na "mabilis", halimbawa C 😉)
Sa pagpapatupad na ito, ang laki ng input file para sa steganography ay hindi dapat lumampas sa 1000 kB.
Gusto kong ipahayag ang aking pasasalamat sa gumagamit
Pinagmulan: www.habr.com