Читать «Журнал «Компьютерра» №43 от 22 ноября 2005 года» онлайн - страница 58
Журнал 615 Компьютерра
Есть еще тайнопись - самый древний и, увы, ненадежный принцип шифрования, которым в детстве забавлялись многие читатели, изобретая собственные алгоритмы. Классика жанра - использование в качестве ключа букв алфавита в обратном порядке, когда в шифруемом тексте "а" заменяется на "я", "б" - на "ю" и т. д.
В более серьезных сферах применения криптографии тайнопись уже практически не используется, так как сильно уступает двум первым вариантам. Достаточно сказать, что сама необходимость сохранения алгоритма в тайне делает этот метод крайне ненадежным.
Слабые места
Независимо от типа и назначения данных для шифрования можно дать ряд общих рекомендаций по выбору криптоутилиты. Во-первых, в основе ее работы должен лежать зарекомендовавший себя алгоритм. В качестве «наградного знака» можно рассматривать, например, признание алгоритма госстандартом в какой-нибудь из стран. Если же автор софта - небольшая малоизвестная компания, то к ее заявлению о собственной уникальной методике следует отнестись критически. Ну и длина ключа, если используется симметричное шифрование, должна составлять хотя бы 128 бит. С этого «порогового» значения расшифровка данных без ключа при использовании современных средств не может быть выполнена за приемлемое для злоумышленника время.
Следует также остерегаться вариантов, при которых ключ представляет собой пользовательский пароль или создается генераторами «случайных» чисел[Возможно, кого-то это удивит, но значения, возвращаемые функцией random и ее аналогами в различных языках программирования, на самом деле являются не произвольным набором чисел, а определенной последовательностью]. Хорошее решение - генерация ключа на основе случайных движений мышью или нажатий клавиш на клавиатуре, когда измеряется время между каждыми соседними нажатиями/движениями (в миллисекундах), и если результат измерения четный, то очередному биту ключа присваивается нулевое значение, иначе - единица. Если длина ключа достаточно велика, барабанить пальцами по клавиатуре придется больше минуты. Полученные ключи необходимо спрятать, для чего используются различные носители - от дискет до токенов[Такой механизм создания ключа используется, к примеру, программой-клиентом популярной системы WebMoney].
В том, что защититься на 100% невозможно, убеждать, думаю, никого не нужно, и криптографические методы - не исключение. Производители софта для шифрования данных приводят потрясающие воображение цифры тестов - на расшифровку такого-то кода взломщику, работающему по восемь часов в день, понадобится столько-то тысяч лет и т. п. Однако здесь речь идет о том, что потенциальные похитители данных будут решать задачу в лоб, то есть заниматься перебором, чего на практике, конечно же, не происходит. Не стоит забывать, что даже в приложении, построенном на основе отлично зарекомендовавшего себя алгоритма, низкая надежность может проявиться на других уровнях. Работа криптософта - сложный процесс, в котором задействованы сразу несколько технологий: кодирование, ЭЦП, хэш-функции и др. Неудовлетворительные меры защиты хотя бы по одной из этих технологий ослабляют надежность системы в целом. Также далеко не во всех программах тщательно проработано удаление исходной информации для шифрования: сброс аппаратных буферов и кэш-памяти, очистка виртуальной памяти, временных файлов и т. д. В идеале файл подкачки вообще не должен использоваться, но в этом случае резко повышаются системные требования ПО, а разработчики не хотят терять часть (и немалую) клиентов среди владельцев маломощных компьютеров.