logo
ОЗІ / Лекц_ї / все / Методы и средства защиты информации, 2003

Программы защиты программ

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

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

В соответствии с этим необходимо использовать следующие меры по защите программ:

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

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

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

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

  3. Организация специальных точек входа, т.е. нескольких нестандартных (сохраняемых в тайне и периодически изменяемых) адресов обращения к программам и их отдельным блокам.

  4. Дублирование программ с обязательным сравнение перед исполнением, хотя бы двух копий защищаемых программ.

  5. Криптографическое закрытие программ, причем снятие шифра должно осуществляться непосредственно перед использованием.

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

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

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