Одним из способов ШИФРАЦИИ данных является их архивация по
специальным алгоритмам, что позволяет к тому же и сэкономить место на
магнитном носителе. Правда, сами кодирующие блоки программ оказываются
слабым местом. Их исследование под отладчиком или дизассемблером
позволяет хакеру понять алгоритм шифрации и повторить его. Поэтому
особенно актуальна ЗАЩИТА ОТ ИССЛЕДОВАНИЯ. Важную роль здесь играет
стиль программирования. В отличие от общепринятых "наглядности" и
"структурности", для охранных механизмов следует применять
"изощренность", то есть такой стиль, который позволит получить сложный
и запутанный исполняемый модуль. Еще лучше - если он будет
саморазворачивающимся в процессе работы (программа "дописывает" свои
части, отсутствующие на винчестере). Очень полезными могут оказаться
приемы, о которых журнал "ТМ" рассказывал в 1986 - 1988 годах в
разделе "Клуб электронных игр" (использование кода оператора в
качестве операнда, набора констант по прямому назначению и как
подпрограммы, передача управления в середину сложной двух-трехбайтовой
команды, проход "своим ходом" через данные и другие хитрости, не
только экономящие память, но и запутывающие алгоритм).
Но это пассивная защита, а в качестве активной - рекомендуем
ПРЕСЕКАТЬ ПОПЫТКИ ИССЛЕДОВАНИЯ ИЛИ НЕСАНКЦИОНИРОВАННОГО "РАЗМНОЖЕНИЯ":
периодически определять контрольную сумму всех кодов образа задачи в
процессе работы (не "отрезан" ли какой-либо блок); сравнивать
свободную память с тем объемом ОЗУ, к которому программа привыкла или
приучена (не запущены ли паралельно резидентные "отмычки"); проверять
вектора прерываний (нет ли их перехватов); используя компьютерный
таймер, контролировать время прохождения отдельных частей (выявление
"остановов" и "потактового режима" отладчика).
Изучение операционных систем, аппаратных особенностей ЭВМ
позволяет выделить индивидуальные отличия и использовать их для
НАСТРОЙКИ НА КОНКРЕТНУЮ ПЭВМ, СИСТЕМУ или ДИСКЕТУ, что делает
программное обеспечение непереносимым без санкции разработчика.
Правда, в архитектуре большинства компьютеров не существует аппаратной
особенности, анализ которой помог бы выделить одну машину из серии
таких же. Зато динамические характеристики различных частей (вращение
винчестера и дисководов, скорость обращения к оперативной памяти и
реакции клавиатуры) и их соотношения между собой индивидуальны, хотя и
не очень устойчивы. Для повышения надежности рекомендуется
использовать аппарат математической статистики. Вы не знакомы с ней?
Мы снабдим вас необходимыми алгоритмами. Кстати, передаваемые в
комплекте с лицензионными программами специальные электронные
устройства, искусственно создающие аппаратную уникальность конкретной
машины (так называемые "заглушки", которые подключаются к одному из
разъемов ПЭВМ и по предусмотренному автором ПО запросу выдают
парольную комбинацию байт), не всегда эффективны. Хакеры, используя
принцип спаривания компьютеров, отслеживают на втором все передаваемые
"заглушкой" сигналы, чтобы затем для несанкционированных копий
повторить их программой-"псевдозаглушкой".
Простой царапиной можно пометить дискету - сделать точно такую же
на другой дискете невозможно, а охранный механизм по характеру и
местоположению сбойных блоков (или их отсутствию) легко определит
подмену. (Но и с этим хакеры успешно справляются: особый драйвер
дисковода перехватывает поступающую информацию и заменяет ее на
выявленную предварительным тестом с ключевой дискеты.)
Надежную ИДЕНТИФИКАЦИЮ ПОЛЬЗОВАТЕЛЯ можно провести по почерку
(скорость, привычки в использовании основных или вспомогательных
частей клавиатуры, "любимые" комбинации клавиш при альтернативных
вариантах, выполнение "сдвоенных" и "строенных" нажатий одной или
двумя руками и т.д.), по росписи с использованием мышки, с помощью
психологических тестов и паролей.