Блог → О защите компьютерных программ от вскрытия. Часть 6

Сегодня мы, продолжая тему о защите программных продуктов от вскрытия и несанкционированного копирования, поговорим подробно о выборе средств защиты. Какой именно способ защиты применять в каждом конкретном случае? На какие критерии опираться при осуществлении выбора? В этой заметке я выскажу некоторые свои соображения по данному вопросу. Прежде всего, хотелось бы выделить несколько (а если быть более точным, то их пять) моментов, которые видятся мне ключевыми.

1. Целесообразно применять такую защиту, стоимость снятия которой превышает сумму затрат на её установку и ущерба (недополученной прибыли) от присвоения защищённой информации третьими лицами.

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

3. В любом случае, целесообразно использовать комплексную систему защиты, включающую в себя юридические, организационные, аппаратные и программные методы.

4. Защита должна пересматриваться, а в идеале - автоматически и динамически модифицироваться, если есть существенная угроза её раскрытия, или же со временем, изменилась ценность собственно защищаемой информации.

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

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

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

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

2. На каком типе носителя должен находиться защищаемый модуль. Возможны следующие типы: несъёмный диск (HDD или как его ещё называют "винчестер"), съёмный диск, магнитная лента, дискета (два последних ныне почти не используются) и т.п.

3. Какие типы файлов можно защитить (исполняемые, оверлейные, текстовые, изображения, базы данных).

4. Использование дополнительной специальной аппаратуры (аппаратных средств) для реализации защитного механизма.

5. Какие особенности окружащей среды используются для защиты: несъёмные части компьютера, специальные устройства, съёмные участи компьютера (дискеты), особенности программной среды, информация вводимая оператором машины и т.п.

6. Возможность встраивания в другие программные системы.

Начнём со способности противостоять усилиям по снятию защиты. В инструкции ко многим пакетам, позволяющим производить защиту программных продуктов написано, что сложность снятия защиты по трудоёмкости сравнима с написанием большого комплекса программ. Но нужно иметь в виду, что это относится только к первой снимаемой защите такого рода, а снять защиту со второго пакета уже не составит большого труда. При оценке данного фактора должно учитываться старение средств защиты, связанное с постепенным узнаванием большим кругом программистов применяемых методов. Разумеется, старению можно противостоять, применяя способы, затрудняющие восстановление исходной программы на основании анализа защищённой, частым изменением версии средств защиты, проектируя средства изменяемые и настраиваемые в широком диапазоне конечным пользователем. Также оценивается возможность противостоять стандартным и широко распространенным средствам снятия защиты (программы копирования, дизассемблеры и т.п.).

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

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

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

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

Какой не должна быть защита? Очевидно, это будет защита, которая легко обходится совершенно легальными способами, к примеру такой, как ранние версии WatchDOG Security System, которые можно было легко обойти, просто загрузившись со своей дискеты. Также никуда не годится защита, методы снятия которой широко известны. Например, к таковым можно отнести систему Advanced Disk Management System: произвести замены (файл ADM.SYS, по смещению 0AF7h: 75h -> E8h, 0AF8h: 14h -> 0Ah; файл ADM.EXE, по смещению 05BAh: 75h -> EBh, 05BBh: 13h -> 0Ah) и программа будет пропускать любой пароль; при записи нуля в абсолютный сектор 2 (цилиндр 0, сторона 0) по смещению 01F1h (драйвер ADM.SYS не должен быть загружен) защита отключается; изменить MBR-сектор и программа NDD легко удалит программу ADM.

Пакет Advanced Disk Management - в сущности неплохая, но откровенно устаревшая система, позволяющая осуществлять разграничение доступа к дискам. Система широко известна (и это ещё мягко сказано), поэтому давно уже разработано множество программ, облегчающих работу с ней, а заодно помогающих снимать защиту: ADM_SAPER, SADM, ADMBRK и другие. В среде некоторых операционных систем, например DR-DOS 5.0, защита разделов диска вообще не обеспечивается. Также известно, что NDD (Norton Disk Doctor, если кто-то не догадался) хорошо "помогает" при отключении защиты систем PC-Vault (бывший РС-Lock) и Secret Lock/Unlock.

Ну, и под завязку, немного поговорим о стандартных средствах защиты. Некоторые популярные утилиты (такие как PCTOOLS и Norton Utilities) включают модули, позволяющие защитить файлы и диски от несанкционированного доступа и копирования, при этом используется шифрование и парольный метод доступа.

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