<< Предыдущая

стр. 6
(из 39 стр.)

ОГЛАВЛЕНИЕ

Следующая >>

Когда защиты
слишком много
Один из важных вопросов, нуждающихся в рассмотрении, заключается
в том, стоит ли усиливать защиту, если для этого есть хоть какая-то воз-
можность, или может возникнуть ситуация, в которой усиление защиты
пойдет не на пользу, а во вред?
До ответа на этот вопрос стоит отметить, что существуют две принципиаль-
но разных категории продуктов, использующих средства защиты информа-
ции. К первой категории относятся такие продукты, для которых обеспече-
ние информационной безопасности — первоочередная задача. Во вторую
категорию попадают прикладные продукты из любых других, явно не свя-
занных с обеспечением безопасности областей, но по тем или иным причи-
нам нуждающиеся в средствах защиты.
При разработке решений, относящихся к первой категории, все должно
быть нацелено именно на обеспечение максимальной степени защиты,
пусть даже в ущерб другим характеристикам. Такие параметры, как удобство
использования и быстродействие, являются несущественными, если задача
обеспечения безопасности не решена полностью и простора для компро-
миссов здесь нет. Ненадежное с точки зрения безопасности решение не
должно использоваться, даже если оно в 10 раз удобнее и в 100 раз быстрее,
чем любая доступная альтернатива.
С продуктами, относящимися ко второй категории, все обстоит иначе. Для
них обеспечение безопасности не является основной задачей. Например,
Microsoft Word поддерживает возможность шифрования документов, но при
этом Word — текстовый редактор, а не средство для защиты файлов с по-
мощью криптографии. Поэтому к нему предъявляются иные требования,
чем к системам обеспечения безопасности.
Прежде всего, обеспечение защиты не должно создавать значительных не-
удобств. Если на дверь квартиры установить 12 замков, злоумышленнику,
наверное, будет труднее проникнуть внутрь. Однако человеку, живущему
в этой квартире, придется слишком много времени тратить на отпирание
30 Часть I. Кому нужна защита?

и запирание всех замков, что с большой вероятностью приведет к недоволь-
ству существующим положением вещей.
Кроме того, в процессе эксплуатации изделия могут случаться непредвиден-
ные или незапланированные сбои. Любой замок в какой-то момент может
перестать работать. Причины могут быть совершенно разные: заводской
брак, отсутствие смазки или ржавчина, сточившийся или погнутый ключ и
даже просто проходящий мимо школьник, ради развлечения засунувший
спичку в механизм замка. Но результат будет один — замок не удастся отпе-
реть, и человек не сможет попасть в свою квартиру, хотя имеет на это пол-
ное право и даже не терял ключи. Интуитивно понятно, что чем больше
замков (или уровней защиты) используется, тем больше вероятность отказа
хотя бы одного из них. Но отказа любого элемента системы достаточно,
чтобы вся система перестала функционировать.
Еще один аспект — эффект "слабого звена". Общая степень защищенности
системы определяется уровнем безопасности, который обеспечивает самый
слабый узел защиты. Можно устанавливать сколько угодно дополнительных
замков в деревянную дверь, но степень защиты все равно будет определять-
ся прочностью двери — самого слабого элемента.
Замки всего лишь пример из реального мира. Но пространство информаци-
онных технологий подчиняется тем же самым принципам, и найти схожие
примеры совсем несложно.


3.1. Неудобства для пользователя
Один из распространенных способов защиты программ от несанкциониро-
ванного копирования (тиражирования) связан с использованием регистра-
ционного кода, который пользователь должен ввести в окне регистрации
для получения работоспособной версии программы. Регистрационный код,
как правило, вычисляется автором (владельцем прав) или распространите-
лем (продавцом) программного продукта на основании предоставленной
пользователем информации (например его имени и названия компании,
в которой он работает). Процедура вычисления может быть основана на
некотором секретном алгоритме, разработанном автором, или на крипто-
графии с открытым ключом. В обоих случаях в программе должен присутст-
вовать обратный алгоритм, позволяющий проверить правильность регистра-
ционного кода. Но в случае применения криптографии с открытым ключом,
зная алгоритм проверки, математически сложно полностью воссоздать алго-
ритм вычисления регистрационного кода. А при использовании секретного
алгоритма чаще всего обращение алгоритма проверки после его извлечения
из программы не является математически сложной задачей.
Глава 3. Когда защиты слишком много 31_

Для обеспечения заданного уровня стойкости необходимо использовать
ключи не короче определенной длины. Но использование длинных ключей
может создавать неудобства пользователю.

Длинные регистрационные ключи
В случае применения криптографии с открытым ключом существует минималь-
ный размер блока, который получается в результате вычисления значения
криптографической функции. Для алгоритма RSA-1024 (с ключом длиной
1024 бита) размер зашифрованного блока составляет также 1024 бита или
128 байт. Так как с клавиатуры, в общем случае, можно ввести не всевозмож-
ные символы, то двоичные данные, полученные в результате шифрования,
преобразуют в текст, например с помощью алгоритма MIME64. При этом каж-
дые 6 входных бит преобразуются в 8, т. е. размер блока данных увеличивает-
ся на одну треть и превращается из 128 в 171 символ. Даже если максимально
использовать все 95 символов ASCII, вводимых со стандартной клавиатуры,
произвольное двоичное сообщение длиной 128 байт удастся закодировать
только в 156 символов.

Таким образом, пользователь, не имеющий доступа к Интернету, может ока-
заться перед необходимостью ввести с клавиатуры присланную ему по факсу
или бумажной почтой строку длиной более 150 символов. Более того, строка
будет состоять не из простых для восприятия слов, а из бессмысленной смеси
всевозможных печатных знаков, в которых очень легко ошибиться. А если поль-
зователь, находящийся вдали от факсимильного аппарата, захочет, чтобы ему
продиктовали его регистрационный код по телефону? Вряд ли человек, про-
шедший через подобную процедуру, порекомендует кому-нибудь из своих дру-
зей приобрести лицензию на такую программу.




3.2. Снижение производительности
Производительность (скорость выполнения) тоже довольно часто страдает,
если защищаемая программа злоупотребляет функциями зашиты.

Чрезмерное потребление процессорного времени
В одной из программ, играющих в Gomoku (по-другому TicTacToe— крестики-
нолики на большом поле), для защиты от исследования применялся следую-
щий подход. Программа была упакована и зашифрована, и при загрузке в па-
мять сама себя расшифровывала и подготавливала к работе. При этом вместо
прямых вызовов функций из библиотек Windows, таких как kernel32.dll,
user32.dll или gdi32.dll, выполнялись вызовы небольших процедур. Каждая из
32_ Часть /. Кому нужна защита?

этих процедур вычисляла контрольную сумму определенного фрагмента про-
граммы в памяти и на основании полученного значения вычисляла адрес биб-
лиотечной функции, которой необходимо передать управление. Если в про-
грамме происходили малейшие изменения, например в отладчике задавалась
точка останова путем изменения одного байта, контрольная сумма оказыва-
лась иной и переход осуществлялся по неверному адресу.

Однократное выполнение подсчета контрольной суммы не занимает слишком
много времени. Однако при отображении элементов интерфейса обычно вызы-
вается много библиотечных функций подряд. Все это приводило к тому, что
программа выводила данные на экран с видимыми невооруженным глазом за-
держками.

Стоит отметить, что алгоритм просчета оптимального хода в игре не требует
обращения к Win32 API, а значит, применение такой защиты не сказывается на
времени, необходимом компьютеру для выбора лучшего варианта. В противном
случае программой с подобной защитой было бы невозможно пользоваться.


Также задержки в процессе выполнения часто свойственны системам, ис-
пользующим аппаратные ключи для защиты от несанкционированного ти-
ражирования. Дело в том, что разработчики ключей защиты любят вводить
задержку в аппаратную часть ключа для того, чтобы снизить скорость и эф-
фективности атаки методом перебора. Также разработчики рекомендуют
выполнять случайные, фиктивные обращения к ключу с целью затруднить
построение компактной таблицы для эмуляции ответов ключа. Если про-
грамма при проверке корректности защиты делает большое число последо-
вательных обращений к ключу, суммарное время задержки оказывается
весьма ощутимым, и в некоторых "особо выдающихся" программах пользо-
вателя заставляют ждать несколько секунд, пока не завершатся все запросы
к ключу. Если же используется ключ, установленный не на локальном ком-
пьютере, а где-то в сети, ко времени ожидания ответа от ключа добавляется
время, затрачиваемое на поиск сервера, обслуживающего ключ, и обмен
с ним запросами и ответами. К счастью, большое количество обращений
к ключу обычно выполняется только при запуске программы, а в процессе
работы производятся только отдельные обращения, но даже единичное дли-
тельное ожидание при запуске программы явно не доставляет пользователю
особой радости.


3.3. Сбои в системе защиты
Увеличение сложности защитного механизма, возможно, способно повысить
уровень защищенности и снизить вероятность несанкционированного дос-




I
Глава 3. Когда защиты слишком много 33

тупа до пренебрежимо малой величины. Но при этом резко возрастет веро-
ятность отказа в доступе легитимному пользователю.
В Интернете в форумах, посвященных защите информации, иногда появля-
ются люди, считающие, что им удалось придумать новый, очень хороший
способ защиты от несанкционированного распространения и использования
программных продуктов. Грубо метод описывается примерно следующими
действиями:
G при установке программы необходимо собрать как можно больше ин-
формации о среде функционирования (модель и частота процессора,
имя производителя материнской платы, серийный номер жесткого диска
и т. д.);
• в различные области файловой системы (INI-файлы, каталог Windows,
случайно выбранные каталоги на диске) и системные области операци-
онной системы (реестр Windows) заносятся записи-метки, позволяющие
контролировать неизменность среды функционирования и целостность
других меток;
П при каждом запуске программы встроенная система защиты произволь-
ным образом выбирает алгоритм проверки корректности одной или
нескольких меток, т. е. проверяется целостность метки и соответствие
текущих параметров среды функционирования сохраненным в метке
значениям;
• если отклонение от идеала (состояния, в котором была система сразу по-
сле установки) превышает некоторый допустимый предел, то включается
ответная функция защиты. Причем совершено не обязательно пользова-
телю будет сообщено о нарушении зашиты — программа может казаться
вполне работоспособной, но некоторые операции будут выполняться
неадекватно, например па экране будет выводиться не все, что должно,
а при печати наоборот появятся лишние объекты.
Все эти меры принимаются для того, чтобы максимально усложнить потен-
циальному взломщику жизнь. Особой изюминкой считается последняя
часть. Ведь вполне логично, что взломанная программа не обязана работать
правильно.
По большому счету, на схожих принципах работает почти любая защита от
несанкционированного тиражирования, использующая привязку к компью-
теру. Вся разница только в количестве примененных приемов, затрудняю-
щих деактивацию защитных механизмов.

Ложное срабатывание защиты
Современные вычислительные системы стали настолько сложны и разнооб-
разны, что гарантировать безошибочность выполнения в них даже самых про-
Часть I. Кому нужна защита?
34

стых программ невозможно. Основываясь на этом утверждении можно предпо-
ложить, что при выполнении любой программы рано или поздно произойдет
какой-нибудь сбой. И чем сложнее программа (или ее защита), тем больше ве-
роятность возникновения ошибки.

Кроме того, на компьютере, где функционирует защищенная программа, может
быть установлено множество других программ, и их поведение в общем случае
почти безопасно, но совершенно непредсказуемо— только авторы этих про-
грамм могут догадываться, что и как должно происходить при выполнении их
кода. А компьютер, зараженный вирусом, может совершать и деструктивные
действия.

И наконец, за компьютером сидит пользователь— человек, который имеет
право ошибаться, может сознательно или случайно что-нибудь изменить в ок-
ружении защищенной программы и вообще не обязан быть экспертом в вычис-
лительной технике.

Все приведенные выше особенности среды функционирования защищенной
программы можно свести к одному утверждению: даже корректно установ-
ленная и лицензированная программа по многим причинам может работать
не так, как предполагают разработчики. То же самое относится и к защитным
механизмам, хотя есть и небольшое отличие. Если не работает какая-то
функция в самой программе, все остальные функции остаются доступными.
Если же происходит ложное срабатывание механизмов защиты и легальному
пользователю отказывают в доступе, работать с программой становится не-
возможно в принципе.

Когда пользователь замечает, что программа ведет себя не так, как ожидает-
ся, он обращается в службу технической поддержки. И в задачу этой службы,
как правило, входит определить, действительно ли при выполнении происхо-
дит ошибка или пользователь просто чего-то не понял. Если же факт возник-
новения ошибки подтвержден, необходимо найти и устранить порождающие
ее причины.

И тут служба технической поддержки оказывается перед сложной задачей —
как по полученной от пользователя (и почти всегда неполной) информации оп-
ределить, что же случилось на самом деле? Если нарушение защиты проявля-
ется как неадекватное поведение программы, то с чем столкнулся пользова-
тель: с реакцией защиты или действительно с ошибкой в программе? Даже
если пользователь получает недвусмысленное сообщение о нарушении защи-
ты, но сама защита очень разветвленная и многоуровневая, как выявить истин-
ную причину сбоя, если у других людей все работает, а у него — нет?
Глава 3. Когда защиты слишком много 35


3.4. Материальные затраты пользователей
Когда человек приобретает программный продукт, защищенный от несанк-
ционированного тиражирования, он хочет купить только сам продукт, а за-
щиту ему навязывают. Более того, он за эту защиту еще и вынужден пла-
тить — аппаратный ключ, идущий в комплекте с программой, стоит даже
в небольших партиях несколько десятков долларов. Разумеется, разработчик
в каждую продаваемую копию закладывает стоимость ключа. Если защита
не использует аппаратных элементов, все равно на ее разработку или при-
обретение были затрачены материальные ресурсы, и эти затраты необходи-
мо окупить. Следовательно, стоимость продукта для конечного пользователя
все равно повышается.


<< Предыдущая

стр. 6
(из 39 стр.)

ОГЛАВЛЕНИЕ

Следующая >>