Вирусы и средства борьбы с ними

       

Принятые обозначения


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

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

Ниже везде неявно подразумевается описанная интерпретация вычислительной системы.

  1. Обозначим S - множество всех конечных последовательностей натуральных чисел,
    Принятые обозначения
    . Таким образом элемент S может обозначать либо набор файлов данных, либо набор файлов программ, закодированных при помощи натуральных чисел.
  2. Обозначим e - вычислимую инъективную функцию из S?S на
    Принятые обозначения
    с вычислимой обратной функцией,
    Принятые обозначения
    . По тому же принципу, что и программы и данные, натуральными числами могут кодироваться и состояния системы. Функция e взаимно однозначно ставит в соответствие набору данных и программ натуральное число. Иными словами e - однозначная нумерация состояний системы.
  3. Принятые обозначения

    Нотация

    Принятые обозначения
    предназначена для обозначения состояния системы и фактически является кодом этого состояния, представленным натуральным числом.
  4. Для всех частичных функций
    Принятые обозначения
    Любая программа переводит систему из одного состояния в другое, учитывая, что состояния кодируются натуральными числами, можно считать любую программу функцией из
    Принятые обозначения
    в
    Принятые обозначения
    .
  5. Для всех частичных функций
    Принятые обозначения
    примем обозначение f(n)
    Принятые обозначения
    тттк f(n) определена
  6. Для всех частичных функций
    Принятые обозначения
    примем обозначение f(n)
    Принятые обозначения
    тттк f(n) не определена
Определение 2.26. Для всех частичных функций
Принятые обозначения
тттк выполняется одно из условий:
  1. f(s,t)
    Принятые обозначения
    и g(s,t)
    Принятые обозначения
    , либо
  2. f(s,t)
    Принятые обозначения
    и g(s,t)
    Принятые обозначения
    и f(s,t) = g(s,t)


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

Определение 2.27.
Принятые обозначения
для всех частичных функций : тттк:
Принятые обозначения


  1. z=z', и
  2. p=p', и
  3. Принятые обозначения
    , и
  4. Принятые обозначения
    либо
    • q=q', либо
    • h(qi)
      Принятые обозначения
      и h(qi)=q'i




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

Определение 2.28. Для всех частичных функций
Принятые обозначения
,
Принятые обозначения
тттк
Принятые обозначения
, и
Принятые обозначения


В этом определении уточняется введенное ранее отношение для состояний, получаемых в результате действия двух функций. Результатом действия функции f на состояние системы
Принятые обозначения
является натуральное число, которое можно однозначно интерпретировать как новое состояние
Принятые обозначения
. Точно так же
Принятые обозначения
. Соответственно, запись
Принятые обозначения
обозначает, что обе программы завершают свою работу при запуске из состояния
Принятые обозначения
и результат их выполнения будет отличаться фактом заражения некоторых программ:
Принятые обозначения
.

Определение 2.29. Для всех частичных функций
Принятые обозначения
,
Принятые обозначения
тттк
Принятые обозначения
или
Принятые обозначения


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

Определение 2.30. Для всех геделевских нумераций частичных рекурсивных функций
Принятые обозначения
, общерекурсивная функция v будет вирусом по отношению к
Принятые обозначения
тттк
Принятые обозначения
выполняется либо:
  1. Повреждение:
    Принятые обозначения
  2. Заражение или имитация:
    Принятые обозначения


В данном определении выбор переменных d и p в явном виде указывает на их природу - данные (информация не подверженная заражению) и программы (информация подверженная заражению).

Здесь необходимы комментарии:

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



Содержание раздела