Журнал «Компьютерра» №43 от 22 ноября 2005 года - Журнал Компьютерра (читать хорошую книгу TXT) 📗
Способы шифрования данных следует разделить по их программной реализации. Начнем с того, что кое-какие криптоинструменты есть даже в операционках. Так, в Windows XP используется специальная файловая система EFS, благодаря которой можно хранить защищенные данные в томах NTFS 5.0. В этом случае используется прозрачное шифрование, то есть с такими файлами можно работать, как и с обычными: открывать, изменять и т. д. Шифрование/дешифрование будет происходить незаметно, в фоновом режиме. При шифровании файлов (Свойства папки или файла › Общие › Другие › Шифровать содержимое для защиты данных) Windows создает сертификат и связанную с ним пару ключей. Сертификат представляет собой цифровой документ для проверки подлинности и защищенной передачи данных в открытых сетях. Кстати, если не сохранить сертификаты и ключи или не создать учетную запись агента восстановления, при переустановке ОС защищенные данные будут безвозвратно потеряны.
Встроенную криптозащиту предоставляют и многие программные комплексы, например MS Office или Lotus Notes. В «офисных» программах можно ставить пароль как на открытие, так и на редактирование файла. Впрочем, автоматизированный подбор пароля за приемлемое время для доступа к документам Word или Excel вполне возможен. Поэтому для усиления защиты во многих программах предусмотрено подключение внешних модулей шифрования от независимых разработчиков. Чуть ниже мы поговорим о таких модулях подробнее.
Наконец, для шифрования данных (электронной корреспонденции, файлов, дисков и пр.) можно использовать и специализированные комплексы, которые обычно поставляются в виде набора утилит, обеспечивающего полную защиту рабочего места (как правило, гибкая политика лицензирования позволяет установить и отдельные компоненты комплексов, которые необходимы в конкретной ситуации).
Сделать защиту данных более надежной позволяют аппаратные средства. В первую очередь это носители ключей, сертификатов и прочих конфиденциальных данных. Теоретически таким «хранителем» может стать тривиальная дискета, но на практике обычно используются токены (USB-ключи) и смарт-карты (изготовлением последних занимаются специализированные фирмы - Aladdin, Rainbow, «Актив», Eutron). На сегодняшний день «железные» ключи поддерживаются практически всеми популярными средствами шифрования, а некоторые программы вообще не могут работать без аппаратных средств защиты.
Так что перед пользователем, радеющим о неприкосновенности своих данных, стоит нелегкий выбор подходящего к случаю ПО. Но перед тем, как погружаться в нюансы, давайте поговорим о самом неприятном.
Казалось бы, самый очевидный подход - разделить софт по лежащим в его основе алгоритмам шифрования. Но и здесь не все гладко, потому что криптоалгоритмов накопилось великое множество, которое, в свою очередь, тоже нужно классифицировать. Да и сами алгоритмы бывают симметричные, асимметричные и тайнописные. В первом случае принцип действия алгоритма не является ни для кого тайной, а секрет составляет лишь специальный информационный блок - ключ. С его помощью данные можно как зашифровать, так и расшифровать. В асимметричном алгоритме используют пару ключей: открытый и закрытый. Первый служит для шифрования данных и не представляет собой секрета, так как не пригоден для дешифрации. Тем же, кому положен доступ к данным, владелец передает другой - закрытый ключ. Кстати, эти ключи еще и отличаются длиной в битах. Думаю, не стоит уточнять, что чем ключ «длиннее», тем надежнее шифр.
Есть еще тайнопись - самый древний и, увы, ненадежный принцип шифрования, которым в детстве забавлялись многие читатели, изобретая собственные алгоритмы. Классика жанра - использование в качестве ключа букв алфавита в обратном порядке, когда в шифруемом тексте "а" заменяется на "я", "б" - на "ю" и т. д.
В более серьезных сферах применения криптографии тайнопись уже практически не используется, так как сильно уступает двум первым вариантам. Достаточно сказать, что сама необходимость сохранения алгоритма в тайне делает этот метод крайне ненадежным.
Независимо от типа и назначения данных для шифрования можно дать ряд общих рекомендаций по выбору криптоутилиты. Во-первых, в основе ее работы должен лежать зарекомендовавший себя алгоритм. В качестве «наградного знака» можно рассматривать, например, признание алгоритма госстандартом в какой-нибудь из стран. Если же автор софта - небольшая малоизвестная компания, то к ее заявлению о собственной уникальной методике следует отнестись критически. Ну и длина ключа, если используется симметричное шифрование, должна составлять хотя бы 128 бит. С этого «порогового» значения расшифровка данных без ключа при использовании современных средств не может быть выполнена за приемлемое для злоумышленника время.
Следует также остерегаться вариантов, при которых ключ представляет собой пользовательский пароль или создается генераторами «случайных» чисел[Возможно, кого-то это удивит, но значения, возвращаемые функцией random и ее аналогами в различных языках программирования, на самом деле являются не произвольным набором чисел, а определенной последовательностью]. Хорошее решение - генерация ключа на основе случайных движений мышью или нажатий клавиш на клавиатуре, когда измеряется время между каждыми соседними нажатиями/движениями (в миллисекундах), и если результат измерения четный, то очередному биту ключа присваивается нулевое значение, иначе - единица. Если длина ключа достаточно велика, барабанить пальцами по клавиатуре придется больше минуты. Полученные ключи необходимо спрятать, для чего используются различные носители - от дискет до токенов[Такой механизм создания ключа используется, к примеру, программой-клиентом популярной системы WebMoney].
В том, что защититься на 100% невозможно, убеждать, думаю, никого не нужно, и криптографические методы - не исключение. Производители софта для шифрования данных приводят потрясающие воображение цифры тестов - на расшифровку такого-то кода взломщику, работающему по восемь часов в день, понадобится столько-то тысяч лет и т. п. Однако здесь речь идет о том, что потенциальные похитители данных будут решать задачу в лоб, то есть заниматься перебором, чего на практике, конечно же, не происходит. Не стоит забывать, что даже в приложении, построенном на основе отлично зарекомендовавшего себя алгоритма, низкая надежность может проявиться на других уровнях. Работа криптософта - сложный процесс, в котором задействованы сразу несколько технологий: кодирование, ЭЦП, хэш-функции и др. Неудовлетворительные меры защиты хотя бы по одной из этих технологий ослабляют надежность системы в целом. Также далеко не во всех программах тщательно проработано удаление исходной информации для шифрования: сброс аппаратных буферов и кэш-памяти, очистка виртуальной памяти, временных файлов и т. д. В идеале файл подкачки вообще не должен использоваться, но в этом случае резко повышаются системные требования ПО, а разработчики не хотят терять часть (и немалую) клиентов среди владельцев маломощных компьютеров.
Во многих программах не учитывается влияние «окружающей среды», которая может критически повлиять на безопасность. В частности, нередко считается, что доступ к компьютеру, на котором установлен криптософт, закрыт для посторонних. Между тем это почти всегда не соответствует истине. Выход в данном случае - программная поддержка аппаратных ключей, снабженных собственной защитой (например, смарт-карт с PIN-кодом). Ведь на самом компьютере могут находиться вредоносные программы, включая кейлоггеры, и если злоумышленник узнает пароль, вводимый пользователем для шифрования данных, он может легко получить доступ и к конфиденциальной информации.