Da quando esistono i virus informatici esistono anche gli antivirus. Questa è una evidente realtà. Ma per quale motivo gli antivirus non sono efficaci contro tutti i virus?
Rispondere a questa domanda è intuitivamente semplice: perché vi sono virus sempre nuovi che si comportano diversamente dai precedenti e gli antivirus funzionano solo con ciò che conoscono. Se si va a vedere cosa c'è dietro la risposta intuitiva allora le cose si complicano, perché se si prova ad approfondire il problema, ci si addentra in un campo di studio per niente facile.
Per capire di cosa stiamo parlando occorre introdurre alcuni concetti ovvero il significato di "euristico" e di "macchina di Turing".
Il termine "euristico", in matematica si riferisce ad un procedimento impiegato per prevedere un risultato che però dovrà essere convalidato dall'esperienza in quanto non rigoroso.
Invece con "macchina universale di Turing" si intende una macchina ideale che programmata consente di eseguire qualunque operazione, ovvero di calcolare in un numero finito di passi elementari qualsiasi funzione computabile.
Ebbene un certo numero di anni fa Leonard Max Adleman, oltre ad essere uno dei tre inventori dell'algoritmo di cifratura RSA (Rivest-Shamir, Adleman) ed il primo ad aver utilizzato il termine "virus" in informatica per identificare degli agenti malevoli, ha anche dimostrato che se esistesse un algoritmo capace di individuare la presenza di un virus in un caso generale, questo algoritmo sarebbe capace di risolvere il problema noto sotto il nome di "halting problem". Tale problema affrontato teoricamente da Alan Turing consiste nel dire se, dato un qualunque programma e un qualunque input, sia possibile determinare se il programma prima o poi si fermerà o continuerà a restare in esecuzione all'infinito. Alan Turing dimostrò che tale problema è "indecidibile".
Ebbene, per tornare al nostro problema, ovvero se possa esistere un programma capace di individuare un qualunque virus, Leonard Max Adleman ha dimostrato che questo problema è equivalente al più noto "halting problem" e quindi anch'esso indecidibile.
Se supponiamo, e non vedo motivo di non farlo, che sia Turing sia Adleman abbiano ragione, allora dobbiamo concludere che non è possibile creare un programma antivirus, per lo meno non è possibile creare un programma antivirus generalista.
Ed è qui che ritorna in ballo il termine euristico. Se è infatti vero che non esiste un antivirus generale che va bene per tutti i virus, nessuno impedisce di lavorare per approssimazioni della realtà conosciuta e cercando di prevedere anche il comportamento futuro dei virus, la loro possibile evoluzione. In questo senso lavorano le case produttrici di antivirus, cercando di creare degli antivirus utilizzabili contro i virus noti e contro le più probabili evoluzioni degli stessi.
Foto: U.S. Air Force