Ինչպե՞ս անվտանգ գաղտնագրել ֆայլերը Linux-ում Dm-crypt-ով: Linux bootloaders-ն աջակցում է ամբողջական սկավառակի կոդավորումը: Debian սկավառակի գաղտնագրում.

Այս հոդվածում ես ձեզ կասեմ, թե ինչպես ստեղծել թաքնված կրիպտո կոնտեյներ: ստանդարտ միջոցներ Linux OS (LUKS և cryptsetup): LUKS-ի ներկառուցված առանձնահատկությունները (օրինակ՝ արտաքին վերնագրերի օգտագործումը և իրական տվյալների տեղադրումը տվյալ օֆսեթում) թույլ են տալիս օգտվողին մուտք գործել գոյություն ունեցող կոնտեյների ներսում թաքնված տվյալներ, ինչպես նաև հերքել այդպիսի տվյալների առկայությունը:

UPD:Քանի որ այս գրառումը պատրաստ էր մեկ ամիս առաջ, ապա ես չէի էլ կարող պատկերացնել նախագծի նման տարօրինակ և անսպասելի մահը։ Դե, այո, միգուցե այն դեռ այնքան էլ մեռած չէ, տեսնենք... Այնուամենայնիվ, այս տեքստում ես որոշեցի թողնել TrueCrypt-ի բոլոր հղումները այնպես, ինչպես կա:

Ի՞նչ է «հավանական ժխտողականությունը»:

Այս հասկացության շատ երկար և մանրամասն նկարագրությունը կարող եք գտնել Վիքիպեդիայում՝ http://en.wikipedia.org/wiki/Plausible_deniability ։ Կարճ ասած, սա նշանակում է, որ դուք կարող եք ինչ-որ բան ունենալ (կամ կարող էիք ինչ-որ բան անել), որի առկայությունը ոչ ոք չի կարող կասկածել կամ ապացուցել (եթե իհարկե ինքներդ չեք դա խոստովանում): Եվ հետո կարող ես հերքել այս բանի գոյությունը (կամ անելու փաստը), եթե ինչ-որ մեկն ուզում է քեզ մեղադրել, որովհետև (կրկնում եմ) այս փաստն ապացուցելի չէ։ Լավ, օրինակ, եթե երեխան ոտքով խփի իր փոքր եղբորը, իսկ եղբայրը գնար արդարություն փնտրելու ծնողներից, ի՞նչ կլիներ այս դեպքում։

Դե... Ոնց որ ոչինչ չի լինում։ Որովհետև էս ախմախը կհրաժարվի, իսկ ծնողները, ֆորմալ ասած, չեն կարողանա բռնել նրա ձեռքից (որովհետև նախ՝ հիմարորեն վկաներ չկան, և երկրորդ՝ կրտսեր եղբայրը կարող է խաղալ իր կեղտոտ խաղը)։ Այսպիսով, ոչ ոք չի պատժվի։ Դե, թե չէ ամեն հրշեջի համար երկուսին էլ կպատժեն։ Սա ընդամենը ագրեսիայի հակված երեխայի կողմից արժանահավատ ժխտման հնարավորության օգտագործման օրինակ էր: Բայց դուք և ես, իհարկե, սպիտակ ու փափկամազ ենք, և մենք կօգտագործենք թաքնված տարաները բացառապես մեր անձնական տվյալները վատ տղաներից պաշտպանելու համար: Այսպիսով, ճիշտ է: Իհարկե, «ինչն է «լավը» և ինչը «վատը» առանձին հարց է... Այնուամենայնիվ, ավելին:

Իրականացման ընդհանուր գաղափար

Ենթադրենք, որ ցանկանում ենք մի քանի կարևոր տվյալներ պահել կոդավորված ֆայլի ներսում: Ընդհանուր առմամբ, մենք կօգտագործենք կրիպտոպաշտպանության ինչ-որ ծրագիր, որը կկատարի բոլոր կեղտոտ աշխատանքը մեր փոխարեն։ Մենք կարող ենք ցանկանալ կոդավորված ֆայլին վերաբերվել այնպես, ասես դա վիրտուալ սկավառակ է, և դա զգալիորեն կրճատում է հավանական թեկնածուների թիվը: Այնուամենայնիվ, կա մեկ «բայց». Գրեթե բոլոր նման ծրագրերն աշխատում են ֆայլի հետ, ինչպես մեկ կոդավորված տվյալների հետ: Բացատրեմ՝ օգտատերը սովորաբար ունենում է մեկգաղտնաբառը (և միգուցե մի քանի «պահեստային») համար բոլորըտվյալները կոնտեյների ներսում: Սա նշանակում է, որ կա առնվազն մեկ թույլ հղում՝ կոնտեյների գաղտնաբառը: Չեմ ուզում նշել, որ գաղտնաբառը պետք է կրիպտոգրաֆիկորեն ամուր լինի, քանի որ դա ընդհանուր ճշմարտություն է։ Նկատի ունեմ, որ եթե օգտատերը ինչ-ինչ պատճառներով հրաժարվի այդ գաղտնաբառը (օրինակ՝ հարկադրանքի տակ), բոլոր տվյալները կկարդան: Եվ այս փաստն ինձ տխուր և լիովին սխալ է թվում ...

Այնուամենայնիվ, ընդհանուր առմամբ հույս կա. :) Օրինակ, կա նման ծրագիր, որը բավականին խելացի է։ Օգտատերը կարող է մեկ ֆայլում ստեղծել երկու կոնտեյներ. մեկը «կեղծ» է՝ որոշակի թվով «արգելված», բայց համեմատաբար անվտանգ ֆայլերով, իսկ մյուսը՝ իրական, տվյալների հետ, որոնք ոչ մի դեպքում չպետք է բացահայտվեն: Այսպիսով, TrueCrypt-ը խնդրում է երկու տարբեր գաղտնաբառեր, երբ օգտվողը ցանկանում է ստեղծել նման «կրկնակի» կոնտեյներ։ Գործողության ընթացքում օգտատերը մուտքագրում է միայն մեկ գաղտնաբառ «իրական» մասի համար և աշխատում դրա հետ։ Այն դեպքում, երբ արտաքին հանգամանքների ճնշման ներքո օգտատերը ստիպված է լինում բացահայտել բեռնարկղի պարունակությունը երրորդ անձանց, նա պարզապես մուտքագրում է այլ գաղտնաբառ, իսկ TrueCrypt-ը բացում է «կեղծը»: Շեշտում եմ (և սա իսկապես կարևոր է), որ թաքնված մասի առկայությունը ապացուցելու միջոց չկա, եթե հետազոտողը չգիտի համապատասխան գաղտնաբառը։

Եվ հիմա եկեք արագ պարզենք, թե ինչպես է այս անպիտան աշխատանքը ... Իրականում ամեն ինչ շատ պարզ է: Ծրագիրը բեռնարկղային ֆայլը բաժանում է երկու (ընդհանուր առմամբ, անհավասար) մասերի: Առաջին մասը, որը կարող է համեմատաբար փոքր լինել, պարունակում է հատուկ պատրաստված տվյալներ. երկրորդն իրական է. Համապատասխանաբար, ծրագիրը պետք է կարողանա աշխատել երկու տարբեր վերնագրերի (կոնֆիգուրացիաների) հետ երկու տարբեր մասերի համար, ինչպես նաև կարողանա ընտրել, թե որ մասը վերծանել՝ կախված օգտագործողի մուտքագրած գաղտնաբառից: Եվ սա, պետք է ասեմ, ստեղծագործության ամենաաննշան մասը չէ։ Դե, պարզապես այն պատճառով, որ «պաշտոնապես» պետք է տեսանելի լինի միայն մեկ «կեղծ» կոնֆիգուրացիա. եթե կոնտեյները ունի ստանդարտ վերնագիր, այն պետք է լինի միայն «կեղծ» վերնագիր; եթե կոնտեյների պարամետրերը պահվում են առանձին կազմաձևում, ապա այս կազմաձևը պետք է թույլ տա վերծանել միայն «կեղծ» մասը: Իսկ «կեղծ» մասի վերծանումից հետո իրականի առկայության ոչ մի ակնարկ չպետք է լինի։ Նրանք պետք է լինեն բացարձակ անկախ։ Ավելին, երբ բացվում է «կեղծ» մասը, ծրագրաշարը պետք է ցույց տա կրիպտո կոնտեյների ամբողջ հզորությունը, նույնիսկ եթե այս մասի ծավալը շատ ավելի փոքր է։

Ուրեմն ինչ վերաբերում է LUKS-ին:

Դե, այստեղ մենք ունենք լավ նորություններ և… հըմ… էլ ավելի լավ նորություններ:

Լավ նորությունն այն է, որ cryptsetup-ը կարող է գաղտնազերծել և տեղադրել TrueCrypt-ի կողմից ստեղծված ծավալները: Այնուամենայնիվ, միայն կարդացեք, բայց սա անհեթեթություն է: Քանի որ ավելի լավ նորություն կա: Մասնավորապես, մենք կարող ենք ստեղծել «թաքնված» կոնտեյներներ բացառապես օգտագործելով: Ավելին, այս օգտակար ծրագիրը թույլ է տալիս ստեղծել ցանկացած քանակությամբ «թաքնված» մասեր: Բնականաբար, ողջամիտ սահմաններում։ Եվ ահա թե ինչպես կարելի է դա անել.

Բայց մինչ շարունակելը,

ՀԵՌԱՍԵՐ ԳԵՐ ՄԱՐԳԱԼԻՆ ԶԳՈՒՇԱՑՈՒՄ!!!

  • Ստորև նկարագրված ցանկացած բան կարող է հանգեցնել տվյալների անդառնալի կորստի:
  • Ձեր երկրում ուժեղ գաղտնագրության օգտագործումը կարող է արգելված լինել, ուստի ձեզ կարող են բանտարկել ոչ թե իրական տեղեկատվության, այլ պարզապես կրիպտո կոնտեյներ ունենալու համար, որը կգտնվի ձեր պտուտակի վրա:
  • Գաղտնագրությունը կարող է պաշտպանել ձեր տվյալները, բայց չի պաշտպանի ձեզ խոշտանգումներից: Թաքնված կոնտեյները կարող է օգնել պահպանել արժեքավոր տեղեկատվություն, բայց դուք չեք կարող ժխտել դրա առկայությունը դավաճանության կամ դատապարտման դեպքում:
  • Այն տղաները, ովքեր հետաքրքրված են ձեր գաղտնագրված տվյալներով, կարող են այնքան հիմար չլինել, որքան դուք սպասում էիք: Նույնիսկ եթե նրանք չկարողանան ապացուցել տարայի թաքնված մասի առկայությունը, նրանք կարող են ձեզ փակել նույն խցում փորձառու հանցագործների հետ, և մի քանի օրից դուք կհիշեք բոլոր թաքնված տվյալների բոլոր գաղտնաբառերը:
  • Եթե ​​ունեք մտերիմ մարդիկ (ընկերուհի / ընկեր, հարազատներ, ընկերներ), նրանք նույնքան լավ կարող են դառնալ ծանր ճնշման թիրախ: Եվ դա, անշուշտ, կօգնի ձեզ շատ ավելի արագ հիշել ամեն ինչ, ներառյալ այն, ինչ դուք նույնիսկ չգիտեիք:

Այսպիսով, ավելի լավ է երկու անգամ մտածել, թե որքան տեղեկատվություն է ավելի արժեքավոր, քան ձեր և ձեր սիրելիների կյանքը: Եվ կրկնօրինակեք: Ամեն դեպքում:

Դե, man cryptsetup-ը մեզ շատ բան կարող է ասել հետաքրքիր մանրամասներայս օգտակար ծառայության հրամանի տողի ընտրանքների մասին: Դե, օրինակ, եկեք նայենք --header տարբերակին.

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

Մեկ այլ շատ օգտակար տարբերակ է --align-payload , որը թույլ է տալիս իրական տվյալները դիրքավորել ծավալի սկզբի համեմատ որոշակի օֆսեթում.

Եվ սա նույնպես հիանալի է, քանի որ այժմ մենք կարող ենք ազատորեն տեղափոխել մեր տվյալները ծավալի ցանկացած մաս: Դուք հասկացաք, չէ՞:

  1. Մենք նախաստորագրում ենք ծավալը գաղտնագրման համար. մենք ամբողջությամբ վերագրում ենք այն պատահական տվյալներով:
  2. Մենք պատրաստում ենք «պաշտոնական» կոդավորված ծավալ և մի փոքր իջեցնում ենք վարակված վարեզե, ոլորված մուզլա, պրոնօգտակար անվճար ծրագրակազմ, ձայնագրություններ ձեր սիրողական ռոք խմբից, սիրային ֆիլմեր և այլն, ընդհանուր առմամբ, մի բան, որի համար ձեզ կտրվի երկու տարուց ոչ ավելի փորձաշրջան:
  3. Օգտագործելով վերը նշված էզոտերիկ գաղտնաբառերի տեղադրման տարբերակները, մենք ստեղծում ենք թաքնված ծավալ («պաշտոնական») և դրա անվանումը փոխանցում արտաքին լրատվամիջոցներին: Այստեղ դուք կարող եք պահել իսկապես վտանգավոր տեղեկություններ (օրինակ՝ ձեր մանկապարտեզի լուսանկարները կամ աշխարհը գրավելու պլանները):

Իրականում, ժողովուրդ, այսքանը: Ոչ մի կախարդանք: Բնականաբար, դուք չեք կարող լցնել «պաշտոնական» կոդավորված սկավառակը այն պարզ պատճառով, որ դրա տարածքի մի մասը տրվում է թաքնված կոնտեյների: Եվ, ինչպես սկզբում ասացի, կարող եք, եթե ցանկանում եք, նույն տրամաբանությամբ մի քանի թաքնված սկավառակներ ստեղծել:

Այստեղ ... Եվ եթե ձեզ դեռ պետք են մանրամասներ, ապա հատկապես ձեզ համար.

Քայլերթ

Ուշադրություն.

Հետևյալ հրամանները կկործանեն ձեր տվյալները, եթե դրանք կատարվեն առանց ուղեղը միացնելու: Կորցրած տեղեկատվությունը հնարավոր չէ վերականգնել, քանի որ dd-ի նման կոմունալ ծառայություններն աշխատում են ցածր մակարդակով (այսինքն՝ ֆայլային համակարգի մակարդակից ցածր): Հետևաբար, հնարավոր չի լինի հետաձգել փոփոխությունները կամ չեղարկել դրանց ազդեցությունը, նույնիսկ եթե ընդհատեք գործարկումից անմիջապես հետո:

Մի խոսքով, մի արեք դա, քանի դեռ չեք կարող իմաստալից բացատրություն մտածել, թե ինչպես է յուրաքանչյուր քայլ առնչվում ձեր նպատակներին: Եվ կրկնօրինակեք: Հիմա.

Այսպիսով, ենթադրենք, որ մենք ունենք մի քանի միջնորմ ունեցող սարք: Թող դա լինի, օրինակ, /dev/sdb: Եվ թող /dev/sdb1-ը լինի համեմատաբար փոքր (8 ԳԲ) բաժանում, որը նվիրված է գաղտնագրմանը: Մենք այն կբաժանենք 5-ի 3-ի, որտեղ 5 ԳԲ մասը կլինի «պաշտոնական», իսկ 3 ԳԲ մասը՝ թաքնված։ Ենթադրենք նաև, որ կոդավորված սկավառակի բանալին կպահենք /etc/keys-ում, իսկ թաքնված կոնտեյների վերնագիրը, համապատասխանաբար, արտաքին USB կրիչի վրա, որը կտեղադրենք /media/user/ExtUSBStick-ում: Ենթադրում եմ, որ դուք արդեն գիտեք, թե ինչ թույլտվություններ պետք է սահմանել բանալիների պահեստում, ինչպես կարգավորել encfs/ecryptfs-ը, որպեսզի ապահով կերպով պահվեն գաղտնի տվյալները անապահով սարքերում, ինչպես նաև, որ իմաստ ունի պատճենել իրական գաղտնի բանալիները և դրանք պահել մի քանի աշխարհագրորեն առանձնացված պահարաններում:

Դե, լավ, ես կապում եմ տրտնջալը և անցնում հարցի էությանը:

    Սարքի սկզբնավորում /dev/sdb1:

    Dd if=/dev/urandom of=/dev/sdb1 bs=16M

    Մենք բանալին ենք պատրաստում կոդավորված ծավալի համար: 512 բիթ (64 բայթ) մեր նպատակների համար տանիքի միջոցով.

    Dd if=/dev/urandom bs=64 count=1 >/etc/keys/secret.key 2>/dev/null

    Գաղտնագրեք ձայնը նորաստեղծ ստեղնով.

    Cryptsetup luksFormat /dev/sdb1 /etc/keys/secret.key

    Բացեք գաղտնագրված սարքը և կազմաձևեք քարտեզագրումը գաղտնի տվյալների մեջ.

    Cryptsetup luksOpen --key-file /etc/keys/secret.key \ /dev/sdb1 secretdata

    Ստեղծեք կոդավորված ծավալով ֆայլային համակարգ(օրինակ՝ btrfs):

    Mkfs.btrfs -L SecretData /dev/mapper/secretdata

    ... և տեղադրեք այն.

    Տեղադրեք /dev/mapper/secretdata /var/secretdata/

    Նկատի ունենալով 5 գիգերի սահմանաչափը՝ սահմանեք ենթածավալների քվոտան.

    Btrfs քվոտան միացնում է /var/secretdata/

    Քանի որ btrfs քվոտաները վերաբերում են միայն ենթածավալներին, եկեք ստեղծենք նման բան.

    brfs ենթահատորը ստեղծել /var/secretdata/workingvolume

    ... և կիրառեք նշված քվոտան դրա վրա (նկատի ունեցեք, որ btrfs ենթահատորները կարող են տեղադրվել որպես սովորական ֆայլային համակարգեր, այնպես որ կարող եք ավելի հարմար համարել այս կոնկրետ ենթածավալը միացնել ամբողջ fs-ի փոխարեն ավելի ուշ):

    btrfs qgroup limit 5G /var/secretdata/working volume

    Մենք այն լրացնում ենք որոշ տվյալներով.

    debootstrap --variant=կառուցված փորձարկում /var/secretdata/workingvolume

    Այսքանը, այժմ կարող եք մոռանալ այս հատվածի մասին.

    Միացնել /var/secretdata cryptsetup luksՓակել գաղտնի տվյալները

    Հիմա եկեք ստեղծենք «ձուկ» վերնագրի համար և պատահական աղբ լցնենք դրա մեջ.

    Dd if=/dev/urandom of=/media/user/ExtUSBStick/hidden.head bs=4M count=1

    Եվ հիմա գալիս է հենց այն պահը, երբ սկսվում է իրական կախարդանքը: (Ի՞նչ: Ես ասացի, որ կախարդություն չկա՞ր: Այսպիսով, ես ստեցի:) Մենք օգտագործում ենք նույն գաղտնի բանալին, սակայն, ոչ թե ամբողջությամբ, այլ միայն կեսը (32 բայթ օֆսեթից): Այնուամենայնիվ, մնացած 256 պատահական բիթերը բավականին ունակ են լավ բանալի ստեղծելու: Հետո մենք կառանձնացնենք վերնագիրը և կդնենք ֆլեշ կրիչի վրա։ Ի վերջո, մենք ասում ենք cryptsetup «y»-ին, որ մենք ցանկանում ենք փոխհատուցել մեր թաքնված կոնտեյները 5 ԳԲ-ով (այսինքն՝ 10485760 512 բայթ բլոկներով) ծավալի սկզբից:

    Cryptsetup --keyfile-offset 32 ​​-- վերնագիր /media/user/ExtUSBStick/hidden.head \ --align-payload 10485760 luksFormat /dev/sdb1 /etc/keys/secret.key

    Այո, դա այդքան պարզ է: Հիմա եկեք բացենք նոր կոդավորված սարք.

    Cryptsetup luksOpen --key-file /etc/keys/secret.key --keyfile-offset 32\ --header /media/user/ExtUSBStick/hidden.head /dev/sdb1 realsecretdata

    Եկեք գլորենք ցանկացած ֆ, որը ցանկանում ենք.

    Mkfs.btrfs /dev/mapper/realsecretdata

օգտակար հղումներ

Նրանց համար, ովքեր ցանկանում են մի փոքր ավելին իմանալ, ահա տեղեկատվության մի քանի լրացուցիչ աղբյուրներ.

  • սկավառակի կոդավորումը, ընդհանուր տեղեկություններ սկավառակի կոդավորման մասին՝ https://wiki.archlinux.org/index.php/Disk_encryption
  • Մերժված կոդավորումը, հայեցակարգը որոշ չափով ավելի նեղ է, քան «հավանական ժխտողականությունը»՝ նկատի ունենալով միայն ծածկագրության ոլորտը՝ https://en.wikipedia.org/wiki/Deniable_encryption
  • TrueCrypt

Սկավառակ (a la TrueCrypt): Ես գիտեմ, որ աշխատանք է տարվել GRUB2-ին գաղտնագրման աջակցություն ավելացնելու համար, բայց այն դեռ պատրաստ չէ: Որևէ այլ տարբերակ:

(Նկատի ունեցեք, որ ես իսկապես նկատի ունեմ սկավառակի ամբողջական ծածկագրումն այստեղ, ներառյալ /boot)

Պատասխանների մեծ մասը նկարագրում է մի կարգավորում, որտեղ /boot-ը գաղտնագրված չէ, և նրանցից ոմանք փորձում են բացատրել, թե ինչու չգաղտնագրված /boot-ը պետք է լավ լինի:

Առանց քննարկման մեջ մտնելու, թե ինչու ես իսկապես պետք է /boot-ը գաղտնագրվի, ահա մի հոդված, որը նկարագրում է այն, ինչ ինձ անհրաժեշտ է՝ հիմնված GRUB2-ի փոփոխված տարբերակի վրա.

  • http://xercestech.com/full-system-encryption-for-linux.geek

Խնդիրն այն է, որ այս փոփոխությունները կարծես թե չեն աջակցվում ներկայիս GRUB2 կոդերի բազայում (կամ գուցե ինչ-որ բան բաց եմ թողնում):

8 լուծումներ հավաքում են վեբ ձևեր «Linux bootloaders-ի համար, որոնք աջակցում են սկավառակի ամբողջական կոդավորումը»:

ես կարծում եմ, որ Ընթացիկ տարբերակը GRUB2-ը չի աջակցում LUKS միջնորմների բեռնումն ու վերծանումն ինքնին (այն պարունակում է որոշ ծածկագրեր, բայց կարծում եմ, որ դրանք օգտագործվում են միայն գաղտնաբառերն աջակցելու համար): Ես չեմ կարող ստուգել փորձարարական զարգացման մասնաճյուղը, բայց GRUB-ի էջում կան որոշ ակնարկներ այն մասին, որ նախատեսվում է իրականացնել որոշակի աշխատանք, որը դուք ցանկանում եք կատարել:

Թարմացում (2015) : Վերջին տարբերակը GRUB2 (2.00) արդեն պարունակում է ծածկագիր՝ LUKS և GELI ծածկագրված միջնորմներ մուտք գործելու համար: (Xercestch.com հղումը, որը տրամադրել է OP-ը, նշում է դրա առաջին ուղղումները, բայց դրանք այժմ ներառված են վերջին տարբերակում):

Այնուամենայնիվ, եթե դուք փորձում եք գաղտնագրել ամբողջ սկավառակը անվտանգության նկատառումներից ելնելով, խնդրում ենք նկատի ունենալ, որ չգաղտնագրված բեռնիչը (օրինակ՝ TrueCrypt, BitLocker կամ փոփոխված GRUB) ավելի շատ պաշտպանություն չի ապահովում, քան չգաղտնագրված /boot միջնորմը (ինչպես նշված է SP-ի կողմից մեկնաբանություն վերևում): Յուրաքանչյուր ոք, ով ֆիզիկական հասանելիություն ունի համակարգչին, նույնքան հեշտությամբ կարող է այն փոխարինել հատուկ տարբերակով: Դա նույնիսկ նշված է xercestech.com հոդվածում, որը դուք կապել եք.

Հասկանալի լինելու համար, սա ոչ մի կերպ չի դարձնում ձեր համակարգը ավելի քիչ խոցելի անցանց հարձակման համար, եթե հարձակվողը փոխարիներ ձեր bootloader-ը իր սեփականով կամ վերահղեց բեռնման գործընթացը դեպի իր սեփականը: սեփական ծածկագիրը, ձեր համակարգը դեռ կարող է վտանգված լինել:

Նկատի ունեցեք, որ բոլոր ամբողջական սկավառակի գաղտնագրման ծրագրային արտադրանքներն ունեն այս թույլ կողմը, անկախ նրանից՝ նրանք օգտագործում են չգաղտնագրված բեռնիչ կամ չգաղտնագրված boot/preboot միջնորմ: Նույնիսկ այն ապրանքները, որոնք աջակցում են TPM (Trusted Platform Module) չիպերին, ինչպիսին է BitLocker-ը, կարող են տեղակայվել առանց սարքաշարը փոխելու:

Լավագույն մոտեցումը կլինի.

  1. ապակոդավորումը BIOS մակարդակում (in մայր տախտակկամ սկավառակի ադապտեր կամ արտաքին սարքավորում [խելացի քարտ]՝ TPM չիպով կամ առանց դրա), կամ
  2. տեղափոխեք PBA (նախաբեռնման թույլտվություն) թույլտվության կոդը (այս դեպքում՝ /boot բաժինը) շարժական սարքի վրա (օրինակ՝ խելացի քարտի կամ USB կրիչի):

Երկրորդ ճանապարհով դա անելու համար կարող եք ստուգել Linux Full նախագիծը Սկավառակի գաղտնագրում(LFDE) այստեղ՝ http://lfde.org/, որն ապահովում է հետտեղադրման սկրիպտ՝ /boot միջնորմը տեղափոխելու համար։ արտաքին USB կրիչբանալին գաղտնագրելով GPG-ով և պահելով այն նաև USB-ում: Այսպիսով, բեռնման ուղու թույլ մասը (չկոդավորված /boot միջնորմը) միշտ ձեզ հետ է (դուք միակը կլինեք ֆիզիկական մուտքկոդի և բանալին վերծանելու համար): ( ՆշումԱյս կայքը կորել է, և հեղինակի բլոգը նույնպես անհետացել է, սակայն դուք կարող եք գտնել հին ֆայլերը https://github.com/mv-code/lfde կայքում՝ պարզապես նշելով, որ վերջին զարգացումը կատարվել է 6 տարի առաջ): Որպես ավելի հեշտ այլընտրանք, դուք կարող եք տեղադրել չգաղտնագրված բեռնախցիկ USB կրիչի վրա, երբ տեղադրեք ՕՀ-ը:

Հարգանքներով՝ Մ.Վ.

Ձեր առաջին RAMdisk-ը և /boot պանակը դարձրեք չգաղտնագրված:

Սա կկանչի «նվազագույն» միջուկ՝ վարորդներով և աջակցությամբ՝ անցնելու «իրական» արմատային ֆայլային համակարգին, որը գաղտնագրված է:

Նախքան «դա կոտրվածք է» ասելը, հիշեք. Linux-ի բաշխումների մեծ մասը (եթե ոչ բոլորը) այսօր լռելյայնորեն բեռնված են: Սա բացահայտորեն թույլ է տալիս ձեր համակարգին բեռնել և բեռնել արմատային FS-ը՝ օգտագործելով մոդուլներ, որոնք պետք է բեռնվեն ֆայլային համակարգից: (Մի տեսակ հավի և ձվի խնդիր): Օրինակ, եթե ձեր արմատային ֆայլային համակարգը ապարատային RAID ծավալով էր, և դուք պետք է բեռնեիք դրա դրայվերը, նախքան արմատային FS-ը միացնեիք:

Ես նայեցի քո տեղադրած հղումը, սակայն boot partitionոչ, կոշտ սկավառակը դեռևս ունի չգաղտնագրված բեռնիչ, որը կարող է մուտք գործել և վնասվել վնասակար հարձակման հետևանքով: Ես փնտրում էի նմանատիպ կարգավորում, որը չունենա կոշտ սկավառակի վրա չգաղտնագրված տվյալներ, բայց մինչ այժմ ես միայն գտել եմ բեռնախցիկը շարժական սկավառակից գործարկելը:

Կարծում եմ, որ ձեզ անհրաժեշտ ամենից շատ հրահանգ է այն մասին, թե ինչպես տեղադրել OS գաղտնագրված HD-ով առաջին հերթին:

Ubuntu-ն ունի գեղեցիկ էջ՝ հրահանգներով, թե ինչպես ստեղծել կոդավորված միջնորմներ, LMVP, թղթապանակներ և այլն, պարզապես ձեր բաշխման ձեր տարբերակը...

Ոչ, ես այդպես չեմ կարծում:

Իսկապե՞ս պետք է գաղտնագրել/վերբեռնել: Ես կասկածում եմ, որ ոչ: Մնացած ֆայլային համակարգը կարող է գաղտնագրվել նորմալով ծրագրային ապահովում Linux-ը, որը գտնվում է initramfs-ում /boot-ում և համապատասխանաբար հուշում է օգտվողին:

Դուք կարծես թե խնդրում եք մի բան, որը հնարավոր չէ անել և համեմատում եք դրա հետ Windows լուծում, որը թաքցնում է իրականացումը ձեզանից,բայց իրականում անում է նույն բանը, ինչ անում է Linux-ը:

Ամենամոտ լուծումը, որը ես կարող եմ մտածել, օգտագործելն է HDD, որն իրականացնում է գաղտնաբառի անվտանգություն և գաղտնագրում։ Մի քանի Thinkpad նոութբուքերօգտագործեք այս ապարատային լուծումները:

Պատասխանը՝ հոդվածում։ «Դա այժմ հնարավոր է հաջորդ սերնդի GRUB2 բեռնիչի ընդլայնումներով, որոնք կարկատվել են, որպեսզի աջակցեն ավելին», և «մենք ցանկանում ենք տեղադրել luks grub2-ով միացված նոր պատկեր ավելի ուշ», և «Այժմ մենք կկազմենք GRUB2 աղբյուրը LUKS-ի հետ: աջակցություն. Կարծես կա ուղղում կամ ընդլայնում, որը դուք պետք է ստանաք և միացնեք GRUB2-ի կամ GRUB2-ի պատառաքաղային աղբյուրի միջոցով:

Grub2 տարբերակը 2.02~beta3 կարող է շատ բան անել, ինչը չի կարող անել Grub2 տարբերակը 2.02~beta2, հաստատված իմ կողմից.

  1. Բեռնում Super Grub 2 սկավառակի միջոցով
  2. Մուտքագրեք «c» հրամանի տող գնալու համար
  3. Մուտքագրեք իմ ուզած կոդավորված բաժանումը տեղադրելու հրամանները
    • insmod lux
    • cryptomount (hd0, #) // որտեղ #-ը ներկայացնում է կոդավորված բաժանումը
  4. Մուտքագրեք հիմնական արտահայտությունըև մուտքագրեք որոշ հրամաններ
    • multiboot (crypto0) /grub/i386-pc/core.img
    • կոշիկ

Սա կգործարկի ևս մեկ Grub2, որը գտնվում է գաղտնագրված միջնորմի ներսում, այստեղ չկա չար խելագար հարձակում... Ես բեռնում եմ CD-ից (միայն կարդալու համար), այնուհետև տեղադրում եմ գաղտնագրված բաժանումը (ոչ անցաբառ, որևէ բան), այնուհետև բեռնում եմ ներսից: գաղտնագրված բաժանումը և Grub2-ի բեռնումը սեփական մենյուով և այլն:

Զգուշացում․ Grub2 տարբերակը 2.02~beta2 չի կարող անել նույնը, քանի որ այն ունի որոշ սխալներ (որոնք կարծես թե շտկվել են Grub2 տարբերակ 2.02~beta3-ում)՝ կապված cryptomount հրամանի հետ...

beta2 սխալները, որոնց մասին ես խոսում եմ, հետևյալն են.

  1. Այն իրականում չի տեղադրում կոդավորված բաժանումը, ուստի թույլ չի տալիս մուտք գործել (crypto0)/*
  2. Եթե ​​կա մեկից ավելի գաղտնագրված բաժին, ապա cryptomount -a-ի օգտագործումը պահանջում է միայն մեկ անցաբառ
  3. Մեկ անգամ cryptomount-ը սկսելուց հետո այն նորից գործարկվում է, ոչինչ չի անում

բետա 3-ում:

  1. Այն իրականում մոնտաժում է կոդավորված բաժանումը և թույլ է տալիս մուտք գործել ֆայլեր (crypto0)/* կամ (crypto1)/* և այլն, եթե մեկից ավելի մոնտաժված են միաժամանակ:
  2. Այն պահանջում է յուրաքանչյուր անցաբառ (մեկը կոդավորված հատվածի համար)
  3. Սա թույլ է տալիս գործարկել այն այնքան անգամ, որքան ցանկանում եք, կարող եք տեղադրել մեկը, հետո մյուսը և այլն:

Կողմնակի նշում. ես չեմ հասկացել, թե ինչպես կարելի է դրանք ապամոնտաժել, բացի մեկ ուրիշը կամ մեկը վերագործարկելուց կամ բեռնելուց: boot loader grub2/այլ և այլն:

Հուսով եմ, որ սա կօգնի պարզել ամեն ինչ, և հուսով եմ, որ Grub2-ի 2.02~beta3 տարբերակը կինտեգրվի LiveCD-ին, որպեսզի մենք կարողանանք տեղադրել այն առանց ինքներս կազմելու:

PD. Super Grub 2 կրիչով ես չեմ տեսնում Grub2 տարբերակը 2.02~beta3 տեղադրելու MBR/boot միջնորմի վրա և այլն:

Այս հոդվածում ես կփորձեմ համեմատել տարբեր գաղտնագրման համակարգերի աշխատանքը Linux-ի ներքո: Տեսականորեն, իհարկե, հայտնի է, թե որ համակարգն է ավելի արդյունավետ, և փորձ է արվում հաշվարկել կատարողականը տարբեր համակարգերէին (). Truecrypt-ը նույնիսկ պարունակում է ներկառուցված հենանիշ (որը, այնուամենայնիվ, ցույց է տալիս օպերատիվ հիշողության աշխատանքը, այն կարող է օգտագործվել միայն գաղտնագրման տարբեր ալգորիթմների արագությունը գնահատելու համար): Ես կանեմ այլ բան. ես կչափեմ տարբեր միջոցներով գաղտնագրված ֆայլային համակարգի արագությունը որպես տոկոս՝ համեմատած սովորական չգաղտնագրված ֆայլային համակարգի հետ:


Մենք կգաղտնագրենք առանձին բաժին առանձին HDD-ի վրա, որը չի պարունակում արմատային ֆայլային համակարգ յուրաքանչյուր կոնկրետ դեպքում լռելյայն օգտագործվող ալգորիթմով: Որպես սովորական օգտատեր՝ ես չեմ հասկանում գաղտնագրման ստանդարտների նրբությունները (օրինակ՝ ինչպես է RIPEMD-160 հեշինգը տարբերվում Whirpool-ից, այս ռեժիմներից որն է ավելի արագ, որն է նպաստում ավելի բարձր անվտանգությանը), ուստի մենք պարզապես հիմնվում ենք փաստի վրա։ որ յուրաքանչյուրի արտադրողները ծրագրային արտադրանքընտրեց բավականաչափ կրիպտո-դիմացկուն լռելյայն պարամետրեր: Գուցե սա ամբողջովին ճիշտ չէ, քանի որ տարբեր գաղտնագրման ալգորիթմների կատարումը նույնը չէ: Ցանկության դեպքում, իհարկե, կարող եք փոխել գաղտնագրման տեսակը, բայց ես վստահ չեմ, որ բոլոր փորձարկված արտադրանքներում կա ալգորիթմների բացարձակապես նույնական շարք: Մենք փորձարկելու ենք.

3) eCryptfs-ը լռելյայն համակարգ է, որն առաջարկվում է Ubuntu-ի օգտատերերին տնային դիրեկտորիաների գաղտնագրման համար, այդ իսկ պատճառով այն ներառված է այս թեստում: Աշխատում է գոյություն ունեցող ֆայլային համակարգի վերևում: Կոդավորում է յուրաքանչյուր ֆայլ առանձին, այնպես որ բոլորը կարող են տեսնել իրավունքները, փոփոխման ամսաթվերը, գաղտնագրված ֆայլերի քանակը. լռելյայնորեն, ֆայլերի անունները նույնպես տեսանելի են, թեև կա դրանք գաղտնագրելու տարբերակ: Երբևէ եղած ամենաքիչ ֆունկցիոնալ գործիքը:

4) EncFS - eCryptfs-ի մոտավոր անալոգ, բայց օգտագործում է FUSE:

Այսպիսով, թեստերի համար բավականին առաջադեմ տարիքի առանձին մեքենա է հատկացվել հետևյալ կազմաձևով. CPU - Intel Celeron 2000 ՄՀց, RAM - 512 Մբ DDR PC2700, համակարգի HDD- WD Caviar SE 5400 RPM 80Gb, փորձնական HDD - WD Caviar SE 7200 RPM 80Gb:
OS - Ubuntu 12.04 LTS, բոլոր ծրագրաշարի տարբերակները համապատասխան են այս ՕՀ-ի պահոցներին այս գրելու պահին (Truecrypt 7.1a-linux-x86-ը պահեստներից չէ):

Մենք կփորձարկենք լռելյայն ext4 ֆայլային համակարգը բաշխումների մեծ մասի համար: Արդյունավետության թեստավորման համար մենք կօգտագործենք iozone3 օգտակար գործիքը և «ծնկների վրա» գրված shell script՝ թեստերի տոկոսային տարբերությունը չափելու համար:

Հաշվիչ սցենար. Օրենսգրքի մաքրությանը հատուկ ուշադրություն չի դարձվել, գրելու միակ չափանիշը ճիշտ արդյունքի առկայությունն էր։

#!/bin/sh gendifffile () ( #ընթացակարգը ստեղծում է ֆայլ, որը հարմար է վերլուծության համար: Նախ, այն տողերը, որոնք հնարավոր չէ վերլուծել, կրճատվում են, երկրորդը, յուրաքանչյուր տողում առաջին երկու թվերը կրճատվում են՝ նշելով #ֆայլի չափը և գրառումը: չափը, համապատասխանաբար; երրորդ, ամբողջ ֆայլը ելքային է տող առ տող - #մեկ փորձարկման արդյունք յուրաքանչյուր տողում cat $1 | մինչ կարդում ենք LINE ; արձագանքել $LINE| grep "^[[:space:]]*[[:digit:] ]" | awk "(համար (i=3;i<=NF;i++) {print $i}}" done > > $2 ) getline () ( #procedure outputs $2 տող թիվ $1 ֆայլի գլուխ -n $2 «$1» | tail -n 1 ) համեմատել () ( #procedure $1 և $2 ֆայլերը տող առ տող համեմատում է՝ հաշվարկելով յուրաքանչյուրի տոկոսային տարբերությունը զույգ թեստեր #այնուհետև հաշվարկում է միջին թվաբանականը, քանի՞ տոկոսով է ավելի արագ կամ դանդաղ #ֆայլը պարունակում է թեստերի առաջին խումբը, երկրորդ խումբը պարունակող ֆայլը P=0 MAX=0 L1=`cat "$1" | wc -l` # թեստերի քանակը ֆայլում L2=`cat «$2» | wc -l` եթե [ $L1 -ne $L2 ]; ապա #եթե ֆայլերը պարունակում են տարբեր թվով թեստեր, ապա մենք չենք համեմատի դրանք echo error վերադարձ fi ՔԱՅԼ=$(($L1*5/100)) J=0 I-ի համար «հաջորդական 1 $L1»-ում; արեք J=$(($J+1)) եթե [ $J -eq $STEP ]; ապա J =0 արձագանք «$((100*$I/$ L1))% ավարտված է ($I-ը $L1-ից)" fi A=`getline "$1" $I` B=`getline "$2" $I` եթե [ ` echo $A \> $B|bc -l` - eq 1 ], ապա D=`echo "100-($B*100/$A)"|bc -l` եթե [ `echo $D \> $MAX | bc -l` -eq "1" ]; ապա MAX=$D քնել 5 fi այլ D=`echo "100-($A*100/$B)"|bc -l` եթե [ `echo $D \ > $MAX| bc -l` -eq «1» ]; the n MAX=$D sleep 5 fi D="-$D" #եթե արժեքը ունի «-» նշան, այս թեստն ավելի արագ էր #երկրորդ ֆայլում, քան առաջինում fi P=`echo "$P+$D" «| bc -l`կատարված P=`echo $P/$L1| bc -l` #հաշվարկել թվաբանական միջին արձագանքը PERCENT=$P MAX_PERCENT=$MAX ) genaverage () ( #վերլուծության համար պատրաստված ֆայլի ստեղծման կարգը, որի յուրաքանչյուր տող բոլոր հաշվետվության համապատասխան տողերի #թվաբանական միջինն է ֆայլեր, որոնք գտնվում են վերլուծված գրացուցակում AVG=` mktemp` F=`ls "$1"|wc -l` #նշված գրացուցակում հաշվետվություններով ֆայլերի թիվը #պայմանով, որ միայն այդպիսի ֆայլեր են պահվում այնտեղ և ուրիշ ոչինչ #չենք ստուգելու այս ենթադրության ճիշտությունը, եթե [ ! -d " $1" -o $F -lt 2 ], ապա echo echo >/dev/stderr #այս ընթացակարգում, մենք բոլոր հաղորդագրությունները դուրս կբերենք stderr, քանի որ #stdout-ը փոխարինվում է մեկ այլով: պրոցեդուրա rm -f $AVG ելք fi TMP=` mktemp` գտնել «$1» -տիպ f| ՖԻԼԸ կարդալիս, անել # յուրաքանչյուր իոզոնի հաշվետվության ֆայլի համար տվյալ գրացուցակում I=`mktemp` #gendifffile «$FILE» «$I " #names-ը գրում է բոլոր նման ֆայլերը "TMP"-ում տող առ տող echo "$I">>$TMP արել L=`cat \`getline "$TMP" 1\`|w c -l` կատու «$TMP»| կարդալիս LINE; անել #a little checking-ը լավ է L1=`cat "$LINE"| wc -l` #do բոլոր ֆայլերը պարունակում են նույն թվով թեստեր, եթե [ $L -ne $L1 ]; ապա echo error >/dev/stderr ելք fi արված STEP=$(($L*5/100)) J=0 համար I-ի համար `seq 1 $L`; անել J=$(($J+1)) եթե [ $J -eq $STEP ]; ապա J=0 արձագանք «$((100*$I/$L))% կատարված ($I-ը $L-ից)» >/dev/stderr fi SUMFILE=`mktemp` #այս կերպ ես ստանում եմ SUM փոփոխականի արժեքը ներդիր հանգույցից SUM=0 cat «$TMP»| կարդալիս LINE; անել SUM=$((`getline "$LINE" $I`+$SUM)) արձագանքել $SUM > "$SUMFILE" արել էխո `tail -n 1 "$SUMFILE"`/$F|bc -l >> $ AVG #ստացե՛ք թվաբանական միջինը #և գրե՛ք այն AVG ֆայլի համապատասխան տեղում rm -f "$SUMFILE" done cat "$TMP"| կարդալիս LINE; անել #ջնջել ժամանակավոր ֆայլերը rm -f «$LINE» կատարված rm -f «$TMP» echo $AVG ) printf %b «\\033)