Шифрование в Linux с использованием GnuPG


Шифрование, такая же больная тема как и вирусы. Кому-то нравиться, кому-то нет. Кто-то называет это параноей, ссылаясь на общую не нужность файлов (пусть даже домашняя клубничка или еще чего) пользователя для злоумышленников, кто то считает что это крайняя мера и необходима только на предприятиях, фирмах, банках и прочих корпоротивных учреждениях. Думать можно что угодно и как угодно, тем неменее отдельные очерки, которые то тут, то там появляются в блогосфере, описывают такие случаи, как изымание компьютерной техникой товарищами из «масок шоу» и прочими «оборотнями в погонях», именующими себя «стражами порядка». Лично из своего опыта могу сказать следующее, у меня на компьютере храняться такие важные для меня файлы как: сертификаты кошельков Web-money, файл с паролями, данные о кредитных карточках, а так же некоторые документы из армии, которые якобы считаются «секретными», телефонная книга и т.п. Я считаю необходимым обезопасить такого рода данные по максимуму, так как их потеря может быть опасна для моего банковского счета и счета электронного. Как это сделать в Линукс, читаем ниже

Attention! Ahtung! Warning! Внимание! ??????
Данная статья не расчитана на профессионалов в области криптографии и шифрования

Типы угроз


В Linux существует масса путей как обезопасить свои данные. Но прежде чем заняться их сохранностью, необходимо рассмотреть типы угроз для ваших данных. Давайте сделаем это. И так, рассмотрим следующую ситуацию, у вас дома имеется ноутбук с Linux на борту, на жестком диске ноутбука вы сохранили важные для вас данные. Какие типы угроз могут рассмотриваться в таком случае для вашего ноутбука в целом и ваших данных записанным на винчестере?
Злоумышленник может включть компьютер и подобрать логинпароль от системы
Злоумышленник может скопировать ваши данные на внешний носитель (флешка, диск)
Злоумышленник может загрузиться с внешнего носителся (флешки, диска) и получить полный доступ к вашей системе
Злоумышленник может выкрасть ваш ноутбук (конфисковать), вынуть жесткий диск и подключить к своему компьютеру

Как можно преодолеть часть из этих угроз?
Поставить пароль на BIOS, который будет мешать пользователю начать загрузку ОС.
Поставить пароль на загрузчик GRUB, ограничев колличество ввода неверного пароля
Поставить длинный и сложный пароль на рабочего юзера
Поставить длинный и сложный пароль на root’a
Защитить папку с вашими данными, присвоив ей правагруппу root’a

От чего не спасут подобные действия?
От загрузки с внешнего носителя (флешка, диск)
От кражи ЖД ноутбука или компьютера

Так как загрузившись с внешенго носителя он сможет обойти все ваши пароли и права без проблем. Единственный метод который позволит вам закрыть ваши данные от подобного вторжения в файловую систему, это шифрование оных. Даже подключившись с внешнего носителя пользователь столкнется с зашифрованным разделомпакойфайлом который не сможет прочитать или даже открыть, не имея пароля, ключа, сертификата, смарт карты, отпечатка пальца и конечно же соответствующих знаний.

Как зашифровать?


Ubuntu в процессе установки предлогает сделать ваш home-раздел зашифрованным, достаточно поставить галочку. Но тут стоит быть осторожным, так как случись что, даже вы не сможете потом восстановить данные, включая не критичные для потери, но важные для вас (рефераты, презентации, статьи, фотографии и прочее)

В том случае, если колличество информации требуемоей к сокрытию не велико, лучше использовать отдельный физический или виртуальный раздел, который с лёгкостью может быть зашифрованрасшифрован, нести в себе только кретичные данные, и быть мобильным, т.е. вы сможете переносить его на диске, флешке или любом другом носителе.

Эталоном шифрования является программа TrueCrypt, она свободна, поддерживает шифрование на лету, и имеет очень серьезный механизм защиты данных. Существуют и куда более изощренные способы шифрования, когда ключи храняться на удаленных серверах, и аутентификация проходит только при целой куче совпадений, IP-адрес, ключ, пароль, MAC-адрес и прочее. Но все эти методы сложны, изощренны и невсегда подходят обывателю.

Кустарный метод


Тот метод который я изложу ниже, был назван мною «кустарным«, он не имеет GUI (без которого сейчас не может жить пол населения планеты), он прост и не прихотлив. Для шифрования используются утилита GPG, она проста в использовании, не требует кропотливого изучения нескольких томов, перед котороми «Война и мир» покажуться вам просто шуткой, и она настолько мощна, что случаев расшифровки информации зашифрованной с помощью GPG я не припомню (это конечно при правильном подходе, когда пароль, это что-то более серьезное чем 12345) и она присутствует практически в любом современном дистрибутиве.

На самом деле, возможности GnuPG просто потрясают, но в принципе, можно обойтись и некоторыми простыми инструкциями, которые по надежности не уступают и великому TrueCrypt. Стоит отметить, что утилита предусматривает следующие алгоритмы:

С открытым ключом: RSA, RSA-E, RSA-S, ELG-E, DSA
Симметричные шифры: 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH, CAMELLIA128, CAMELLIA192, CAMELLIA256

И так, предположим у вас есть некоторый набор файлов, который необходимо зашифровать.
Первое, что нам необхомио сделать, это создать будущий файл-контейнер для хранения информации:

dd if=/dev/zero of=/home/user/secret bs=1k count=1000000


где:
count=10000 – это указатель отводимого места под ваш контейнер.
/home/user/secret – обсолютный путь файла
Помним, что 1Mb~1000Kb, соотвественно 1000000Kb~977Mb

Теперь необходимо создать файловую систему нашему будущему контейнеру:

sudo mke2fs -t ext4 secret


где флаг -t – указывает тип файловой системы, утилита mke2fs позволяет указать: ext2/ext3/ext4

Теперь, дабы корректно работать с контейнером и иметь возможность записичтения информации уже внутри него, его необходимо примонтировать:

sudo mount -o loop secret /mnt


Далее вы можете свободно зайти на ваш виртуальный диск. А так же записать туда любую информацию:

cd /mnt


Посмотреть на диск:

df -h


Файловая система Разм Исп Дост Исп% смонтирована на


/dev/loop0 962M 18M 896M 2% /mnt


После того, как вы записали на вновь созданный диск данные, его необходимо отмонтировать:

sudo umount /mnt


Создаем цифровую подпись, во избежение подмены а так же изменения файла, с целью получить ваш пароль, который вы будете по ошибке вводить к неправильному файлу:

gpg --gen-key


Вам необходимо ответить на несколько вопросов.
Далее программа создаст связку ключей приватныйпубличный, которые храняться в базе:
~/.gnupg/pubring.gpg – публичные ключи
~/.gnupg/secring.gpg – приватные ключи

Для дальнейших манипуляций с ключами:

gpg --edit-key UserID


Посмотреть уже существующие:

gpg --list-keys


Выполнить экспорт ключа:

gpg --export UserID or KeyID > /home/user/mykey.gpg


И теперь шифруем наш файл-контейнер:
Алгоритм шифрования AES256, самый надежный что может быть.

gpg -e --clearsign --force-mdc --cipher-algo AES256 ./secret


где:
–clearsign - создать прозрачную подпись
-e – зашифровать данные
–force-mdc – Принуждает GnuPG использовать шифрование с кодом обнаружения изменений. Всегда используется с более новыми шифрами (с размером блока более 64 бит) или если все ключи получателя поддерживают MDC.
–cipher-algo – Для выбора другого алгоритма

Вас попросят ввести логинпароль, а так же пароль вашего ключа, который вы задали ранее.
За сим всё, в текщей директории вы получите файл вида: secret.gpg

Если вы хотите удалить оригинал контейнер бесследно, то выполните это:

shred -u -n7 -v -z secret


где флаг -n7 – удалить файл с семью итерациями.

Расшифровать обратно файл secret.gpg вам поможет команда:

gpg -o ./secret_new --decrypt secret.gpg


Эта команда автоматически проверит наличие цифровой подписи.

Вывод


Ваши данные отлично защищены.
Для дальнейшего пользования контейнером, проделайте все тоже самое, расшифруйте файл, примонтируйте контейнер и пользуйтесь с удовольствием и не забывайте про подписи которые можно експортировать на внешний носитель или загрузить на сервер. Возможно зваорачивания команд шифровкирасшифровки в скрипт для автоматизации процесса и избавления от необходимости каждый раз вводить длинные команды. Те кто считает длинные команды тяжелыми и не нужными – мудак, так как запомнить их проще, чем пережить кражу денег с банковского счета или кражу ценных документов. Надеюсь статья вам не показалась слишком сложной.

КАМННТЫ:
--------------------------------------------------------------------
Самое простое и надежное:
При установке системы создать шифрованный LVM и внутри него уже размещать свои разделы, в результате останется только не шифрованный /boot. Создание контейнеров все же проще тот же TrueCrypt использовать – хочешь через гуй, хочешь через консоль.
А GnuPG оставьте для почты.
--------------------------------------------------------------------
В принципе GnuPG – одинаково хорошь и для шифрования и для почты. Это написано у них в мане и на офф. странице.TrueCrypt кстати крутая штука очень, нашел статью тут про него, перевожу..
-------------------------------------------------------------------


http://www.linuxspace.org/archives/2794

Обновлено: 13.03.2015