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