Защита с помощью пароля
Одним из самых простых вариантов представляется установка парольной защиты в защищаемую программу. При первом запуске программа запрашивает пароль и блокирует свою дальнейшую работу до корректного ввода пароля. В целях улучшения качества защиты пароль можно хэшировать. Существует несколько разных стратегий, по которым можно реализовать парольную защиту. Можно намертво «зашить» пароль внутри самой программой, но такой вариант на практике оказывается очень слабым. Злоумышленнику достаточно раздобыть одну копию программы и затем размножить ее. Каждая копия, снабженная все тем же паролем, будет вполне работоспособной. Более предпочтительным является вариант с хэшированием пароля. В этом случае каждая программа сопровождается своим собственным паролем и хэшем. При регистрации (активации) пользователь вводит пароль и хэш. Программа в свою очередь вырабатывает хэш от введенного пароля и сравнивает с введенным хэшем. Если они совпадают, регистрация считается успешной, в противном случае нет.
Достоинства метода: простота реализации, отсутствие аппаратной части.
Недостатки метода: легко взламывается.
Взлом этого метода защиты основан на дизассемблировании защищаемой программы. Злоумышленнику вполне достаточно найти фрагмент программы, отвечающий за проверку пароля и нейтрализовать его.
4.3.2 Привязка к местоположению на диске
Если требуется исключить копирование программы с жесткого диска на другой жесткий диск, её можно привязать к номеру кластера или сектора, с которого начинается файл программы на диске. Привязка осуществляется следующим образом. Специально подготовленная установочная программа открывает файл с рабочей программой и по таблице открытых файлов находит начальный номер кластера. Это число, являющееся своеобразным ключом, записывается установочной программой в определенное место файла рабочей программы. Рабочая же программа после запуска, прежде всего, выполняет ту же операцию: определяет начальный адрес, а затем сравнивает его с ключом. Если числа совпадают, программа приступает к выполнению своей содержательной части, если не совпадают – аварийно завершается. При копировании программы на другой диск (или даже на тот же самый) она окажется расположенной в другом месте, и номер кластера, записанный установочной программой, уже не будет соответствовать реальному адресу файла, в то же время с помощью установочной дискеты программу не трудно установить на любом диске.
4.3.3 Запись ключа за логическими пределами файла
Как известно, файловая система FAT выделяет место под файлы целыми кластерами, в результате чего за логическим концом файла практически всегда имеется свободное пространство (до конца кластера). При копировании файла на другой диск реально переносятся только байты, соответствующие самому файлу, так как число копируемых байтов определяется логической длиной файла. Байты последнего кластера файла, находящиеся за логическими пределами файла, не копируются. Если в них записать ключ, то при копировании ключ исчезнет. После записи рабочей программы на жесткий диск, она устанавливается с помощью специальной установочной программы. Установочная программа открывает файл с рабочей программой, перемещает указатель файла на его конец и записывает ключ за прежними пределами файла. Затем файл укорачивается до прежней длины. В результате ключ оказывается физически прилегающим к файлу, но логически за его пределами. При использовании этого метода установочная программа должна перед записью ключа проанализировать длину файла. Если файл занимает целое число кластеров, его предварительно следует удлинить так, чтобы он занял часть следующего кластера, иначе некуда будет записать ключ. То же получится, если, скажем, при длине ключа 2 байта файл занимает целое число кластеров минус 1 байт. В этом случае файл также требует удлинения. Рабочая программа после запуска выполняет те же операции, что и установочная (за исключением удлинения файла) и проверяет, записан ли известный ей ключ за концом файла.
4.3.4 Привязка к параметрам среды
Можно осуществлять защиту файла (т. е. выявлять факт незаконного копирования файла на другой компьютер) используя так называемую "привязку к параметрам среды" (т.е. к определенным характеристикам аппаратной и программной части ЭВМ). Для реализации этого метода обычно используют так называемый "пристыковочный модуль" (ПМ).
Модуль – это часть кода, которая получает управление либо перед началом выполнения основной программы, либо после её завершения (хотя, в принципе, возможны ситуации, когда этот модуль получает управление не один раз за время отработки программы).
Требования к ПМ:
-подключение к файлу любого размера;
-исходный текст (код) защищаемого файла после подключения ПМ трудно отделить от защиты;
-ПМ не должен накладывать ограничений на защищаемый файл.
Характеристики, проверяемые ПМ:
-динамические;
-статические.
Динамические характеристики – это, например, скорость вращения жесткого диска (HDD), точная частота работы микропроцессора (CPU).
Недостаток динамических характеристик: сильная зависимость этих характеристик от температуры, влажности, напряжения, частоты сети, износа отдельных частей ЭВМ.
Статические характеристики – это, например:
- тип микропроцессора в совокупности с разрядностью шины данных;
- тактовая частота работы микропроцессора (с точностью до единиц мегагерц);
- тип ПЭВМ;
- дата регистрации BIOS;
- сигнатура производителя BIOS и её адрес в оперативной памяти, контрольная сумма байтов BIOS;
- размер основной оперативной памяти;
- размер расширенной памяти;
- размер дополнительной отображаемой памяти;
- тип клавиатуры;
- тип видеоадаптера;
- тип и интерфейс "мыши";
- тип и число НЖМД;
Достоинства метода: простота реализации, отсутствие аппаратной части.
Недостатки метода: легко взламывается.
Проблема с использованием этого метода заключается в том, что с одного и того же лицензионного диска можно произвести множество работоспособных инсталляций. Проблема решается путем усиления защиты. Например, программа при запуске может не только сверять конфигурацию системы, но также и проверять наличие инсталляционного диска в приводе CD-ROMа. Правда, такой метод приведет к дополнительным накладным расходам и фактически является комбинацией метода привязки к конфигурации и метода защиты с помощью ключевого CD/DVD.