Защита на личните данни с EncFS

Неприкосновеността на личните данни е нещо толкова подразбиращо се в днешния свят, толкова близко до ума, че все по-често хората започват да забравят какво означава тази неприкосновеност. Все по-често чуваме “ами нека ме наблюдават, аз нищо лошо не правя” или “да ми вземат данните, аз нямам тайни”. Все повече хора, водени от неразбиране или от някакъв особен страх от системата, с готовност предоставят данните си, като дори се надяват това предоставяне, тази излишна откритост да е гаранция за тях пред властите, че не вършат нищо нередно. “Ето, вижте ме, аз нищо лошо не правя! Ако правех, щях да се крия, нали? Е, аз не се крия, следователно съм чист…” Много хора, когато бъдат помолени от системния администратор да въведат паролата си, вместо това те с готовност му я издиктуват. “Аз бавно пиша, напиши я ти – тя е лесна, от 1 до 5”. Или “Паролата ми е 123sex, исках по-лесна, ама трябвало и букви, и цифри, затова е толкова неудобна”. Ужас и безумие…
Тази заблуда е така умело насадена в обществото и е достатъчно гъвкава, тъй че както позволява прекаляване с властта, благодарение на доброволното преотстъпване на лични данни и допускане в личното пространство от страна на самите граждани, така и в същото време може да бъде пропагандирана в медиите личната свобода и отговорност на всеки гражданин. Какво се получава – хем сме свободни, имаме отговорности, имаме личен живот и лични данни, които по подразбиране не са за чужди очи, хем ако защитаваме личното си пространство, значи “има нещо” – иначе защо бихме крили данните?
Това звучи нормално на доста хора, но всъщност е дълбоко извратено. Доста хора го приемат, сигурно защото просто нямат много данни в Интернет – понеже най-често става дума за защита и предоставяне на лични електронни данни. Те хората нямат с какво сирене да си купят, та камо ли да вземат да се тревожат за свободата и отговорността в Интернет.
И все пак сравнително ограниченото ползване на Интернет у нас не може да е оправдание да не защитавате електронните си данни. Представете си, че някой ви каже “защо не ми даваш ключ от апартамента си, да не би да криеш нещо в него?” или “защо отиваш сам в тоалетната, вършиш нещо нередно сигурно?”. Или пък си представете, че се приеме за нещо нормално да казвате на всеки pin-кода на дебитната си карта. Неприятно, нали? Не вършите нищо нередно, нямате откраднати телевизори вкъщи и откраднати пари в картата си, но все пак не раздавате ключове и кодове на всеки, който се усъмни, нали?

Как да защитим данните на компютъра си?
Първо – инсталирайте си GNU/Linux! Няма никакво оправдание да не го правите – всички ехидни забележки на уиндоус-феновете от типа на “Линукс е мно-ого назад още”, “трудно е с Линукс, за разлика от уиндоус, където всичко е лесно” и други подобни просто вече не вървят! За GNU/Linux, *BSD и другите подобни свободни системи има толкова много и качествен софтуер вече, толкова бързо се развива той и толкова голяма част от него е преведен на български (при това много добре), че наистина ви бяга лесното оправдание. Дори измъкването с “навика” и с трудното “свикване” с новата среда не е актуално – има такива дистрибуции, които са ориентирани изцяло към потребителя на графична среда и се инсталират почти автоматично. Дори в общия случай разпознават хардуера по-добре от уиндоуса ви и нямат нужда от допълнителни приставки от сайтовете на производителите. Вземете си Ubuntu, Knoppix или българския Tilix и престанете да се оправдавате с несъществуващи трудности! Уиндоус-“специалистите” ви лъжат – наистина да се работи с GNU/Linux е лесно, удобно, приятно и сигурно.
След като вече използвате правилния вид софтуер, можете да помислите по-мащабно за защитаване на данните си. Практически единственият начин е да използвате шифриране на данните. Терминът на английски е ‘encryption” и на български често се среща транскрибиран като “криптиране”. Без да съм специалист в областта (нека някой такъв ме поправи, ако правя грешка в момента;), смятам по-правилно на български да се казва “шифриране”. Думата “криптиране” идва най-общо от “скриване”, а когато говорим за “encryption”, имаме предвид такъв вид скриване на информацията, при който се използва ключ, шифър. Данните не са просто трудни за откриване, те имат нужда от уникален шифър, за да бъдат достъпени. Затова ще използваме думата “шифриране” за превод на английския термин “encryption”. (Още веднъж – ако някой специалист по език или по информатика има различно обяснение, нека го сподели).

Как най-удобно се шифрират данните?
Ще говорим с примери. Най-често и най-лесно ще шифрирате данните си по три начина.

Първият начин е да шифрирате всеки отделен файл с GnuPG (свободният аналог на програмата PGP и имплементация на стандарта OpenPGP), най-често през някой от графичните инструменти за работа с него. Неудобството на този метод е, че всеки отделен файл трябва да го разшифрирате преди употреба. И съответно трябва да го запишете другаде нешифриран, за да могат програмите ви да работят с него. Често остава винаги притеснението “изтрих ли разшифрирания файл с паролите ми, като тръгвах от вкъщи?”. Работата с така шифрираните данни не е прозрачна за програмите ви. Трябва да се грижите допълнително за сигурността на разшифрираните данни. Макар да има някои програми, които сами се грижат да изтриват временните разшифрирани данни, това е компромисно решение.
Шифрирането на отделни файлове е полезно и удобно в случаите, когато искате да направите архив и ще достъпвате данните си рядко. Тогава леко затрудненото им използване се превръща в предимство за сигурността им.

Вторият начин е да шифрирате цяло устройство с DM-Crypt. Така достъпвате данните си като отделно устройство, което може да е логическо и да представлява физически само един файл, но може и да е отделен дял на диска или отделен диск. Удобството е по-голямата прозрачност за програмите – веднъж разшифрирано, устройството може да се използва от всяка програма в системата ви все едно е най-нормално друго устройство за съхранение на данни.
Неудобството на този метод е, че се налага да пренастроите Linux-ядрото си за работа с него. Ако поддръжката на RAID (CONFIG_MD), Device mapper (CONFIG_BLK_DEV_MD), Crypt target (CONFIG_DM_CRYPT), AES (CONFIG_CRYPTO_AES) и Loopback device (CONFIG_BLK_DEV_LOOP) не е включена, няма да можете да използвате DM-Crypt. В повечето съвременни дистрибуции ядрата Линукс се пакетират с включени почти всички възможни настройки, така че много вероятно е всичко да е въпрос само на включване на съответните модули на ядрото.

# modprobe dm-crypt
Тази команда би трябвало да зареди всичко нужно, стига то да е било пакетирано в модулите. Ако нямате някои от нужните модули, ще трябва да пренастроите и прекомпилирате ядрото си, като включите описаните по-горе настройки.

След това ви трябват програмите cryptsetup и PAM-библиотеката libpam-mount. Възможно е вече да ги имате на системата си, инсталирането им е лесно и е описано в сайтовете им. Ако сте с базирана на Дебиан дистрибуция, командата ‘apt-get install cryptsetup libpam-mount’ ще ги инсталира. С cryptsetup създавате шифрираното устройство, а с libpam-mount можете така да настроите системата си, че потребителското ви име и парола да отключва и монтира въпросното устройство като ваша домашна директория. Така никой, дори и root няма да има достъп до личната ви домашна директория, защото тя ще е шифрирана.
DM-Crypt е много удобен начин за шифриране на данните, но има още един, който функционално е подобен, но е по-удобен, защото е преносим между различни системи, различни компютри, с различни ядра Линукс.

Третият и най-преносим и прозрачен за програмите начин е да шифрирате отделни директории с EncFS. EncFS използва модула към ядрото на FUSE (Filesystem in USErspace) за да монтира шифрирани директории все едно са друго устройство, както се монтират например мрежови устройства (като споделени директории от Уиндоус и Samba) или локални дискови устройства, записвачки, флопита, usb-памети. Удобството на FUSE е в това, че нямате нужда от отделен модул за всяко ново устройство – ако си поддържа от общия fuse-модул, монтирането е възможно. В повечето дистрибуции FUSE е включено по подразбиране:

# modprobe fuse
Това ще зареди модула, ако вече не е зареден. След това трябва да инсталирате пакетите encfs, libpam-encfs и gmailfs. Отново, в Дебиан това става с командата ‘apt-get install encfs libpam-encfs gmailfs’. Първите два пакета служат за работата с EncFS, а третият ще разгледаме накрая. Създавате нова шифрирана директория с командата:

$ encfs ~/.crypt ~/decrypted
Изберете настройката “p” за режим “параноя” с най-“затегнатите” подразбиращи се настройки. Това ще създаде шифрирана директория ~/.crypt и ще я монтира разшифрирана в ~/decrypted. В домашната си директория ще имате една скрита директория ~/.crypt, която ще е шифрирана и съдържанието в нея ще е това на директорията ~/decrypted. Когато създавате, променяте или копирате файл в ~/decrypted, той автоматично ще се шифрира и записва в ~/.crypt. Видимото, разшифрирано съдържание ще е в ~/decrypted само след монтиране с:

$ encfs ~/.crypt ~/decrypted
След като вече съществуват тези директории, ще бъдете попитани само за паролата, която сте задали при създаването им. И след това данните ще се монтират във видимата директория в четим вид. Ако сте задали “p” за най-“затегнатия” режим, освен по-високото шифриране, също така имената на директориите и файловете в шифрирания вариант ще бъдат разбъркани до неузнаваемост. Дължината на имената им и числата на големината им – също. Никой, дори root на машината или крадецът, добрал се до диска ви, няма да може да разбере дали имате нещо ценно в тази директория или има наистина ненужни и безсмислени данни. Каквито и да са, данните са си ваши и са защитени.
Когато искате да размонтирате директорията, защото сте приключили с работата по защитените файлове или просто искате да оставите компютъра на друг човек за час-два, изпълнете командата:

$ fusermount -u ~/decrypted
Това ще размонтира директорията, видимите данни ще изчезнат и ще останат само физически записаните като шифрирани файлове и директории данни в ~/.crypt. Всички промени, които сте правили по данните докато са били видими, ще се запазят – всъщност всички те се запазват в оригиналната директория още в момента на записването им. Видимата директория съществува само логически, на харддиска на компютъра съществува физически само шифрираната информация. Затова ако натиснете бутон с асоциирана команда ‘fusermount -u ~/decrypted’, веднага данните ще станат недостъпни. Също така при рестартиране на машината ще трябва да въведете паролата за директорията и да я монтирате с encfs, иначе данните са си недостъпни. Ако решите да изтриете бързо данните, може да го направите, като изтриете ~/.crypt. Все пак внимавайте и не го правете прибързано – това са личните ви данни :)

Шифриране на цял потребителски профил
В така създадената с EncFS директория можете да преместите всичко, което решите от потребителските си файлове. Офисни и други документи, които са само за вашите очи, файлове с пароли и други чувствителни данни и всичко, което прецените, че трябва да бъде защитено. Но можете да отидете още по-напред, като шифрирате цялата си домашна директория. Освен всички лични документи, изходни файлове от най-различни обработващи програми, там се намират и конфигурационните ви файлове. Настройките в скритите ви файлове (тези с точка в началото, те често не се виждат при подразбиращия се преглед) могат да бъдат много ценни за разбиващия системата ви и търсещия информация за вас. Там се записват, често в явен вид, имена и пароли в настройките на програми, различни специални настройки, също така и история на командите, които сте изпълнявали (понякога в самия ред на командата може да е добавена и парола) и т.н. Казано накратко – не само офисните ви документи съдържат ценна за претърсващия директориите ви информация. В много от скритите файлове с настройки в домашната ви директория има ценни данни.
Можете да създадете шифрирано устройство с DM-Crypt или шифрирана директория с EncFS и след това със съответния модул за PAM да настроите системата си така, че при влизането ви като потребител шифрираното устройство или директория да се разшифрира и да се монтира на мястото на домашната ви директория. Така абсолютно всичко, което правите на личния си компютър, ще бъде лично ваше и никой няма да може да следи действията ви. В случая с EncFS дори и администраторът (root) на системата ще вижда шифрираните данни в монтираната директория, защото монтирането и изцяло с правата на съответния потребител, в случая – с вашите и само вашите права. Само вие виждате собствената си домашна директория, независимо дали е монтирана или не.
Ето примерни описанния за настройка на PAM-модулите за EncFS и за DM-Crypt (на френски) и DM-Crypt с LUKS (Linux Unified Key Setup, считан от мнозина за бъдещия стандарт за шифриране на дискове под GNU/Linux).

Отдалечено монтиране на шифрирани данни в GMail
Освен всичко това можете да настроите системата си така, че шифрираната директория с EncFS да е не локална, а отдалечена, мрежова директория. Това може да е предварително монтиран споделен ресурс от друг компютър в мрежата, но много по-сигурно, много по-добре е да е независим и наистина отдалечен ресурс. Такъв ресурс е GMail. Това е електронната поща на Google и освен че е безплатна и е огромна (над 1 гигабайт ще стигне на всеки за домашна директория, поне за чувствителните данни), е и достъпна от програмите. Google се грижат повечето от услугите им да имат публично достъпен програмен интерфейс – можете през настолна програма да управлявате пощата, календара, сателитните карти и т.н.
За да можете да използвате поща в GMail като монтирана отдалечено директория, трябва да инсталирате gmailfs. Той също ползва FUSE, инсталирана за EncFS по-горе. Можете да монтирате пощенската си кутия в GMail и да я използвате като директория за съхранение на файлове с командата:

$ mount.gmailfs none ~/gmailfiles -o username=gmailusername -p
Където ‘gmailusername’ е името ви в gmail. Можете да добавите опцията ‘-e’ и тогава ще бъде използвана EncFS за шифриране на данните. Така в пощата ви в GMail ще има неразбираеми писма, които при монтиране с gmailfs с опция ‘-e’ ще бъдат видими само от вас.

Можете да стигнете и дотам, че да пожелаете да монтирате цялата си домашна директория шифрирано (с EncFS, с опцията ‘-e’) в поща в GMail (с gmailfs) и така освен че домашната ви директория с всички файлове с настройки на профила ви и личните ви файлове ще бъде защитена с EncFS, цялата тази информация ще се съхранява далече от вас в сървърите на Google. Така и най-умелият крадец на данни ще трябва освен всичките ви защити да разбие и тази на пощенската ви кутия в Google. Все пак преценете добре дали си заслужава – скоростта на обмен на файловете между компютъра и уеб-пощата може да е доста бавен. А при нормална работа много програми често пишат в домашната директория служебна информация и това може да забави ужасно много работата, ако се налага всеки път свързване с пощата на Google.
Но като оставим настрана този най-краен вариант, другите възможности – защитаване на отделни устройства, директории или домашни потребителски директории съответно с DM-Crypt или EncFS и отдалечено монтиране на шифрирани директории в GMail са все неща, които определено си заслужават да ги проучите.

Личните ви данни по подразбиране са само за ваше лично ползване, но ако не ги шифрирате всеки може да ги види, дори понякога и без да ги търси нарочно. Както не размахвате по улицата листче с написани кодове за достъп до картите и сметките си, така се грижете и за електронните си данни. Не е трудно.

Leave a Reply

Your email address will not be published. Required fields are marked *