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