Журнал «Компьютерра» №43 от 22 ноября 2005 года
Шрифт:
Есть еще тайнопись - самый древний и, увы, ненадежный принцип шифрования, которым в детстве забавлялись многие читатели, изобретая собственные алгоритмы. Классика жанра - использование в качестве ключа букв алфавита в обратном порядке, когда в шифруемом тексте "а" заменяется на "я", "б" - на "ю" и т. д.
В более серьезных сферах применения криптографии тайнопись уже практически не используется, так как сильно уступает двум первым вариантам. Достаточно сказать, что сама необходимость сохранения алгоритма в тайне делает этот метод крайне ненадежным.
Независимо от типа и назначения
Следует также остерегаться вариантов, при которых ключ представляет собой пользовательский пароль или создается генераторами «случайных» чисел[Возможно, кого-то это удивит, но значения, возвращаемые функцией random и ее аналогами в различных языках программирования, на самом деле являются не произвольным набором чисел, а определенной последовательностью]. Хорошее решение - генерация ключа на основе случайных движений мышью или нажатий клавиш на клавиатуре, когда измеряется время между каждыми соседними нажатиями/движениями (в миллисекундах), и если результат измерения четный, то очередному биту ключа присваивается нулевое значение, иначе - единица. Если длина ключа достаточно велика, барабанить пальцами по клавиатуре придется больше минуты. Полученные ключи необходимо спрятать, для чего используются различные носители - от дискет до токенов[Такой механизм создания ключа используется, к примеру, программой-клиентом популярной системы WebMoney].
В том, что защититься на 100% невозможно, убеждать, думаю, никого не нужно, и криптографические методы - не исключение. Производители софта для шифрования данных приводят потрясающие воображение цифры тестов - на расшифровку такого-то кода взломщику, работающему по восемь часов в день, понадобится столько-то тысяч лет и т. п. Однако здесь речь идет о том, что потенциальные похитители данных будут решать задачу в лоб, то есть заниматься перебором, чего на практике, конечно же, не происходит. Не стоит забывать, что даже в приложении, построенном на основе отлично зарекомендовавшего себя алгоритма, низкая надежность может проявиться на других уровнях. Работа криптософта - сложный процесс, в котором задействованы сразу несколько технологий: кодирование, ЭЦП, хэш-функции и др. Неудовлетворительные меры защиты хотя бы по одной из этих технологий ослабляют надежность системы в целом. Также далеко не во всех программах тщательно проработано удаление исходной информации для шифрования: сброс аппаратных буферов и кэш-памяти, очистка виртуальной памяти, временных файлов и т. д. В идеале файл подкачки вообще не должен использоваться, но в этом случае резко повышаются системные требования ПО, а разработчики не хотят терять часть (и немалую) клиентов среди владельцев маломощных компьютеров.
Во многих программах не учитывается влияние «окружающей среды», которая может критически повлиять на безопасность. В частности, нередко считается, что доступ к компьютеру, на котором установлен криптософт, закрыт для посторонних. Между тем это почти всегда не соответствует истине. Выход в данном случае - программная поддержка аппаратных ключей, снабженных собственной защитой (например, смарт-карт с PIN-кодом). Ведь на самом компьютере могут находиться вредоносные программы, включая кейлоггеры, и если злоумышленник узнает пароль, вводимый пользователем для шифрования данных, он может легко получить
Переход на безбумажный документооборот, интернет-платежи и онлайн-переписку породил ряд проблем. Одной из главных является замена стандартной подписи цифровым вариантом, аналогичным по своей правомерности традиционному. Во многих случаях он является единственным средством доказательства подлинности и целостности передаваемого по Сети документа. Среди важных свойств собственноручной подписи можно отметить ее аутентичность, неподделываемость, непереносимость, а значит - неоспоримость и неизменность заверенного документа.
Для создания цифровой подписи (ЦП), обладающей всеми вышеперечисленными признаками, используются три основных метода. В первом случае электронный документ шифруется симметричным алгоритмом, а адресат и отправитель документа одинаково доверяют некоему третьему лицу. Под авторизацией здесь понимается шифрование документа секретным ключом и передача его (ключа) посреднику. Во втором случае используются асимметричные алгоритмы, и под подписанием документа понимается шифрование ключом отправителя. Наконец, в третьем случае, самом распространенном, шифрование окончательного результата обработки документа хэш-функцией производится при помощи симметричного алгоритма. Есть и ряд других схем построения ЦП, применяемых для решения специфических задач (например, групповая подпись).
В 1991 году в США появился федеральный стандарт цифровой подписи - DSS (Digital Signature Standard), в основе которого лежит алгоритм DSA. В России тоже разработан стандарт на процедуры выработки и проверки электронно-цифровой подписи - ГОСТ Р 34.10-94. Описанная в нем схема ЦП во многом напоминает DSA. Многие программные приложения, работающие с открытыми сетями, имеют встроенные средства ЦП (например, почтовые клиенты). Кроме того, в настоящее время имеется большой выбор прикладного софта, позволяющего реализовать технологию для различных нужд - от частных до коммерческих.
Но бросим бесплодные попытки объять необъятное и остановимся на нескольких наиболее распространенных утилитах. Выбор рынка редко оказывается случайным, а потому рассматриваемые продукты можно назвать золотой серединой между надежностью/функциональностью и ценой.
Криптотехнология PGP (Pretty Good Privacy), использующая асимметричное шифрование, появилась в 1991 году и стала чрезвычайно популярной благодаря своим богатым возможностям и свободному распространению. В настоящее время доступны для скачивания исходники восьмой версии (последняя - девятая). PGP-софт в основном используется для шифрования электронных писем, передающихся по открытым каналам связи. К тому же технология гарантирует аутентичность сообщения - невозможность его отправки за чужой подписью. Программная линейка, начиная с девятой версии, претерпела некоторые изменения.
Так, бесплатная утилита PGP Freeware обладает минимальной конфигурацией, которой, впрочем, вполне достаточно для «домашних» условий. В продукт включено два базовых компонента: PGPkeys (менеджер ключей) и PGPmail (средство шифрования/подписания/ уничтожения данных). Третий не менее важный элемент - PGPdisk для создания зашифрованного файла-контейнера, о котором мы поговорим чуть ниже, - увы, отсутствует. Кстати, если не оплатить «более профессиональные» версии в течение месяца, то их функциональность будет как раз соответствовать PGP Freeware.