• Aucun résultat trouvé

Notations et concepts de base

3.2 La formalisation de Fred Cohen

3.3.1 Notations et concepts de base

Deux proprietes principales sont considerees par Adleman pour caracte-riser un virus :

1. Tout programme possedc une forme infectee, Autrement dit, un virus peutetreconsidere comme une application de l'ensemble des programmes vers l'ensemble des programmes infectes, Cette vision correspond en fait a celIe de Fred Cohen avec le theoreme 14.

2. Chaque programme infecte, en fonction de parametres d'entree fournis par l'utilisateur, le systeme d'exploitation ou l'environnement dans son acception la plus generale, agit selon trois possibilites :

- Infection.- Le programme, apros avoir realise les fonctionnalites atten-dues, infecte d'autres programmes/".

- Fonctionnalite ajoutee.- Le programme, en plus de ses fonctionnalites attendues, effectue d'autres actions. Ces actions peuvent etre differees ou non, a caractere (generalement) offensif (charge finale) ou non (le cas des virus benefiques) et leur nature depend uniquement de l'infection initiale et non du programme infecte, Notons que cette seconde pos-sibilite n'est absolument pas une caracteristique virale. Seul le carac-tere autoreproductif devrait normalement etre considere, L'intention d' Adleman est deja de generaliser le propos afin de prendre en compte d'autres programmes a caractere offensif, mais non autoreproducteurs.

- Imitation.- Le programme ne procede a aucune infection ni action of-fensive mais effectue juste les instructions legitimement attendues. II s'agit d'un cas particulier de l'infection dans la situation OU aucun fichier a infecter n'est disponible.

Les notations utilisees par Adleman decrivent en detail les mecanismcs de fonction recursive universelle, telle qu'elle a ete presentee dans le chapitre 2.

- S designe l'ensemble de toutes les sequences (finies) d'entiers naturels.

- L'application e :S XS ---+ N, calculable et injective et dont la reciproque est calculable, designe en fait la construction d'un nombre de Codol (voir section 2.2.2). Les deux sequences arguments peuvent notamment designer ici les instructions du programme calculant une fonction re-cursive (l'index) et les donnees de ce programme (le parametrc de la fonction). La valeur e(s,t) pour deux sequences quelconques s et t de S sera notee

<

s,t

>.

Cette valeur designe donc un index etendu aux donnees du programme.

20 Precisons tout de suite qu'en general, les virus ou autres programmes infeetieux in-versent eet ordre afin d'assurer leur survie. Nous develonnerons eel a dans le ehanitre 5.

- Pour toute fonction partielle

f :

N ---+N et toutes sequences 8 et t de S, f(8, t) designera f(< 8,t

».

La definition suivante precise les conditions d'egalite de deux fonctions (re-cursives ou non).

Definition 23 Pour toutes fonctions f et 9 de N dans N i pour tout (8,t) E

S x S alors f(8, t)

==

g(8, t)i si et seulement si, f(8, t) / et g(8, t) / 21

ou bien

f(8, t) ~ et g(8, t) ~ et f(8, t)

==

g(8, t)

La definition suivante permet de determiner I'equivalence de deux index etcn-dus,

a

une fonction partielle pres.

Definition 24 Pour tout (z, z') E N2i pour toutes sequences P,P'i et pour toutes sequences q == (q1,q2, ... ,qz),q' == (q~,q;, ...,q~/) de S, pour toute fonction partielle h : N ---+Niles index eiendus < p, q > et < p', q' > sont dits equivalents

a

la fonction h pres et on note

<

p, q >~< p', q'

>

si et seulement si les quatre conditions suivantes sont uerifiee» :

1. z

==

z', 2. P==P'i

3. 3i E N avec 1

<

i

<

z tel que qi

=I

q~i

4.

Pour j == 1,2, ... ,z ou bien qj == qj ou bien h(qj) ~ et h(qj) == qj.

Notons que, dans la derniere condition, qj == qj est equivalent

a

h( qj) == qj

si h est la fonction identite sur N.

Definition 25 Pour toutes fonctions partielles

i,

9 et h deN dans N i pour tout (8,t) E S XS, fest h-equiualente au sens faible (ou equiualenie au sens faible

a

la fonction h pres)

a

la fonction 9 en (8,t) si et seulement si

f(8, t) ~ et g(8, t) ~ et h(f(8, t)) == g(8, t).

On note alors f(8, t) r-:»h g(8, t).

La definition suivante resume enfin sous une seule notation les definitions 23 et 25.

21 Ces notations ont ete definies dans la section 2.2.3.

Definition 26 Pour toutes fonctions partielles

i,

9 et h deN dans Ni pour tout (8,t) E 5 XS,

1

est h-equiualente au sens fort (ou equiualenie au sens fort

a

la fonction h pres)

a

la fonction 9 en (8,t)i si et seulement si,

1

(8,t)

==

9(8,t) ou

f

(8,t) rvh 9(8,t).

h

On note alors 1(8, t) ~ g(8, t)

Nous pouvons maintenant donner, en reprenant les definitions qui viennent d'etre donnees et les concepts du chapitre 2, la definition formelle des trois possibilites d'action d'un programme infecte,

Definition 27 Pour toute numeroiation de Giklel des fonctions partielles recursive» {epi}i une fonction recursive totale vest une infection22 relative-ment

a

{epi}i si et seulement si, pour tout (d,p) E 5 x 5 soit :

1. il ajoute une fonctionnalite :

2. il infecte ou il imite :

v

[Vj E N [epj(d,p) ~ epv(j) (d,p)]].

Remarques

1. Les symboles d et p representent la decomposition de toutes les infor-mations accessibles

a

une fonction epi en donnees (informations non sus-ceptibles d'etre infectees23) et les programmes (informations susceptibles d'etre infectees).

2. II faut bien se rappeler que l'indexi de la fonction ep doit etre vu comme un index etendu. Cela permet de generaliser la notion d'infection d'un programme

a

un processus (programme proprement dit, donnees de ce

22 Dans l'article de [1]' outre quelques erreurs de notations, le terme virus a ete utilise, ce qui constitue dans certains cas, une contradiction avec la definition 28 de la section suivante. Dans tout ce qui suit, nous utiliserons plutot le terme general d'infection, meme si la plupart du temps l'infection est realisee effectivement par un virus. Le terme de virus sera reserve aux seuls programmes autoreproducteurs.

23 En fait, dans le cas des virus que l'on pourrait qualifier de «virus de documents »,par exemple les macro-virus, la distinction entre programmes et donnees n'est plus aussi claire et la notion d'« infection» de donnees n'est plus absurde. Cependant, l'usage de fonctions recursives et de leur representation formelle, permet de considerer ce cas narticulier sans nrobleme concentuel. Nous l'aborderons dans le chanitre 5.

programme et donnees systeme necessaires au processus). Le processus d'infection a alors pour cible, non seulement un programme, mais ega-lement les donnees de ce programme (cas des virus dits de documents).

C'est la raison pour laquelle la fonction rpi accepte les deux arguments d et p.