Ստեգանոգրաֆիա ֆայլային համակարգում

Հե՜յ Հաբր։

Ես ուզում եմ ձեզ ներկայացնել մի փոքրիկ նախագիծ ստեգանոգրաֆիա, պատրաստված իմ ազատ ժամանակ սովորելուց։

Ես նախագիծ եմ կազմել ֆայլային համակարգում տեղեկատվության թաքնված պահպանման վերաբերյալ (հետագա FS).
Սա կարող է օգտագործվել կրթական նպատակներով գաղտնի տեղեկատվություն գողանալու համար:

Ստեգանոգրաֆիա ֆայլային համակարգում

Որպես նախատիպ ընտրվել է շատ հին Linux FS ext2.

Իրականացման

Իրականացման նկատառումներ

Եթե ​​լավ է «բացել» ext2 ստանդարտը, ապա կարող եք փոխարինել, որ FS-ում կա այսպես կոչված. Սուպերբլոկներ, որը տրամադրում է հիմնական տեղեկատվություն համակարգի մասին: Ինձ գտնելուց հետո Արգելափակել Bitmap-ը и Inode Աղյուսակ. Գրեթե անմիջապես ծնվեց տեղեկատվությունը ներկայումս դատարկ FS բլոկներում գրանցելու գաղափարը: Հիմա արժեր մտածել զինված ծրագրավորողից պաշտպանվելու մասին hex խմբագիր.

Եթե ​​դուք պահում եք թաքնված տեղեկատվությունը առանց գաղտնագրման, ապա, չնայած դրա մշուշոտությանը FS-ում, այն դեռևս չափազանց նկատելի կլինի, հատկապես, եթե ծրագրավորողը գիտի, թե ինչ փնտրել: Ուստի որոշվեց գաղտնագրել աղբյուրի ֆայլի բոլոր բլոկները։ Ես ընտրեցի բլոկային ծածկագիրը AES, բայց ինչպես հասկանում եք, սա կարևոր չէ։

Ընթերցանության ժամանակ անհրաժեշտ բլոկները բոլոր մյուսներից առանձնացնելու համար որոշվեց բլոկի սկզբում յուրաքանչյուր բլոկի վրա հատուկ նշիչ ավելացնել։ Այս նշանը գաղտնագրված էր՝ կախված աղբյուրի ֆայլի բլոկի համարից: Այս հնարքն անմիջապես հնարավորություն տվեց ոչ միայն գտնել անհրաժեշտ բլոկները, այլեւ ճանաչել դրանց ճիշտ հերթականությունը։

Համակարգի ընդհանուր գործառնական սկզբունքը.

Ստեգանոգրաֆիա ֆայլային համակարգում

Ձայնագրման ալգորիթմ

Կետերը.

  • Նախ գրեք որոշ տեղեկություններ աղբյուրի ֆայլային համակարգում;
  • Ջնջել այս տեղեկատվությունը (պարտադիր չէ, որ բոլորը);
  • Թաքնվող ֆայլը բաժանվում է հավասար երկարության բլոկների՝ ավելացնելով մարկեր.
  • Գաղտնագրեք այս բլոկները;
  • Տեղադրեք կոդավորված բլոկները դատարկ FS բլոկներում:

Բլոկային դիագրամների սիրահարների համար

Ստորև ներկայացված է ձայնագրման ալգորիթմի բլոկային դիագրամ: Ալգորիթմը որպես մուտքագրում ստանում է չորս ֆայլ.
- Փոփոխելի ֆայլային համակարգի պատկեր;
- Ստեգանոգրաֆիայի ենթակա ֆայլ;
- AES գաղտնագրման բանալիով ֆայլ;
- Ֆայլ մարկերով:
Ստեգանոգրաֆիա ֆայլային համակարգում

Հարկ է անմիջապես նշել, որ այս ալգորիթմն ունի մեկ թերություն՝ ֆայլը FS-ում գրելուց հետո, չի կարող Գրեք որևէ նոր բան FS-ում, քանի որ ցանկացած նոր տեղեկություն կարող է հայտնվել այն բլոկներում, որոնք մենք հատկացրել ենք մեր zipped ֆայլին, չնայած դա նաև հնարավորություն է տալիս «արագ ծածկել մեր հետքերը»:

Բայց միանգամայն ակնհայտ է, թե ինչպես կարելի է դա շտկել. անհրաժեշտ է վերաշարադրել FS-ում բլոկներ գրելու ալգորիթմը: Սա հասկանալի, բայց աներեւակայելի ժամանակատար խնդիր է:
Հավատարմության ապացույցի համար ես սա չեմ իրականացրել:

Արդյունքում, FS-ում կկատարվեն հետևյալ փոփոխությունները՝ ահա թե ինչպիսի տեսք ունի FS-ն մինչև ստեգանոգրաֆիան (նախկինում ձայնագրված էր աուդիո ֆայլ):
Ստեգանոգրաֆիա ֆայլային համակարգում
Եվ ահա, թե ինչ տեսք ունի FS-ն արդեն սեղմված տեղեկատվության հետ:
Ստեգանոգրաֆիա ֆայլային համակարգում

Ընթերցանության ալգորիթմ

Կետերը.

  • Բանալու և մարկերների կառուցման մեթոդի իմացությամբ կազմեք առաջին N մարկերները՝ երաշխավորելով, որ N-ը բազմապատկած ֆայլային համակարգի բլոկի երկարությամբ ավելի մեծ է, քան սեղմված ֆայլի երկարությունը.
  • Փնտրեք բլոկներ FS-ում սկսած մարկերներով;
  • Վերծանել ստացված բլոկները և առանձնացնել մարկերները;
  • Հավաքեք ստացված բլոկները ճիշտ հերթականությամբ և ստացեք աղբյուրի ֆայլը:

Բլոկային դիագրամների սիրահարների համար

Ստորև ներկայացված է ձայնագրման ալգորիթմի բլոկային դիագրամ: Ալգորիթմը որպես մուտքագրում ստանում է երեք ֆայլ.
- Ֆայլային համակարգի պատկեր;
- AES գաղտնագրման բանալիով ֆայլ;
- Ֆայլ մարկերով:
Ստեգանոգրաֆիա ֆայլային համակարգում

Ծրագրի գործարկումից հետո հայտնվում է Read ֆայլը, որը կլինի ստեգանոգրաֆիկ ֆայլային համակարգից հանված ֆայլը, եթե բանալին կամ նշիչը սխալ է նշված, ապա Read ֆայլը դատարկ կլինի:
(գեղեցկության սիրահարների համար կարող եք տեղադրել ոչ միայն ֆայլը, այլև «վերնագիր», որը պարունակում է մետա տեղեկատվություն՝ ֆայլի անվանում, իրավունքներ, վերջին փոփոխված ժամանակը և այլն):

Գործարկման ավտոմատացում

Հարմարության համար գրվել են bash սկրիպտներ Linux-ում գործարկումն ավտոմատացնելու համար (փորձարկվել է Ubuntu 16.04.3 LTS-ում):
Եկեք քայլ առ քայլ նայենք մեկնարկին:
Record:

  1. sudo Copy_Flash.sh «DEVICE» - ստացեք FS պատկերը DEVICE-ից (flash);
  2. ./Write.sh «FILE» «KEY» «MARKER» – ստեղծել վիրտուալ միջավայր, ներբեռնել անհրաժեշտ գրադարանները և գործարկել գրելու սցենարը;
  3. sudo ./Write_Flash.sh «DEVICE» – փոխված FS-ը նորից գրեք DEVICE:

Ընթերցանություն.

  1. sudo Copy_Flash.sh «DEVICE» - ստացեք FS պատկերը DEVICE-ից (flash);
  2. ./Read.sh «KEY» «MARKER» - ստեղծել վիրտուալ միջավայր, ներբեռնել անհրաժեշտ գրադարանները և գործարկել skipt-ը կարդալու համար;
  3. Ընթացիկ գրացուցակում բացեք «Կարդալ» ֆայլը, սա զիփված տեղեկատվությունն է:

Ամփոփում

Այս ստեգանոգրաֆիայի մեթոդը հավանաբար բարելավման, լրացուցիչ փորձարկման և ընդլայնման կարիք ունի ավելի հայտնի ֆայլային համակարգերի, ինչպիսիք են Fat32- ը, NTFS- ն и ext4.
Բայց այս աշխատանքի նպատակն էր ցույց տալ այն սկզբունքը, որով հնարավոր է իրականացնել տեղեկատվության թաքնված պահպանում ֆայլային համակարգում։
Նման ալգորիթմների օգնությամբ դուք կարող եք անվախորեն պահել տեղեկատվություն, և եթե, եթե դուք գիտեք բանալին, հնարավոր է կոտրել նման համակարգը ոչ թե կոպիտ ուժով (այլ շատ երկար ալգորիթմով), ապա առանց բանալին իմանալու, սա. Համակարգն ինձ բացարձակապես կայուն է թվում, սակայն դա կարող է առանձին հոդվածի պատճառ հանդիսանալ։

Ամբողջ կոդը ներդրված է Python 3.5.2 տարբերակում: Աշխատանքի օրինակ ներկայացված է իմ յութուբյան ալիքում։ Նախագծի ամբողջական կոդը տեղադրված է GitHub.
(Այո, այո, ես գիտեմ, որ արտադրական տարբերակի համար պետք է ինչ-որ «արագ» գրել, օրինակ C 😉)
Այս իրականացման դեպքում ստեգանոգրաֆիայի համար մուտքագրված ֆայլի չափը չպետք է գերազանցի 1000 կԲ:

Ես ուզում եմ իմ երախտագիտությունը հայտնել օգտատիրոջը ՊավելՄՍՏՈՒ ուսումնասիրության պլանավորման հարցում արժեքավոր խորհրդատվության և հոդվածի ձևավորման վերաբերյալ առաջարկությունների համար:

Source: www.habr.com

Добавить комментарий