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


Принятые обозначения - часть 2


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

Определение 2.27.

\forall z,z' \in \Gamma ', \forall p,p',q = q_1,q_2,\ldots ,q_z,q' = q'_1,q'_2,\ldots ,q'_z \in S
для всех частичных функций : тттк:
 \begin{aligned} _h_~~~~~~~~ \\ h: S \to S: \langle p,q \rangle : \langle p',q' \rangle \end{aligned}

  1. z=z', и
  2. p=p', и
  3. \exists i \in [l,z]: q_i \ne q'_i
    , и
  4. \forall i \in [l,z]
    либо
    • q=q', либо
    • h(qi)
      и h(qi)=q'i

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

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

f, g, h: \Gamma ' \to \Gamma '
,
 \begin{aligned} _h_~~~~~~~ \\ \forall s,t \in S: f(s,t) : g(s,t) \end{aligned}
тттк
 f(s,t)\downarrow, g(s,t)\downarrow
, и
 \begin{aligned} _h_~~~~~~~ \\ f(s,t) : g(s,t) \end{aligned}

В этом определении уточняется введенное ранее отношение для состояний, получаемых в результате действия двух функций. Результатом действия функции f на состояние системы

\langle s,t \rangle
является натуральное число, которое можно однозначно интерпретировать как новое состояние
\langle s',t' \rangle
. Точно так же
g(s,t) = \langle s'',t'' \rangle
. Соответственно, запись
 \begin{aligned} _h_~~~~~~~ \\ f(s,t) : g(s,t) \end{aligned}
обозначает, что обе программы завершают свою работу при запуске из состояния
\langle s,t \rangle
и результат их выполнения будет отличаться фактом заражения некоторых программ:
 \begin{aligned} _h_~~~~~~~~~ \\ \langle s',t' \rangle : \langle s'',t'' \rangle \end{aligned}
.

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

f, g, h: \Gamma ' \to \Gamma '
,
 \begin{aligned} _h_~~~~~~~ \\ \forall s,t \in S: f(s,t) \cong g(s,t) \end{aligned}
тттк
f(s,t) = g(s,t)
или
 \begin{aligned} _h_~~~~~~~ \\ f(s,t) : g(s,t) \end{aligned}

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

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

{\phi_i}
, общерекурсивная функция v будет вирусом по отношению к
{\phi_i}
тттк
\forall d,p \in S
выполняется либо:
  1. Повреждение:
    (\forall i,j \in \Gamma ')[\phi_{v(i)} (d,p) = \phi_{v(j)} (d,p)]
  2. Заражение или имитация:
     \begin{aligned} _v_~~~~~~~~~~~~~~~ \\ (\forall j \in \Gamma ')[\phi_j (d,p) \cong \phi_{v(j)} (d,p)] \end{aligned}

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

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

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




- Начало -  - Назад -  - Вперед -