Հե՜յ Հաբր։
Ես ուզում եմ ձեզ ներկայացնել մի փոքրիկ նախագիծ
Ես նախագիծ եմ կազմել ֆայլային համակարգում տեղեկատվության թաքնված պահպանման վերաբերյալ (հետագա FS).
Սա կարող է օգտագործվել կրթական նպատակներով գաղտնի տեղեկատվություն գողանալու համար:
Որպես նախատիպ ընտրվել է շատ հին Linux FS
Իրականացման
Իրականացման նկատառումներ
Եթե լավ է «բացել» ext2 ստանդարտը, ապա կարող եք փոխարինել, որ FS-ում կա այսպես կոչված.
Եթե դուք պահում եք թաքնված տեղեկատվությունը առանց գաղտնագրման, ապա, չնայած դրա մշուշոտությանը FS-ում, այն դեռևս չափազանց նկատելի կլինի, հատկապես, եթե ծրագրավորողը գիտի, թե ինչ փնտրել: Ուստի որոշվեց գաղտնագրել աղբյուրի ֆայլի բոլոր բլոկները։ Ես ընտրեցի բլոկային ծածկագիրը
Ընթերցանության ժամանակ անհրաժեշտ բլոկները բոլոր մյուսներից առանձնացնելու համար որոշվեց բլոկի սկզբում յուրաքանչյուր բլոկի վրա հատուկ նշիչ ավելացնել։ Այս նշանը գաղտնագրված էր՝ կախված աղբյուրի ֆայլի բլոկի համարից: Այս հնարքն անմիջապես հնարավորություն տվեց ոչ միայն գտնել անհրաժեշտ բլոկները, այլեւ ճանաչել դրանց ճիշտ հերթականությունը։
Համակարգի ընդհանուր գործառնական սկզբունքը.
Ձայնագրման ալգորիթմ
Կետերը.
- Նախ գրեք որոշ տեղեկություններ աղբյուրի ֆայլային համակարգում;
- Ջնջել այս տեղեկատվությունը (պարտադիր չէ, որ բոլորը);
- Թաքնվող ֆայլը բաժանվում է հավասար երկարության բլոկների՝ ավելացնելով մարկեր.
- Գաղտնագրեք այս բլոկները;
- Տեղադրեք կոդավորված բլոկները դատարկ FS բլոկներում:
Բլոկային դիագրամների սիրահարների համար
Ստորև ներկայացված է ձայնագրման ալգորիթմի բլոկային դիագրամ: Ալգորիթմը որպես մուտքագրում ստանում է չորս ֆայլ.
- Փոփոխելի ֆայլային համակարգի պատկեր;
- Ստեգանոգրաֆիայի ենթակա ֆայլ;
- AES գաղտնագրման բանալիով ֆայլ;
- Ֆայլ մարկերով:
Հարկ է անմիջապես նշել, որ այս ալգորիթմն ունի մեկ թերություն՝ ֆայլը FS-ում գրելուց հետո, չի կարող Գրեք որևէ նոր բան FS-ում, քանի որ ցանկացած նոր տեղեկություն կարող է հայտնվել այն բլոկներում, որոնք մենք հատկացրել ենք մեր zipped ֆայլին, չնայած դա նաև հնարավորություն է տալիս «արագ ծածկել մեր հետքերը»:
Բայց միանգամայն ակնհայտ է, թե ինչպես կարելի է դա շտկել. անհրաժեշտ է վերաշարադրել FS-ում բլոկներ գրելու ալգորիթմը: Սա հասկանալի, բայց աներեւակայելի ժամանակատար խնդիր է:
Հավատարմության ապացույցի համար ես սա չեմ իրականացրել:
Արդյունքում, FS-ում կկատարվեն հետևյալ փոփոխությունները՝ ահա թե ինչպիսի տեսք ունի FS-ն մինչև ստեգանոգրաֆիան (նախկինում ձայնագրված էր աուդիո ֆայլ):
Եվ ահա, թե ինչ տեսք ունի FS-ն արդեն սեղմված տեղեկատվության հետ:
Ընթերցանության ալգորիթմ
Կետերը.
- Բանալու և մարկերների կառուցման մեթոդի իմացությամբ կազմեք առաջին N մարկերները՝ երաշխավորելով, որ N-ը բազմապատկած ֆայլային համակարգի բլոկի երկարությամբ ավելի մեծ է, քան սեղմված ֆայլի երկարությունը.
- Փնտրեք բլոկներ FS-ում սկսած մարկերներով;
- Վերծանել ստացված բլոկները և առանձնացնել մարկերները;
- Հավաքեք ստացված բլոկները ճիշտ հերթականությամբ և ստացեք աղբյուրի ֆայլը:
Բլոկային դիագրամների սիրահարների համար
Ստորև ներկայացված է ձայնագրման ալգորիթմի բլոկային դիագրամ: Ալգորիթմը որպես մուտքագրում ստանում է երեք ֆայլ.
- Ֆայլային համակարգի պատկեր;
- AES գաղտնագրման բանալիով ֆայլ;
- Ֆայլ մարկերով:
Ծրագրի գործարկումից հետո հայտնվում է Read ֆայլը, որը կլինի ստեգանոգրաֆիկ ֆայլային համակարգից հանված ֆայլը, եթե բանալին կամ նշիչը սխալ է նշված, ապա Read ֆայլը դատարկ կլինի:
(գեղեցկության սիրահարների համար կարող եք տեղադրել ոչ միայն ֆայլը, այլև «վերնագիր», որը պարունակում է մետա տեղեկատվություն՝ ֆայլի անվանում, իրավունքներ, վերջին փոփոխված ժամանակը և այլն):
Գործարկման ավտոմատացում
Հարմարության համար գրվել են bash սկրիպտներ Linux-ում գործարկումն ավտոմատացնելու համար (փորձարկվել է Ubuntu 16.04.3 LTS-ում):
Եկեք քայլ առ քայլ նայենք մեկնարկին:
Record:
- sudo Copy_Flash.sh «DEVICE» - ստացեք FS պատկերը DEVICE-ից (flash);
- ./Write.sh «FILE» «KEY» «MARKER» – ստեղծել վիրտուալ միջավայր, ներբեռնել անհրաժեշտ գրադարանները և գործարկել գրելու սցենարը;
- sudo ./Write_Flash.sh «DEVICE» – փոխված FS-ը նորից գրեք DEVICE:
Ընթերցանություն.
- sudo Copy_Flash.sh «DEVICE» - ստացեք FS պատկերը DEVICE-ից (flash);
- ./Read.sh «KEY» «MARKER» - ստեղծել վիրտուալ միջավայր, ներբեռնել անհրաժեշտ գրադարանները և գործարկել skipt-ը կարդալու համար;
- Ընթացիկ գրացուցակում բացեք «Կարդալ» ֆայլը, սա զիփված տեղեկատվությունն է:
Ամփոփում
Այս ստեգանոգրաֆիայի մեթոդը հավանաբար բարելավման, լրացուցիչ փորձարկման և ընդլայնման կարիք ունի ավելի հայտնի ֆայլային համակարգերի, ինչպիսիք են
Բայց այս աշխատանքի նպատակն էր ցույց տալ այն սկզբունքը, որով հնարավոր է իրականացնել տեղեկատվության թաքնված պահպանում ֆայլային համակարգում։
Նման ալգորիթմների օգնությամբ դուք կարող եք անվախորեն պահել տեղեկատվություն, և եթե, եթե դուք գիտեք բանալին, հնարավոր է կոտրել նման համակարգը ոչ թե կոպիտ ուժով (այլ շատ երկար ալգորիթմով), ապա առանց բանալին իմանալու, սա. Համակարգն ինձ բացարձակապես կայուն է թվում, սակայն դա կարող է առանձին հոդվածի պատճառ հանդիսանալ։
Ամբողջ կոդը ներդրված է Python 3.5.2 տարբերակում:
(Այո, այո, ես գիտեմ, որ արտադրական տարբերակի համար պետք է ինչ-որ «արագ» գրել, օրինակ C 😉)
Այս իրականացման դեպքում ստեգանոգրաֆիայի համար մուտքագրված ֆայլի չափը չպետք է գերազանցի 1000 կԲ:
Ես ուզում եմ իմ երախտագիտությունը հայտնել օգտատիրոջը
Source: www.habr.com