Կարճ նախաբան
Ստեգանոգրաֆիան, եթե որևէ մեկը չի հիշում, թաքցնում է տեղեկատվությունը որոշ տարաներում: Օրինակ, նկարներում (քննարկված
Հնարավո՞ր է ինչ-որ կերպ անել առանց խորամանկ ալգորիթմների և տվյալների հետ նուրբ մանիպուլյացիաների, և դեռ ապահովել կոնտեյների ֆունկցիոնալությունը և թաքնված տվյալների անվտանգության ընդունելի մակարդակը: Նայելով առաջ, ես կասեմ՝ այո, դու կարող ես: Ես ձեզ նույնիսկ օգտակար կառաջարկեմ.
Մեթոդի արյունոտ մանրամասներ
Հիմնական գաղափարը այնքան պարզ է, որքան ճակատին հարվածելը. սկավառակի վրա կան հատվածներ, որոնց վրա օպերացիոն համակարգը երբեք չի գրում (կամ գրում է հազվադեպ դեպքերում): Այս տարածքները խորամանկ ալգորիթմների միջոցով փնտրելու անհրաժեշտությունից խուսափելու համար մենք կօգտագործենք ավելորդություն, այսինքն՝ մենք կկրկնօրինակենք մեր թաքնված տեղեկատվությունը շատ ու շատ անգամներ սկավառակի բոլոր հատվածներում: Այնուհետև, այս ամբողջ շքեղության վերևում, դուք կարող եք ստեղծել անհրաժեշտ միջնորմներ, ձևաչափել ֆայլային համակարգեր, գրել ֆայլեր և տեղադրել ՕՀ-ներ, միևնույն է, գաղտնի տվյալների մի մասը կպահվի և հնարավոր կլինի առբերել, և կրկնվող կրկնօրինակումը կօգնի մեզ: միացրեք բնօրինակը ամբողջը կտորներից:
Այս մեթոդի առավելությունն ակնհայտ է. մենք կախված չենք ֆայլի ձևաչափից կամ նույնիսկ օգտագործվող ֆայլային համակարգի տեսակից:
Թերությունները նույնպես, կարծում եմ, ակնհայտ են.
- Գաղտնի տվյալները կարող են փոխվել միայն ամբողջ սկավառակի ամբողջական վերաշարադրմամբ, որին հաջորդում է օգտագործողի համար տեսանելի բովանդակությունը վերստեղծելով: Այնուամենայնիվ, դուք չեք կարող օգտագործել ծրագրակազմ, որը վերստեղծում է սկավառակը պատկերից. այն նաև կվերստեղծի նախկին գաղտնի տվյալները:
- Որքան մեծ է գաղտնի տվյալների ծավալը, այնքան մեծ է որոշ տեղեկություններ կորցնելու հավանականությունը:
- Սկավառակից տվյալների առբերումը կարող է երկար ժամանակ տևել: Մի քանի րոպեից մինչև մի քանի օր (ժամանակակից սկավառակները մեծ են):
Հիմա եկեք անցնենք կոնկրետություններին:
Հասկանալի է, որ եթե դուք պարզապես քսում եք գաղտնի տվյալները ամբողջ սկավառակի վրա, ապա դրանք միայն անզեն աչքից կթաքցվեն: Եթե հայացքդ զինես, ասենք, սկավառակի խմբագրիչով, ապա տվյալները կհայտնվեն իրենց ողջ փառքով։ Հետևաբար, լավ կլինի գաղտնագրել տվյալները, որպեսզի դրանք չհայտնվեն: Մենք կգաղտնագրենք պարզ, բայց ճաշակով. օգտագործելով aes256-cbc ալգորիթմը: Մենք օգտվողից կխնդրենք գաղտնագրման բանալին և թույլ կտանք լավ գաղտնաբառ գտնել:
Հաջորդ հարցն այն է, թե ինչպես կարող ենք տարբերակել «լավ» տվյալները վատ տվյալներից: Այստեղ մեզ կօգնի ստուգիչ գումարը, բայց ոչ պարզ, այլ SHA1: Եւ ինչ? Դա բավարար է git-ի համար, ուստի այն մեզ նույնպես կհամապատասխանի: Որոշել ենք. մենք յուրաքանչյուր պահված տեղեկատվության տրամադրում ենք ստուգիչ գումար, և եթե վերծանումից հետո այն համընկնում է, նշանակում է, որ ապակոդավորումը հաջող է եղել:
Ձեզ անհրաժեշտ կլինի նաև հատվածի համարը և գաղտնի տվյալների ընդհանուր երկարությունը: Հատվածի համարն այն է, որ հետևենք, թե որ կտորներն ենք մենք արդեն վերծանել և որոնք են մնացել: Ընդհանուր երկարությունը մեզ օգտակար կլինի վերջին հատվածը մշակելիս, որպեսզի ավելորդ տվյալներ չգրենք (այսինքն՝ լցոնում): Դե, քանի որ մենք դեռ ունենք վերնագիր, մենք այնտեղ կավելացնենք գաղտնի ֆայլի անունը: Այն օգտակար կլինի վերծանումից հետո, որպեսզի չկռահեք, թե ինչպես բացել այն։
Մեթոդի փորձարկում գործնականում
Ստուգելու համար եկեք վերցնենք ամենատարածված կրիչը՝ ֆլեշ կրիչը: Ես գտա հինը 1 ԳԲ տարողությամբ, որը բավականին հարմար է փորձերի համար։ Եթե դուք, ինչպես ինձ, մտաք ֆիզիկական մեդիայի հետ չանհանգստանալու, այլ այն ֆայլի վրա՝ սկավառակի պատկերի վրա փորձարկելու գաղափարը, ապա ես անմիջապես կասեմ՝ դա չի աշխատի: Նման «սկավառակը» ֆորմատավորելիս Linux-ը նորից ֆայլ է ստեղծում, և բոլոր չօգտագործված հատվածները կլցվեն զրոներով:
Որպես Linux-ով մեքենա, ցավոք, ես ստիպված էի օգտագործել օդերեւութաբանական կայան Raspberry Pi 3-ում, որը ընկած էր պատշգամբում: Այնտեղ շատ հիշողություն չկա, ուստի մենք չենք թաքցնի մեծ ֆայլեր: Մենք սահմանափակվում ենք առավելագույնը 10 մեգաբայթով: Նաև իմաստ չունի թաքցնել չափազանց փոքր ֆայլերը. կոմունալը տվյալները գրում է սկավառակի վրա 4 ԿԲ կլաստերներով: Հետևաբար, ներքևում մենք կսահմանափակվենք 3 կբ ֆայլով. այն տեղավորվում է մեկ նման կլաստերի մեջ:
Մենք կծաղրենք ֆլեշ կրիչը փուլ առ փուլ՝ յուրաքանչյուր փուլից հետո ստուգելով, թե արդյոք թաքնված տեղեկատվությունը ընթեռնելի է.
- Արագ ձևաչափում FAT16 ձևաչափով՝ 16 ԿԲ կլաստերի չափով: Ահա թե ինչ է առաջարկում Windows 7-ն անել ֆլեշ կրիչի հետ, որը չունի ֆայլային համակարգ:
- Ֆլեշ կրիչը բոլոր տեսակի աղբով լցնելը 50%-ով։
- Ֆլեշ կրիչը բոլոր տեսակի աղբով լցնելը 100%-ով։
- «Երկար» ձևաչափում FAT16 ձևաչափով (վերագրելով ամեն ինչ):
Առաջին երկու փորձարկումները, ինչպես և սպասվում էր, ավարտվեցին լիակատար հաղթանակով. կոմունալը կարողացավ հաջողությամբ հանել 10 մեգաբայթ գաղտնի տվյալներ ֆլեշ կրիչից: Բայց այն բանից հետո, երբ ֆլեշ կրիչը լիցքավորվեց ֆայլերով, տեղի ունեցավ ձախողում.
Total clusters read: 250752, decrypted: 158
ERROR: cannot write incomplete secretFile
Ինչպես տեսնում եք, հաջողությամբ վերծանվել է ընդամենը 158 կլաստեր (632 կիլոբայթ չմշակված տվյալներ, որոնք տալիս են 636424 բայթ ծանրաբեռնվածություն): Հասկանալի է, որ այստեղ 10 մեգաբայթ ստանալու միջոց չկա, բայց այս կլաստերների մեջ ակնհայտորեն կրկնօրինակներ կան։ Դուք չեք կարող նույնիսկ վերականգնել 1 մեգաբայթ այս կերպ: Բայց մենք կարող ենք երաշխավորել, որ մենք կվերականգնենք 3 կիլոբայթ գաղտնի տվյալներ ֆլեշ կրիչից, նույնիսկ այն բանից հետո, երբ այն ֆորմատավորվի և գրվի մինչև հզորությունը: Այնուամենայնիվ, փորձերը ցույց են տալիս, որ նման ֆլեշ կրիչից միանգամայն հնարավոր է հանել 120 կիլոբայթ երկարությամբ ֆայլ:
Վերջին թեստը, ցավոք, ցույց տվեց, որ ամբողջ ֆլեշ կրիչը վերագրված է.
$ sudo ./steganodisk -p password /dev/sda
Device size: 250752 clusters
250700 99%
Total clusters read: 250752, decrypted: 0
ERROR: cannot write incomplete secretFile
Ոչ մի կլաստեր չի պահպանվել... Տխուր, բայց ոչ ողբերգական: Նախքան ֆորմատավորումը, եկեք փորձենք ստեղծել միջնորմ ֆլեշ կրիչի վրա, և արդեն դրա մեջ ֆայլային համակարգ: Ի դեպ, գործարանից եկել է հենց այս ֆորմատավորումով, ուստի կասկածելի բան չենք անում։
Միանգամայն սպասելի է, որ ֆլեշ կրիչի հասանելի տարածքը փոքր-ինչ նվազել է:
Նաև միանգամայն սպասելի է, որ 10 մեգաբայթը հնարավոր չէ թաքցնել ամբողջովին լի սկավառակի վրա: Բայց այժմ հաջողությամբ վերծանված կլաստերների թիվը կրկնապատկվել է:
Total clusters read: 250752, decrypted: 405
Ցավոք, անհնար է մի մեգաբայթ հավաքել կտորներից, բայց երկու հարյուր կիլոբայթը հեշտ է:
Դե, վերջին՝ 4-րդ ստուգման մասին լուրն այս անգամ ուրախալի է՝ նման ֆլեշ կրիչի ամբողջական ձևաչափումը չհանգեցրեց ամբողջ տեղեկատվության ոչնչացմանը: 120 կիլոբայթ գաղտնի տվյալներ հիանալի տեղավորվում են չօգտագործված տարածության մեջ:
Թեստի ամփոփ աղյուսակ.
Մի փոքր տեսություն՝ ազատ տարածության և չօգտագործված հատվածների մասին
Եթե երբևէ ձեր կոշտ սկավառակը բաժանել եք միջնորմների, կարող եք նկատել, որ միշտ չէ, որ հնարավոր է բոլոր ազատ տարածքը հատկացնել սկավառակի վրա: Առաջին բաժինը միշտ սկսվում է ինչ-որ նահանջով (սովորաբար 1 մեգաբայթ կամ 2048 հատված): Վերջին հատվածի հետևում պատահում է նաև, որ մնում է չօգտագործված հատվածների մի փոքր «պոչ»: Եվ երբեմն հատվածների միջև կան բացեր, թեև հազվադեպ:
Այլ կերպ ասած, սկավառակի վրա կան հատվածներ, որոնք հնարավոր չէ մուտք գործել սկավառակի հետ նորմալ աշխատելու ժամանակ, բայց տվյալները կարող են գրվել այս հատվածներում: Եվ դա նշանակում է նաև կարդալ: Ճշգրտված է այն բանի համար, որ կա նաև բաժանման աղյուսակ և bootloader կոդը, որոնք գտնվում են սկավառակի սկզբի դատարկ տարածքում:
Եկեք մի քիչ ընդմիջենք հատվածներից և, այսպես ասած, թռչնի հայացքից նայենք սկավառակին։ Այստեղ մենք ունենք դատարկ միջնորմ սկավառակի վրա: Եկեք դրա մեջ ստեղծենք ֆայլային համակարգ։ Կարո՞ղ ենք ասել, որ սկավառակի որոշ հատվածներ մնում են չջնջված:
E-e-e - թմբուկի գլորում! Պատասխանը գրեթե միշտ կլինի այո: Իրոք, շատ դեպքերում ֆայլային համակարգի ստեղծումը հանգում է նրան, որ սկավառակի վրա ծառայության տեղեկատվության ընդամենը մի քանի բլոկ է գրվում, իսկ հակառակ դեպքում բաժանման բովանդակությունը չի փոխվում:
Եվ նաև, զուտ էմպիրիկորեն, մենք կարող ենք ենթադրել, որ ֆայլային համակարգը չի կարող միշտ զբաղեցնել իրեն հատկացված ամբողջ տարածքը մինչև վերջին հատվածը: Օրինակ, FAT16 ֆայլային համակարգը 64 կիլոբայթ կլաստերի չափով ակնհայտորեն չի կարող ամբողջությամբ զբաղեցնել 64 կիլոբայթից ոչ բազմապատիկ չափով բաժանումը: Նման հատվածի վերջում պետք է լինի մի քանի հատվածների «պոչ», որն անհասանելի է օգտագործողի տվյալները պահելու համար: Այնուամենայնիվ, այս ենթադրությունը չի կարող հաստատվել փորձնականորեն:
Այսպիսով, ստեգանոգրամի համար հասանելի տարածքը առավելագույնի հասցնելու համար հարկավոր է օգտագործել ֆայլային համակարգ ավելի մեծ կլաստերի չափով: Կարող եք նաև բաժանում ստեղծել, նույնիսկ եթե դա անհրաժեշտ չէ (օրինակ, ֆլեշ կրիչի վրա): Դատարկ հատվածներ ստեղծելու կամ չհատկացված տարածքներ թողնելու կարիք չկա, սա կգրավի շահագրգիռ քաղաքացիների ուշադրությունը:
Օգտակար փորձերի համար
Դուք կարող եք դիպչել կոմունալ ծրագրի աղբյուրի կոդը
Կառուցելու համար ձեզ հարկավոր կլինի Qt տարբերակ 5.0 կամ ավելի բարձր և OpenSSL: Եթե ինչ-որ բան չի աշխատում, գուցե ստիպված լինեք խմբագրել steganodisk.pro ֆայլը:
Դուք կարող եք փոխել կլաստերի չափը 4 ԿԲ-ից մինչև, ասենք, 512 բայթ ( secretfile.h-ում): Միևնույն ժամանակ, ծառայության տեղեկատվության արժեքը կաճի. վերնագիրը և ստուգիչ գումարը զբաղեցնում են ֆիքսված 68 բայթ:
Դուք պետք է գործարկեք կոմունալը, իհարկե, root օգտվողի իրավունքներով և զգուշությամբ: Նախքան նշված ֆայլը կամ սարքը վերագրանցելը հարցեր չեն տրվի:
Վայելեք։
Source: www.habr.com