Сохранение приватности пользовательских данных стоит в последнее время довольно остро. Приватная информация может стать не только добычей троянов и червей, а также просто посторонних глаз, что в некоторых случаях может оказаться даже серьезнее. Разумеется, в рамках этого поста не удастся рассмотреть даже кратко все аспекты этой проблемы, но, я думаю, это и не нужно. Попробуем рассмотреть самые насущные проблемы и способы их решения. Сразу хочу сказать, что несмотря на обилие программного обеспечения, призванного обеспечить приватность, ни одно из них не может 100% гарантировать сохранность личной информации. Лучший страж приватности — это голова и прямые руки. В умелых руках программное обеспечение будет хорошим подспорьем, а в кривых — только лишней абузой.
Хочу сразу заметить, что моя заметка ником образом не претендует на профессиональное руководство или мануал. Я всего лишь попытался собрать воедино некоторые свои мысли по поводу хранения приватных данных с точки зрения обычного пользователя.
Как вообще можно сохранить информацию? Для этого есть много способов. Наиболее распространенным из них является криптография. Криптография — это шифрование конфиденциальной информации с помощью тех или иных алгоритмов. Криптография может быть весьма надежным помощником в сохранности приватных данных, и ее использование просто необходимо. За примерами криптографии далеко ходить не надо — это может быть запароленный архив любого формата, зашифрованный файловый контейнер (по сути дела тот же архив), сюда же относится и файловая система EFS в Windows, которая, впрочем, показала себя совсем неудобной и ненадежной, и т. д. Криптография сама по себе хороша, но когда хакер видит перед собой запароленный архив, у него сразу начинают чесаться руки, и он сделает все, чтобы сбрутить пасс. То же самое в семье: когда родители видят на компьютере ребенка запароленные архивы на Рабочем столе или в Моих документах, это тоже наводит на некоторые мысли, и сразу начинаются разговоры по душам. Поэтому используя только лишь криптографию, мы сразу кричим на весь мир: Посмотрите, вот у меня есть что скрывать, и я это скрыл :-) Поэтому есть еще один способ, который можно вполне использовать самостоятельно, однако лучше, если его комбинировать с криптографией. Называется он стеганография. Если криптография — это сокрытие информации, то стеганография — это сокрытие самого факта сокрытия информации. Она может быть эффективна даже без применения криптографии. В качестве примера простейшей стеганографии можно привести следующее: мама пользователя А запрещает смотреть ему по телевизору аниме. Досада. Но пользователь В регулярно снимает рипы и расшаривает их в локалке. Отрада. Но если мама увидит среди закачанных файлов на компьютере свежую серию аниме, пользователю А будет больно :-). Что делает пользователь А? Берет файл anime.avi и переименовывает его в mswincom32.dll, после чего бросает в папку system32.
Мама прошерстила файлы, увидела, что ничего криминального нет и спокойно пошла смотреть любимый сериал :-). Как видите, непросто догадаться с ходу, что на компьютере у пользователя А есть вообще какая-то скрытая информация. Но вообще это довольно слабый ход. Маскировка файла под системную библиотеку хороша, но пользователь может спалиться на дате создания/изменения файла. Стоит запустить поиск по дате созданных/измененных файлов за последние сутки, как наша приватность тухнет, как бычок в писсуаре. Значит, дату создания/изменения надо тоже откатить на пару лет назад :-). Но это тоже не 100% вариант. Системные динамические библиотеки занимают довольно небольшой объем, и уж никак shell32.dll не может быть размером под 500 МБ. На этом тоже палятся незадачливые юзеры. Кстати, уважаемые родители, найдите на компьютере ребенка двадцатку самых больших файлов, и вы найдете самое интересное :-). В принципе, замаскировать можно под что угодно. Вот, например, у программы Google Earth довольно большой кэш. Находим этот файл, кидаем рядом с ним фейковый и присваиваем такое же имя, только, например, с цифрой 1 или с другой буквой. Меняем дату и — вуаля — наш файлик уже найти не так-то просто.
Комбинировать методы в принципе, тоже просто, на первый взгляд. Упаковываем файлы в архив, запароливаем его и маскируем под какой-нибудь другой файл. Казалось бы, что может быть надежнее?. Однако с архивами ситуация вовсе не так проста. Даже если мы наш запароленный private.rar переименуем в mswincom.dll и поместим в системную папку, антивирус при проверке начнет ругаться на него трехэтажным матом на предмет того, что это запароленный архив RAR.
Но как антивирус-то определил его, ведь мы сменили расширение? Очень просто. Антивирусы определяют типы файлов не по расширению, а по сигнатуре (по первым байтам файла). Откроем в любом HEX-редакторе zip-архив и увидим в самом начале 50 4B/PK. Вот это и есть сигнатура zip-архива. У архивов формата RAR она вот такая: 52 61 72 21/Rar!.
У других типов файлов также есть своя сигнатура. Однако стоит только нам в HEX-редакторе заменить «Rar!» на «Fuck» (как вариант ;-)) и сохранить файл, как антивирус ослепнет и не будет больше нас донимать. Вот, кстати, как стражи безопасности (антивирусы) могут стать врагами для тех, кто пытается сохранить приватную информацию.
Итак, с этим разобрались. Однако, если у нас файлов, которые надо скрыть, много, то танцевать так с бубном над каждым файлом весьма и весьма неудобно. Вот тут на помощь нам и придут различные программы. Их будет несколько.
Прежде всего нам понадобится программа для шифрования дисков и создания зашифрованных файловых контейнеров. Таких программ сейчас довольно много, однако я не рекомендую пользоваться всеми подряд. Лучше выбирать надежность. Некоторые утилиты, написанные на скорую руку студентами, которые поерзали мышкой в Delphi пару часов, а затем выставили свой продукт за стандартные $14,95. В чем подвох? Разрабатывать алгоритм шифрования программист не в силах. Использовать уже готовые типа AES и т.д... ну, это еще надо внедрить в программу. А поэтому делается все очень просто - шифрование отсутствует, да и пароль зачастую хранится в открытом виде. Нормальная тема? Посекрету всему свету называется. Даже если пароль хранится не в открытом виде, а в виде хеша, то это ничуть не добавляет безопасности. Те, кто умеет держать в руках дизассемблер, просто реконструирует формат файлового контейнера, и будет спокойно работать с ним в обход пользовательского интерфейса программы. Конечно, не все домашние пользователи на такое способны, но строго говоря, такая защита спасет только от первоклассников. Некоторые программы устанавливают в систему свой драйвер, который постоянно находится в памяти и перехватывает системные вызовы, тем самым обеспечивая шифрование файлового контейнера или даже отдельных папок. Хотя это и достаточно надежный метод, он не получил широкого распространения по одной простой причине. Такие файловые маскировщики зачастую схожи с руткитами, в результате чего антивирусы сразу объявляют им бой. Помимо этого точный перехват системных функций реализовать довольно сложно, поэтому такие программы зачастую работают со сбоями, а из-за сбоя в драйвере система может даже выдать BSOD.
Я остановился на TrueCrypt, однако можно использовать и аналоги. Программа обладает довольно широкими возможностями по созданию зашифрованных файловых контейнеров и шифрованию дисков, может шифровать содержимое системного диска. Выбор алгоритмов тоже довольно широк, причем, программа может шифровать тремя алгоритмами одновременно. Шифрование осуществляется на лету с использованием специального драйвера.