
332 Глава 17. Программные методы защиты
понентами. Все рассмотренные средства, во-первых, не гарантируют распознавания (обна-
ружения) факта подмены общесистемных компонентов, во-вторых, не обеспечивают за-
щиту от злоумышленных действий системных программистов, и, в-третьих, искусные зло-
умышленники могут преодолеть такую защиту. В связи с этим необходимо применять ряд
дополнительных мер, основными из которых являются следующие.
1. Периодическая проверка программ по контрольным суммам, причем для повышения
надежности проверок рекомендуется производить как общее (всего программного
комплекса) контрольное суммирование, так и фрагментарное (отдельных блоков, от-
дельных строк, по заданному маршруту). При этом способ получения контрольной
суммы рекомендуется сохранить в тайне.
2. Перезагрузка, т.е. периодическое обновление ранее загружаемых в ОП программ
(или наиболее ответственных их компонентов), причем команды на обновление про-
грамм должны поддаваться особо защищаемой управляющей программой.
3. Организация специальных точек входа, т.е. нескольких нестандартных (сохраняемых
в тайне и периодически изменяемых) адресов обращения к программам и их отдель-
ным блокам.
4. Дублирование программ с обязательным сравнение перед исполнением, хотя бы двух
копий защищаемых программ.
5. Криптографическое закрытие программ, причем снятие шифра должно осуществ-
ляться непосредственно перед использованием.
Все перечисленные меры сравнительно несложно реализуются программным путем,
причем содержание соответствующих программ очевидно.
Наиболее эффективным методом предупреждения несанкционированного использо-
вания программ является метод модульного диалога, суть которого может быть пред-
ставлена следующим образом.
При разработке каждого программного модуля в
нем предусматриваются некоторые
скрытые процедуры (сложение по модулю некоторых четных разрядов предъявленного
кода или т.п.). Команды этих процедур шифруются и располагаются в определенных
местах модуля, сохраняясь в тайне. Кроме того, определяется некоторый код, являю-
щийся функцией содержания модуля (например, совокупность разрядов, выбранных из
процедур модуля в определенном порядке). Этот
код хранится в защищенном поле па-
мяти. Тогда при обращении к модулю может быть осуществлена дополнительная про-
верка, как на санкционированность обращения, так и на подмену программ и внесения в
них несанкционированных изменений. Для повышения уровня защиты контрольные
процедуры и контрольные коды могут периодически изменяться.
Защита от копирования
Система защиты от кодирования или система защиты авторских прав — это ком-
плекс программных или программно-аппаратных решений, обеспечивающих затрудне-
ние или запрещение нелегального определения, использования и (или) изменения про-
граммных продуктов.