Учебные вопросы:
1. Юридические и организационные меры защиты.
2. Программно-аппаратные методы и средства защиты.
3. Защита программ и ценных баз данных от несанкционированного копирования и распространения.
Вопрос 1. Юридические и организационные меры защиты
Юридические средства защиты сводятся, в основном, к административной и уголовной ответственности за умышленное создание и распространение вируса или «троянских коней» с целью нанесения ущерба Трудность их применения состоит: в доказательстве авторства умышленности создания таких программ. Так как автора «троянского коня» найти легче, то юридическое преследование их авторов проще юридического преследования авторов вирусов, но и здесь встреча большие трудности.
Отметим некоторые законы, применяемые в США, Великобритании, Германии и Франции для борьбы с компьютерными преступлениями, под действие которых подпадают многие распространители вирусов и "троянских коней":
– Закон о поддельных средствах доступа, компьютерном мошенничестве и злоупотреблении (США);
– Федеральный закон о частной тайне (США):
– Закон о предупреждении экономических преступлений (Германия);
– Закон об авторском праве (Германия);
– Федеральный закон о защите данных (Германия);
– Закон об авторском праве (Великобритания);
– Закон о защите данных (Великобритания);
– Закон об обработке данных, о файлах данных и личных свободах (Франция).
Соответствующие статьи введены в уголовные кодексы ряда стран.
Вышеперечисленные законы позволяют вести достаточно эффективную борьбу с изготовителями вирусов и "троянских коней".
Все организации, где, так или иначе, имеет место проблема вирусов, можно разделить на две группы: разрабатывающие и эксплуатирующие программное обеспечение. В случае смешанных организаций для успешной борьбы с вирусами и "троянскими конями" необходимо стремиться разделить функции подразделений, занимающихся разработкой и эксплуатацией. В свою очередь, вирус или троянский конь может поступать извне или создаваться внутри подразделения.
В подразделениях, связанных с эксплуатацией (использованием) программного обеспечения, можно и необходимо применять более жесткие административные и организационные меры по сравнению с разрабатывающими подразделениями. Это чаше всего оказывается возможным, так как в эксплуатирующих подразделениях собственная разработка программного обеспечения обычно не проводится, и новые программы они получают от разработчиков. С другой стороны, наличие вируса или "троянского коня" в эксплуатируемой системе зачастую приводит к гораздо более тяжелым последствиям, так как здесь обрабатывается реальная информация.
Рассмотрим способы проникновения вируса или "троянского коня" в эксплуатируемую систему:
1) поступают вместе с программным обеспечением, предназначенным для последующего использования в работе. Вероятность такого проникновения вирусов и "троянского коня" можно свести практически к нулю, если разработать правильные процедуры приема программ к эксплуатации и контроля за внесением изменений и появлением новых версий. Процедура приемки должна быть достаточно продолжительной и всесторонней, в нее должны быть включены специальные операции по провоцированию известных вирусов и "троянских коней";
2) приносятся персоналом с программами, не относящимися к эксплуатируемой системе. Вероятность такого проникновения можно уменьшить путем запрета на приобретение и запуск программ, исключая те, которые прошли специальную процедуру проверки. К сожалению, этот запрет не всегда выполняется. Возможен частичный запрет на использование посторонних программ на определенном оборудовании;
3) преднамеренно создаются обслуживающим персоналом. Вероятность создания вируса или "троянского коня" можно существенно уменьшить, если с достаточным вниманием относиться к контролю за деятельностью персонала вычислительных центров, разработчиков программного обеспечения и конечных пользователей. Одним из наиболее важных условий, способствующих снижению мотивации в создании вирусов и "троянских коней" внутри организации, является хороший моральный климат и правильная кадровая политика, а также справедливая оплата выполняемых работ в соответствии с их качеством и количеством.
Источник вируса легко выявляется, если в эксплуатируемой системе производится разграничение доступа пользователей к привилегированным функциям и оборудованию, присутствуют надежные средства регистрации процессов всего технологического цикла, включая регистра внутримашинных процессов. Особенно важными являются разграничения доступа в вычислительных сетях.
Для быстрого устранения последствий заражения в каждой организации должны иметься копии используемого программного обеспечения. Надежная связь со специалистами из разрабатывающего подразделения из собственной группы позволит быстро разобраться в экстремаль ситуации и выработать подходящие средства для ее устранения.
Для разрабатывающих подразделений, по сравнению эксплуатирующими, характер применения административных организационных мер должен быть другим, поскольку чрезмерное администрирование приводит к существенному снижению темпов качества разработки программных систем. При существующей ситуации программисты-разработчики постоянно сталкиваются с вирусами и "троянскими конями" из-за копирования друг у друга общесистемного программного обеспечения. Такое копирование является в большинстве случаев единственным способом повышения эффективности программиста.
Возможны два пути проникновения вируса или "троянского кон разрабатывающие подразделения:
– вместе с программным обеспечением, скопированным у других программистов;
– преднамеренное создание вируса программистом. Поскольку принципиально невозможно исключить появление вирусов в разрабатывающих подразделениях, административные и организационные меры должны быть направлены на снижение вероятности их появления. Все они регламентируют работу с поступающим программным обеспечением, которое должно проходить через этап предварительного контроля. На этом этапе осуществляется:
– карантин на вновь поступающие программные средства с провоцирования появления возможного вируса или "троянского коня";
– контроль программных средств на известные типы вирусов.
Этап предварительного контроля может быть не оформлен о организационно, но должен присутствовать обязательно, и может проходить на рабочем месте каждого программиста.
Большинство антивирусных программ просты в использовании. Минимальный их комплект должен находиться на каждом компьютере. Если регулярно происходят крупные поставки программного обеспечения, то выделяется компьютер, специально предназначенный для проверки вновь поступающих программ.
Из состава квалифицированных программистов создается "антивирусная" группа, ответственная за планирование и реализацию соответствующих мероприятий. При оценке работы этой группы следует в большей степени учитывать общий ущерб, нанесенный программам, чем число успешно ликвидированных вирусов и "троянских коней" (по аналогии с оценкой труда пожарных).
В разрабатывающих подразделениях рекомендуется применять следующие меры, снижающие вероятность появления и распространения вирусов и "троянских коней":
– разграничение доступа программистов к оборудованию, в том числе к сетевому. На ЭВМ коллективного пользования желательно разделить между пользователями совместно используемые ресурсы. Например, разбить винчестер на логические диски, а если такой возможности нет, то каждому из пользователей необходимо завести свой каталог и только в нем вести работы. По окончании работы каждый оператор обязан очистить оперативную память и совместно используемые участки диска от своих программ и данных;
– запрет на использование некоторых видов программ, никогда не применяемых для работы (например, игровых). Эта мера, против которой теоретически никто не возражает, практически нигде не выполняется;
– наличие достаточного числа резервных копий программного обеспечения. После окончания проверки программное обеспечение должно быть скопировано, защищено от записи и помещено в соответствующий фонд;
– наличие у каждого программиста средств, необходимых для диагностики и борьбы с вирусами и "троянскими конями";
– проведение семинаров с целью обучения методам борьбы с вирусами и "троянскими конями".
Возможно создание вируса или "троянского коня" внутри разрабатывающего подразделения. Контроль над этим процессом затруднен, так как любой программист, достигнув определенной квалификации, в состоянии сделать это. Как и в эксплуатирующих подразделениях, основные средства, направленные против создания вирусов и "троянских коней" в данном случае – хороший моральный климат в коллективе и оплата, соответствующая проделанной работе. Необходимо создавать и поддерживать в коллективе общественное мнение, осуждающее создание и запуск вирусов и "троянских коней".
Вопрос 2. Программно-аппаратные методы и средства защиты
В современных персональных ЭВМ реализован принцип разделения программных и аппаратных средств. Поэтому программные вирусы и «троянские кони» не могут эффективно влиять на аппаратуру, исключением случаев, когда разработчику вируса удается:
– подобрать частоту обращения к устройствам ЭВМ, имеющим движущиеся части (диски, печать), близкую к резонансной;
– усилить яркость части экрана для прожигания люминофора;
– зациклить программу так, чтобы она использовала минимальное число оборудования (например, одну микросхему) с целью его разогрева и вывода из строя.
Такие способы воздействия на аппаратуру являются маловероятными, и поэтому аппаратные средства могут стать верным помощником в борьбе с вирусами и "троянскими конями".
Вирус или "троянский конь" может портить информацию, содержащуюся в КМОП (СМОS) памяти компьютеров и влияющую загрузку операционной системы. Эта память питается от батареи, информация сохраняется при выключении питания. В случае обнаружения такого эффекта необходимо произвести повторную начальную установку параметров компьютера с помощью процедуры SETUP. Эта процедура значительно упростится, если параметры будут записаны заранее.
Перечислим некоторые из аппаратных методов защиты:
– блокировка возможности записи путем заклеивания (закрывания) отверстия защиты записи дискеты. При отсутствии наклеек можно использовать любую липкую ленту или просто закрывать отверстие достаточно длинной бумажкой, вставляя ее вместе с дискетой в прорезь дисковода. Данный способ прост и надежен, но имеет ограниченное применение. Ограниченность объясняется следующими причинами: большинство программных систем работают с винчестером, а не с гибкими дисками, системы, работающие с гибкими дисками, часто сами осуществляют запись на дискету;
– физическая блокировка ключом клавиатуры ЭВМ – этот метод похож на способ разграничения доступа административными мерами. Как и все запретительные меры, лишь частично разрешает проблему. Применим в сочетании с другими методами;
– форматирование диска и перезагрузка операционной системы с восстановлением программ с незараженных копий. Недостатками этого метода являются потеря файлов, у которых нет незараженных копий, и значительные потери времени. При наличии копий и времени – это самый надежный способ борьбы с вирусами, но если повреждение информации произошло от невыявленных вирусов или "троянских коней", которые хранятся в копиях программ, то и такая радикальная мера может не привести к успеху.
Следующие способы основаны на аппаратной поддержке операционной системы и ее контролирующих средств:
– запрет или регистрация попыток записи в файлы операционной системы и в области памяти, занятые системной информацией;
– установление приоритета в обработке программ, составляющих операционную систему и антивирусных средств, иерея программами пользователей:
– разделение областей памяти, в которых работают программы, невозможность записи в чужую область памяти:
– выделение некоторых возможностей ЭВМ, которые могут быть реализованы только программами операционной системы.
К сожалению, аппаратная поддержка контролирующих средств отсутствует в персональных ЭВМ, совместимых с IВМ РС, что создает хорошие предпосылки для распространения вирусов и действия "троянских коней".
Некоторые западные фирмы приступили к созданию противовирусных компьютеров, у которых есть специальная аппаратная поддержка против вирусов и "троянских коней".
По сообщению журнала "Computer age" (январь 1989 г.) фирма “American Computer Security Industries” (г. Нэшвилл, штат Теннеси, США) представила первый надежно защищенный противовирусный компьютер, названный "Immune system" ("Иммунная система"). Это персональный компьютер на базе процессора i-80286, работающий в операционной системе MS-DOS. Этот компьютер обладает иммунитетом от вирусной атаки, а также полным набором средств, предохраняющих его и хранящиеся в нем данные от любого внешнего или внутреннего вмешательства.
Фирма "Zeus" поставляет дополнительную плату Immunetec РС (цена 295 дол.) для установки в компьютерах, совместимых с IBM РС. С помощью этой платы, в процессе загрузки операционной системы проверяются MBR, Boot-сектор и системные файлы. Плата совместима с сетями Nowel, ЗСОМ, Token Ringи позволяет предотвращать загрузку и устанавливать уровень доступа.
Фирма "Micronyx" поставляет дополнительную плату Trispan (цена 895 дол.). С помощью платы производится контроль зараженности системных файлов, контроль доступа, шифрование данных и регистрация попы обращения к данным. Плата может использоваться в сетях.
Фирма "БИС" (г. Донецк) выпускает плату Port Watch Card, которая вместе с программой IWP предупреждает об опасных действиях с портами контроллеров жестких и гибких дисков, а также о записи в память CMOS.
В настоящее время на рынке имеется довольно большое число специальных антивирусных программных средств. На Западе создано и предлагается большое число программных средств антивирусного направления, однако их рынок характеризуется определенной спецификой. Крупные фирмы-производители программного обеспечения (такие, как "Microsoft", "Lotus" и "Ashton-Tate") явно отсутствуют на рынке. Большинство программ защиты от вирусов разработаны небольшими компаниями или частными лицами.
На отечественном рынке также нет недостатка в антивирусных средствах. Ряд из них имеет хорошую репутацию, пользуется популярностью у потребителей. В большинстве случаев эти средства также разработаны индивидуально или небольшими группами программистов.
Рассмотрим требования, которым должны отвечать антивирусные средства зашиты:
– вхождение в состав операционной системы;
– способность самоконтроля, так как они работают в более "агрессивной" среде, по сравнению с программами других типов.
Приведем некоторые рекомендации, которые необходимо учитывать при создании антивирусных средств. Антивирусные программы должны:
– проводить самотестирование в момент загрузки программы, так как после этого дискета с исходным модулем может быть извлечена из накопителя;
– учитывать возможность уменьшения размеров программы после заражения из-за упаковки вирусом части программного кода;
– выявлять замаскированное вирусом изменение длины программы, если оно проводится стандартными средствами. Следует контролировать размер программы различными способами и дополнительно определять значения некоторых байт программного модуля;
– учитывать возможность шифрования вирусом собственного "тела" и части зараженной программы;
– выявлять возможность нестандартного расположения вируса относительно заражаемой программы;
– определять наличие в теле вируса изменяющихся кодов.
Операционная система MS DOS не создает серьезных препятствий для существования вирусов. Полностью совместимые с ней операционные системы DR DOS и HI DOS несколько более вирусоустойчивы, но и они "прозрачны" для большинства вирусов. Повышенная вирусоустойчивость возникает из-за изменения внутреннего содержания этих операционных систем при сохранении пользовательского интерфейса. Вирусы, использующие нестандартные способы обращения к операционной системе, могут не работать на ее аналогах.
В операционной системе OS/2 введены средства регламентации при доступе к файлам и изменены внутренние характеристики. Это должно сдерживать распространение вирусов в этой среде, пока не появятся их модификации, учитывающие изменения. Но в этой сложной и относительно новой операционной системе могут содержаться ошибки и непредусмотренные возможности, которые могут быть использованы разработчиками вирусов.
Определенное внимание привлекает к себе проблема своевременного обнаружения и ликвидации компьютерных вирусов. Как и в медицине, гораздо проще предупредить заражение компьютера, чем "лечить" его. В связи с этим получили широкое распространение специальные программы диагностики наличия вирусов в прикладном программном обеспечении – так называемые вирус – детекторы, определяющие факт присутствия вирусов по характерным признакам (фрагменты кода), специфическим для каждого типа вируса. Для этого в программе вирус – детектора содержится набор образцов – сигнатур конкретных вирусов, и только такие вирусы сможет находить данный вирус-детектор. При появлении новых типов, а иногда и новых версий вирусов необходимо выпускать и новые версии вирус – детекторов, "обученные" распознаванию новых вирусов.
Очевидно, что задача создания универсальной программы вирус – детектора, которая бы определяла наличие любых вирусов в программных файлах типов СОМ или ЕХЕ, практически неразрешима. Наиболее целесообразным путем обнаружения вирусов в программных средствах было бы, по-видимому, создание псевдоуниверсального комплекса тестирования пакетов программных продуктов.
Комплекс проверки на вирус должен включать в себя три компонента:
– программу поиска вируса по его сигнатуре;
– программу выделения сигнатуры вируса на основе сравнения незараженного командного процессора с зараженным;
– банк сигнатур вирусов, созданный другой программой экстрактором.
Механизм обнаружения прост: программа поиска вируса по его сигнатуре перебирает все образцы сигнатур в банке вирусов. Для каждого вируса осуществляется сканирование всех программных файлов (операция поиск подстроки по заданному контексту – сигнатуре). Если при этом операция поиска окажется успешной и заданный контекст будет обнаружен в каком-нибудь программном файле, то можно с уверенностью сказать, что тестируемая программа заражена вирусом, сигнатура которого обнаружена. Задача обнаружения вируса решается в настоящее время загрузкой в оперативную память ПЭВМ резидентных программ, контролирующих обращение к системным функциям операционной системы:
– обращение к магнитным дискам (как с помощью диспетчера операционной системы, реализующего и поддерживающего файловую систему, так и на уровне базовой системы ввода-вывода);
– попытки оставить в оперативной памяти ПЭВМ программу, имеющую статус резидентной.
В процессе функционирования ПЭВМ резидентная программа "надсмотрщик" будет отслеживать указанные выше критические ситуации и перед их возникновением информировать пользователя о предстоящей попытке какой бы то ни было программы совершить указанные действия. Кроме того, программа "надсмотрщик" сделает запрос пользователю о разрешении выполнения действия или о блокировке системы. Резидентная программа протоколирует свои действия с той целью, чтобы при анализе деятельности вычислительной среды системным программистом на предмет обнаружения в ней наличия вируса была под рукой вся необходимая информация ("трассировка") о поведении и событиях в вычислительной среде.
В общем случае, существуют следующие основные способы автоматического поиска вирусов: детекторы, вакцины, фаги.
Программы-детекторы – это специальные программы, предназначенные для просмотра всех возможных мест нахождения вирусов (файлы ОС, основная память, возможно даже пустое в данный момент пространство диска) и сигнализировать об их наличии или отсутствии.
Программы-вакцины – это программы, "вшиваемые" в тело защищаемой программы (дописывающиеся к ее коду), либо резидентно оставляемые в оперативной памяти с целью обнаружения присутствия вируса по признакам аномального поведения (попытки записи в определенные области памяти и т. п.) и, возможно, обезвреживания его.
Программы-фаги – детекторы, дополненные специальными функциями по обезвреживанию данного вируса (удаление его из файлов ОС, оперативной памяти и т. п.).
Следует отметить, что, пользуясь вакцинами, необходимо быть осторожными. Вакцина тем качественнее, чем более точно она имитирует вирус. Но из этого следует, что многие антивирусные программы будут принимать эта вакцины за настоящие вирусы. Возможно, что некоторые фаги попытаются даже обезвредить эти вакцины (в представлении фагов эти вакцины – настоящие вирусы), что, скорее всего, приведет к порче ОС.
Вопрос 3. Защита программ и ценных баз данных от несанкционированного копирования и распространения
По оценкам экспертов в первом десятилетии XXI века только в США общая стоимость нелегально тиражируемых программных средств ежегодно составляла около 3 миллиардов долларов, а общее число нелегально изготовленных копий ПО составляло 45–52 % всех используемых программных средств. При этом особенно широкое распространение получило незаконное копирование программ для персональных ЭВМ. В частности, ущерб от экспортных недопоставок ПО для ПЭВМ в другие страны и от недополучения лицензионных платежей из-за рубежа за использование ПО только в 2007 г. оценивался в США соответственно в 705 и 235 миллионов долларов.
Выполнить простейшую операцию, достаточную для несанкционированного копирования программного средства на персональной ЭВМ, способен сегодня каждый пользователь.
Процесс нелегального распространения ПО получил развитие и в нашей стране. Это объясняется не только массовым применением вычислительной техники и умением большинства пользователей работать с командой СОРУ, но и более фундаментальными обстоятельствами и факторами:
– новизной законодательства по авторскому праву на программные средства и фактическим отсутствием юридической практики по вопросам защиты прав авторов программной продукции;
– наличием в прошлом многолетней практики нелегального заимствования иностранного программного обеспечения, во многом опиравшейся на определенную государственную поддержку;
– неразвитостью и низкой культурой рыночных отношений в нашей стране.
Можно выделить юридические, экономические и технические меры защиты программного обеспечения от несанкционированного копирования (НСК).
К юридическим средствам охраны ПО относятся различные правовые акты, оговаривающие вопросы зашиты ПО, а также более общие правовые нормы, которые могут применяться для этой цели. Хотя юридическая охрана прав на ПО в технически развитых странах осуществляется различными способами, в основном для этого применяются законы об охране авторских прав, об охране коммерческой тайны, о торговой марке и о патентной защите.
Авторское право. Заявление авторских прав на ПО применяется в качестве наиболее общего способа защиты ПО. Обладание авторским правом на ПО относит практически все операции по манипулированию этим ПО (продажа, применение, развитие) в исключительное ведение владельца.
Вместе с тем применение Закона об авторских правах для защиты ПО сталкивается с некоторыми проблемами, в частности с проблемой создания ПО в рамкам служебного задания.
Другой проблемой применения этого Закона для защиты ПО является вопрос о границах действия охраны прав на ПО – охраняется ли алгоритм, текст и структура программы или внешний способ организации взаимодействия с пользователем.
Патентная защита. Несмотря на возможность зашиты ПО с помощью патентов, очень немногие фирмы-производители ПО прибегают к патентованию программ, как способу защиты своих интересов.
На практике громоздкая процедура оформления и получения патента зачастую затягивается на столь длительный срок (более года), что многие программные продукты могут морально устареть раньше, чем на них может быть оформлен патент. Кроме того, патент на ПО действует меньший период времени по сравнению с авторскими правами.
Коммерческая тайна. Согласно Закону о коммерческой тайне под коммерческой тайной понимается некоторая информация либо формула, не являющаяся общеизвестной. В отношении ПО Закон о коммерческой тайне может применяться для защиты программ, разрабатываемых под конкретные требования клиента.
Торговая марка. Торговая марка представляет собой фирменный знак продуцента ПО, применяемый для идентификации программы при ее сбыте, официально защищаемый от копирования. Регистрация торговой марки полезна в случае возрастания спроса на какой-либо программный продукт – если название популярной программы не было зарегистрировано в качестве торговой марки, оно может быть использовано конкурентами для привлечения покупателей. Закон о торговой марке во многих случаях проще для применения, чем другие способы защиты ПО, т. к. гораздо легче доказать незаконное использование чужой торговой марки, чем доказать копирование.
В Российской Федерации в конце прошлого столетия происходили весьма важные процессы в области становления законодательства по охране программного обеспечения и ценной компьютерной информации. С этой целью приняты законы "О правовой охране программ для электронных вычислительных машин и баз данных" и "О правовой охране топологии интегральных микросхем", что знаменует новый этап в решении проблемы защиты интеллектуальной собственности в нашей стране. Теперь, после появления законодательной базы защиты ПО, основная проблема переходит в плоскость прецедентного накопления юридической практики и внедрения соответствующих административных процедур.
Экономические меры защиты ПО, проводимые фирмами-изготовителями программного обеспечения, предусматривают действенное стимулирование легального приобретения программных средств. Такое стимулирование проводится в настоящее время только для зарегистрированных пользователей, которые совершили легальное приобретение программных средств, и позволяет значительно экономить средства при использовании программ, а иногда даже делает невыгодным их нелегальное копирование.
Возможно, использование следующих мер стимулирования зарегистрированных пользователей:
– периодическая поставка дополнительной документации, специальных журналов и т. п.;
– регулярное сообщение об изменениях и обнаруженных ошибках;
– проведение семинаров и курсов по обучению пользователей программных средств;
– возможность получения оперативной консультации; – предоставление скидки при покупке следующей версии. В настоящее время отечественные предприятия-поставщики ПО активно осваивают вышеуказанные меры стимулирования легального приобретения программной продукции.
Технические меры защиты от несанкционированного копирования программ тесно увязаны с вопросами защиты информации от несанкционированного доступа (НСД). Хотя несанкционированный доступ не всегда направлен на копирование информации, большинство методов защиты от НСД можно применять и для защиты от НСК. Однако в проблеме защиты от НСК имеются свои, специфические методы, описанию которых и посвящена данная глава.
Отметим важную особенность – реализация средств защиты от ИСК существенно облегчается при наличии привилегированных режимов функционирования процессов в операционной системе.
Механизм защиты программного обеспечения, как показывает опыт работы в данной области, может включать следующие блоки:
– защиты от наблюдения;
– установки характеристик среды;
– сравнения характеристик среды;
– ответной реакции.
Блок защиты от наблюдения (БЗОН) представляет собой комплекс программных средств, ориентированных на исследование защищенного программного продукта. Главная функция БЗОН заключается в том, чтобы обеспечить надежную защиту от профессиональных любителей "раздевать" чужие программы, т. е. снимать защиту с пакетов программ. Ниже изложены некоторые способы, которые направлены на выявление и ликвидацию непредусмотренных внешних воздействий на защищаемую программу, характерных для средств снятия защиты.
Для снятия защиты используется комбинация двух основных методов нападения: статического и динамического.
Статические методы предусматривают анализ текстов защищенных программ. Динамические методы осуществляют слежение за выполнением программы с помощью специальных средств. Обработка результатов слежения может быть частично или полностью автоматизирована.
Среди мер противодействия статическим методам нападения следует упомянуть следующие:
– модификация и шифрование программного кода (типичные способы внесения особенностей в программную среду);
– включение в тело программы переходов по динамически изменяемым адресам и прерываниям, а также самогенерирующихся команд (например, команд, полученных с помощью сложения и вычитания);
– скрытый переход, когда вместо команды безусловного перехода ЗМР используется команда возврата из подпрограммы КЕТ (предварительно в стек записывается адрес перехода, который в процессе работы программы модифицируется непосредственно в стеке);
– включение в тело программы, если ее размер недостаточно велик, так называемой "пустышки", т. е. модуля, к которому имитируется, но не осуществляется передача управления. Этот модуль может содержать большое количество команд, не имеющих никакого отношения к логике работы программы. Но "ненужность" этих команд не должна быть очевидна потенциальному нарушителю;
– изменение начала защищаемой программы таким образом, чтобы стандартный дизассемблер не смог ее правильно восстановить.
Среди мер противодействия динамическим методам нападения следует отметить следующие:
– периодический подсчет в процессе выполнения программы контрольной суммы области оперативной памяти, занимаемой образом задачи, что позволяет своевременно обнаружить изменения, вносимые в загрузочный модуль при попытке ее "раздеть";
– проверка количества свободной памяти и сравнения с тем объемом, к которому "приучена" задача. Это действие позволяет застраховаться от явной слежки за программой с помощью резидентных модулей;
– проверка содержимого незадействованных для решения защищаемой программы областей памяти, которые не попадают под общее распределение оперативной памяти, доступной для программиста, что позволяет добиться "монопольного" режима работы программы;
– проверка содержимого векторов прерываний (особенно с кодами 13h и 21h) на наличие тех значений, к которым "приучена" задача. Иногда полезным бывает сравнение первых команд операционной системы, отрабатывающих эти прерывания, с теми командами, которые там должны быть (вместе с предварительной очисткой оперативной памяти проверка векторов прерываний и их принудительное восстановление позволяет избавиться от большинства присутствующих в памяти резидентных программ);
– переустановка векторов прерываний
– содержимое некоторых векторов прерываний копируется в область свободных векторов, соответственно изменяются и обращения к прерываниям. При этом слежение за известными векторами не даст нарушителю желаемого результата (например, первыми исполняемыми командами программы копируется содержимое вектора с кодом 21h в вектор с кодом 60h, а вместо команд int21h в программе везде записывается команда int60h, в результате в тексте программы не обнаружится ни одной команды работы с прерыванием 21h (обращение к функциям DOS);
– постоянное чередование команд разрешения и запрещения прерывания, что затрудняет установку отладчиком контрольных точек;
– контроль времени выполнения отдельных частей программы, что позволяет выявить "остановы" в теле исполняемого модуля.
Блок установки характеристик среды (БУХС) отвечает за первоначальное "знакомство" защищаемой программы с окружающей средой. Инициатором "знакомства" может выступать как сама защищаемая программа, так и специальный "Установщик". Последний заносит в тело защищаемого файла снятые им характеристики программно-аппаратной среды или, наоборот, подгоняет окружающую среду, например DOS, под защищаемую программу, если она изначально не способна функционировать в нормальном окружении.
Среди основных характеристик, на которые может ориентироваться "привыкающая" программа, исполняются особенности аппаратной среды ЭВМ; программной среды; психофизиологических характеристик оператора ЭВМ.
Если среда недостаточно индивидуальна, ее можно дополнить специальными "индивидуализирующими" признаками.
К особенностям аппаратной среды относятся:
– конфигурация конкретной ПЭВМ (наличие логических дисков, тип видеоадаптера – EGA, CGA или VGA, объем оперативной памяти и т. п.);
– контрольная сумма и дата создания микропрограмм базовой системы ввода-вывода (BIOS);
– измеряемые программой динамические характеристики различных компонентов компьютера и их соотношение между собой (основной проблемой при использовании динамических характеристик является их зависимость от температуры, продолжительности работы и других меняющихся условий, что делает затруднительным получение достаточно стабильных характеристик, индивидуальных для каждого устройства);
– специальная модификация BIOS путем перепрограммирования соответствующих ПЗУ;
– подключение специальных устройств (логических микросхем, дополнительных ПЗУ, подключаемых к ЭВМ через параллельный или последовательный интерфейс и т. п.);
– создание специальных "дефектов" на предъявляемых носителях данных, например на "ключевых" дискетах. Недостаток данного способа заключается в том, что совсем несложно сделать резидентную программу, которая будет перехватывать все обращения к устройству и возвращать в защищенный пакет все те коды завершения, которые тот рассчитывает получить. Этот недостаток можно ликвидировать, если обращения к внешнему устройству адресовать напрямую, а не через DOS.
К особенностям программной среды относятся:
– место физического размещения защищаемого файла на магнитном диске;
– порядок физического размещения файлов защищаемого программного средства на магнитном диске (при этом учитывается не только место физического размещения, но и положение файлов относительно друг друга);
– наличие на ПЭВМ "привычных" для пакета драйверов, таблиц, файлов; простой для реализации, но столь же простой для снятия защиты способ;
– наличие заданной последовательности вызовов определенных программ перед запуском защищаемого пакета;
– специально модифицированные программы операционной системы;
– проверка наличия уникальной даты, например даты инициализации диска;
– нестандартные способы организации данных на магнитных носителях;
– размещение в теле программы в зашифрованном виде данных, которые бы однозначно идентифицировали автора программы и пользователя, которому она официально продана. В качестве таких данных часто используется строка "© ФИО Дата" и системный номер программы; наличие таких данных позволят впоследствии применять юридические средства защиты.
Блок сравнения характеристик среды (БСХС) является одним из самых уязвимых мест защиты. Можно детально не разбираться с логикой защиты, а немного "подправить" результат сравнения, и защита будет снята. Иногда этот блок отсутствует и его выполняет человек (например, в некоторых системах с шифрованием информации сравнение производится человеком на этапе ее использования).
БСХС может иметь следующие варианты реализации:
– реализация множества операторов сравнения наличных параметров с ожидаемыми;
– генерация исполняемых команд в зависимости от результатов работы защитного механизма (например, в первом байте хранится исходная ключевая контрольная сумма BIOS, во второй байт в процессе выполнения записывается подсчитанная контрольная сумма в процессе выполнения задачи; суть блока сравнения – вычесть из первого байта значение второго байта, а полученный результат добавить к каждой ячейке оперативной памяти в области DOS; ясно, что если суммы не совпадут, то, вряд ли DOS продолжит функционирование);
– выполнение ряда арифметических операций над данными в зависимости от результатов работы защитного механизма.
Блок ответной реакции (БОР) реализует ответные действия программы при обнаружении ею попытки анализа и взлома защитных механизмов. Такими действиями могут быть:
– саморазрушение программы или частичное уменьшение числа выполняемых ею функции;
– необратимая перестройка окружающей среды нот свои потребности, что приводит к невозможности работать на данной ПЭВМ с любыми другими пакетами, кроме данного;
– разрушение окружающей среды, в том числе запуск в профаммную среду вирусов и создание в ней "троянских коней".
– различные способы "издевательства" над пользователем, например замедление реакции программы, подача различных звуковых сигналов в случайные моменты времени, вывод посторонних изображений, добавление комментариев к вводимой и выводимой информации и тому подобное.
Блок ответной реакции может заметно демаскировать систему защиты. С целью снижения демаскирующего эффекта применяются идеи кратности ответной реакции (только после определенного числа запусков) и отложенности возмездия (ответная реакция происходит через определенное время или при срабатывании фрагмента программы, далеко отстоящего от блока сравнения характеристик среды).
Идеи постепенности ответной реакции и частичной деградации исполняемой программы перед полным прекращением работоспособности имеют в плане защиты некоторые плюсы:
– пользователь несанкционированной копии не сразу замечает факт наличия реакции системы защиты;
– желание вскрывать защиту может не появиться, так как используемая программа воспринимается как просто плохо отлаженная;
– может пропасть желание использовать программу из-за страха получить какую-нибудь неизвестную реакцию.
Отрицательным моментом является возникновение антирекламы, поскольку ответная реакция может быть воспринята как свойство самого продукта в незащищенном виде.
Эффект ответной реакции может быть усилен, если она соответствующим образом описана в документации. Возможно описание не всех ответных воздействий или некоторое их преувеличение.
Следует упомянуть о демонстрационных версиях программ, распространяемых с целью рекламы. Представляется, что способ их создания путем установки переключателя в блоке ответной реакции, реализующего частичную потерю программой своих функций, вряд ли может быть признан удачным. Такая демонстрационная версия может быть легко превращена нарушителем в рабочую. Демонстрационная версия должна быть специальной программой, у которой недопустимые функции отсутствуют физически. Кроме того, должны отсутствовать все защитные механизмы, и даже намеки на них.