Skip navigation.
Home

Конфиденциальность шаг за шагом.

В колхозном клубе идет лекция по антропологии.
Лектор:
- Вот это, товарищи, скелет В.И. Чапаева в детском возрасте.
- А вот это - в отрочестве.
- А вот это - скелет взрослого В.И. Чапаева.
Вопрос из зала:
- Простите, как у одного человека могло быть три скелета?
Лектор:
- Молодой человек, Вы - кто?
- Студент, на картошку приехал.
- Вы что не видели объявление на двери - "лекция для колхозников"?

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

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

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

I. Первоначальный выбор, ...цать лет назад.

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

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

2 Необходимо не просто удалять исходные файлы после шифрования, а использовать специальные программы, которые многократно прописывают в такие файлы мусор, и только потом - удаляют. (Удаленный файл как известно, можно восстановить, частично или полностью: не так давно я наткнулся на статью: два кадра любопытства ради купили на ebay пару сотен подержанных дисков, и решили восстановить то, что на них было. Результаты заставили бы покрыться холодным потом бывших владельцев, ибо там было все: от любительского порно до кодов доступа к банковским счетам).

3) Пользователь не может быть 100% уверенным, что он действительно почистил за собой все. Ряд программ создают во время работы временные файлы и удаляют их после того, как информация записана в исходный файл, причем удаляют их не вышеописанным способом, а классическим.

4) В ряде случаев это просто невозможно: например, Вы получили письмо, прочитали его и удалили. Правда удалили? Тот факт, что его не видно в окне Вашей почтовой программы, совершенно не означает, что информация физически удалена с диска. Вы думаете, что если не ввести пароль при запуске Вашего скайпа, то нельзя увидеть список Ваших контактов или нельзя прочитать историю Ваших бесед? Отнюдь.

5) Еще одна очень неприятная проблема состоит в том, что, например, в Великобритании можно схлопотать неиллюзорный срок за отказ выдать правоохранительным органам пароль в ряде случаев. (Кому интересно - Regulation of Investigatory Powers Act, RIPA, 2000 год, часть третья). Схлопотать за такой отказ можно до пяти лет лишения свободы. Нарваться на подобного рода требование, особенно если катаетесь по миру с ноутбуком, вполне возможно.

Подводя итоги: этот вариант - долго, медленно, неудобно и ненадежно.

II. Truecrypt, или "почти все хорошо" ( Статья в википедии).

Альтернативой явлются программы, которые организуют зашифрованные контейнеры, содержащие информацию, умеющими становиться прозрачными для пользователя после ввода правильного пароля. Наиболее известная программа - Truecrypt. Программа создает "как-бы диск" (это для пользователей Windows написано), этот "диск" можно открыть, введя пароль, на нем можно хранить информацию, на него можно устанавливать программное обеспечение, если диск открыт, то на него и с него можно копировать данные. Физически этот самый контейнер представляет собой файл на диске, содержимое которого зашифровано. Казалось бы, все хорошо, и все минусы предыдущего метода отсутствуют. Увы, есть другие неприятные моменты:

1) Truecrypt предлагает два варианта: в первом пользователь создает контейнер фиксированного размера, во втором - динамического. Проблема в том, что во втором случае криптоустойчивость контейнера (и скорость работы с ним) падает (я не проверял, но сдается мне, что для динамических контейнеров не будет происходить уменьшения размера, если удаляешь в нем файлы). В первом же случае приходится либо отводить для такого контейнера много места (вы же не знаете, сколько именно данных вы будете там хранить), либо создавать несколько контейнеров: один под почтовую систему, второй под скачанное с торрентов, третий - под бизнес и так далее. Надо помнить, для чего какой контейнер, помнить основной и альтернативный пароли (см. "приемущества Truecrypt" ниже по тексту) для каждого, бэкапить (мы ведь регулярно сохраняем данные, правда?) массу неиспользуемого места в контейнере.

2) Террабайтный "диск" созданный Truecrypt, форматируется (а его таки надо форматировать) часов шесть. При форматировании надо учесть, что выбранная файловая система должна поддерживаться на всех компьютерах, где Вы планируете этим контейнером пользоваться.

3) Неприятная особенность Truecrypt состоит в том, что надо не забывать, что контейнер открыт. Закончил работу - закрой контейнер, закрыть крышку ноутбука недостаточно.

4) Крайне неприятная фишка Truecrypt, на которую я нарвался, выглядит следующим образом:

Один из моих контейнеров хранился на домашнем сервере, потому как его содержимое нужно было только дома. Я забыл, что контейнер уже открыт на сервере, и подключившись к серверу с второго компьютера, еще раз открыл тот же контейнер, уже на втором компьютере. Записав в контейнер (читай: на "диск") очередную порцию информации, я обнаружил на следующий день, что все, что я туда записал, пропало. Эксперимент показал, что в такой ситуации сохранность информации зависит от того, на каком компьютере контейнер был закрыт последним.

5) Truecrypt увы, не решает (точнее, изгалиться можно, но крайне неудобно) проблемы шифрования данных в публичных хранилищах. Я имею ввиду DropBox. Например, Вам хотелось бы, чтобы все, что туда складывается, было зашифрованным, но при этом доступным со всех компьютеров (включая телефон), с которых Вы работаете, причем прозрачно для всех программ.

6) Проблема избирательного доступа. Представим себе такой сценарий: есть ящик DropBox, хочется, чтобы доступ к данным на нем имели Маша и Вася, для которых Вами туда регулярно что-то выкладывается, причем хочется, чтобы доступ этот был раздельным для Васи и для Маши (т.е. каждый из них видел только то, что ему предназначено), и чтобы вся эта информация была шифрованной. Еще вариант: на домашнем компьютере есть конфиденциальные данные взрослых (у каждого свои) и к тому же - общие конфиденциальные данные. Кроме того, в семье есть пытливые детишки, научившиеся нажимать клавиши на компьютере. Truecrypt такого сервиса, увы, не обеспечит.

7) Проблема бэкапа. Как я уже говорил, под фиксированные контейнеры надо отводить много места, чтобы не заниматься созданием контейнера бОльшего размера и перекачкой туда данных из старого, когда приперло. Но еще одна проблема состоит в том, что открытый контейнер Truecrypt, конечно, можно скопировать на резервный диск, но вот результаты этой операции непредсказуемы: можно потерять все при определенных ситуациях. Т.е. хотелось бы, чтобы процесс этого самого прозрачного шифрования-дешифрования касался только тех файлов, с которыми именно сейчас работаешь.

8) Контейнер Truecrypt это файл. Восстановить поврежденный контейнер Truecrypt увы, невозможно.

II-1 приемущества Truecrypt.

1) Truecrypt поддерживает т.н. двусмысленное шифрование, что это такое и в каких случаях может быть важно - хорошо описано по ссылке.

2) Truecrypt поддерживает шифрование не только по некоему парольному слову, но и использование ключевого файла в качестве пароля. Ключом к контейнеру может служить все, что угодно: фотография любимой кошки, к примеру.

Выводы: Truecrypt весьма неплох, и до недавнего времени он меня почти полностью устраивал. Здесь находится пошаговая инструкция на русском для начинающих, с описанием, что куда и зачем нажимать. Инструкция написана для пользователей Windows-версии.

Есть ли вариант, который:

1) был бы лишен описанных выше недостатков, или, хотя бы наиболее серьезных из них?
2) обладал бы желаемыми достоинствами?
3) был бы бесплатным?
4) существовал бы для Windows, Linux, Android?
5) был бы сделан не конторой имени Ф.Э.Дзержинского? (т.е. с открытым кодом).

На мой взгляд - да, есть.

III. EncFs (ENCrypted File System)

Собственно, Википедия уже все сказала. Существует сие для всех наиболее популярных систем (да, и для Андроида - в том числе), причем результаты работы совместимы между собой: контейнер, созданный под управлением одной OS, нормально читается под другой. Отсутствуют проблемы, описанные в п. 2. Ссылка на Windows - версию - в тесте википедии.

Каковы достоинства и недостатки этого метода?

Достоинства:

1. Шифруется и дешифруется только то, с чем работаешь в данный момент.
2. Нет понятия "контейнер" как таковой, EncFS это прозрачная для пользователя прослойка между "настоящей" файловой системой и программами.
3. Возможно автоматическое демонтирование шифрованного раздела если с файлами на нем никто не работает заданное количество времени.
4. Возможно принудительное демонтирование если надо это сделать быстро.
5. Возможны такие вещи, как шифрование носителей, находящихся вне Вашего компьютера (Дропбокс и иже с ними).
6. Возможно использовать один Дропбоксовский контейнер для хранения шифрованной информации, предназначенной разным людям.
7. Никаких проблем с бэкапом, многопользовательским доступом и пр.
8. То, что шифруется подобным образом, совершенно необязательно физически располагается только в данном конкретном контейнере на данном конкретном диске, даже если это видится именно так для пользователя.

Недостатки:

1. Двусмысленное шифрование толком не обеспечивается. Я нашел статью, в которой описывается, как это якобы, можно сделать, но метод не выдерживает критики, на мой взгляд.
2. Т.к. EncFS ставится поверх существующей файловой системы, то пользователь имеет все достоинства и все недостатки оной. Кроме того, можно увидеть размеры шифрованных файлов, дату последнего к ним обращения,права на файлы и пр.
3. EncFS шифрует не только содержимое файлов, но и имена файлов. При этом т.к. длина имени зашифрованного файла всегда получается длинее длины имени оригинального файла, возникает автоматическое ограничение на хранение файлов с очень длинными именами (более полутора сотен символов, если говорить очень обобщенно).
4. Чего нет в Википедии, но что представляется мне важным: если Вы используете rsync для резервного копирования, то делать это надо с ключом -T "Путь к каталогу вне EncFs", потому как во-первых, сильно быстрее будет, во-вторых, снимаются проблемы с временными файлами rsync, имеющими место быть в случае использования EncFs. Это влечет за собой небольшие изменения в уже написанных скриптах бэкапа.

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