![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
Защита программ
Сеть Петри является идеальным инструментом для моделирования переходов при выполнении определенных условий.
Не секрет, что большинство защит сводится к максимальному сокрытию и недопущения длинных рук кракера к пресловутому условному переходу. При этом обертка может состоять из самых изощренных анти-отладочных приемов, программа может быть запакована множеством упаковщиков, и любыми другими средствами, но в середине всей этой мишуры находится один единственный переход. Итак, рассмотрим простейший пример, на котором можно наглядно просмотреть идею защиты:
Допустим, что при начальной
маркировке можно задавать
кол-во фишек только в позициях
p0…p3. (p7 изначально содержит
одну фишку). Остальные позиции
недоступны для маркирования.
Зададим ключевому переходу t2
наименьший приоритет, после
чего он (переход t2) выполниться
тогда и только тогда, когда
начальная маркировка будет
в p0…p3 следующим образом:
p0=1, p1=0, p2=1, p3=1. При всех остальных начальных маркировках
переход t2 не сработает. Попытайтесь проверить.
Теперь представим, что каждый переход – это поток, который проверяет определенный набор бит на ВХОДЕ (входные позиции) и в зависимости от результата устанавливает биты на ВЫХОДЕ. Так, поток t3 проверяет фишки (биты) в позиции p0 и в зависимости от того есть там фишки (бит установлен) или нет (бит сброшен) устанавливает биты на выходных позициях (p5 и p6).
Допустим, пользователю необходимо зарегистрировать программу, введя 4-битный ключ. Биты ключа (фишки) помещаются в позиции p0,p1,p2 и p3 (если бит установлен, то фишка помещается, нет – значит соотв. позиция остается пустой). Этим обеспечивается начальная маркировка сети.
Программа будет считаться зарегистрированной, если переход t2 сработает (т.е. будет активным). Как уже было показано выше – переход t2 сработает только при такой начальной маркировке: p0=1, p1=0, p2=1, p3=1.
Все это легко можно реализовать программно.
Решая задачу достижимости с использованием дерева достижимости мы фактически прибегаем к методу полного перебора. К данному методу вообще можно свести любую задачу. Поэтому защищенность здесь определяется только временем и ресурсами, затраченными на полный перебор.
На нашем примере легко видеть, что найти правильный ключ (т.е. правильную начальную маркировку) можно перебрав всего лишь 2^4 = 16 значений. Это можно сделать даже вручную, а взглянув на представление программы в виде сети Петри можно догадаться интуитивно за несколько секунд.
Использование ключей длиной менее 2^128 бит на сегодняшний день не может обеспечить защиту на приличном уровне, именно поэтому предложенная в примере сеть Петри не годится для практической защиты и приведена лишь в качестве наглядной иллюстрации.
Дата публикования: 2015-02-03; Прочитано: 1317 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!