The untrust3d philosophy

 

Il termine “untrusted” (non fidato) gioca  un ruolo fondamentale nel campo della sicurezza informatica ed inoltre ad un’attenta analisi risulta forse esserne il concetto da cui la sicurezza stessa trae origine.

Infatti e è proprio quando un elemento è ritenuto “affidabile” che lui stesso può diventare insicuro oppure generare insicurezza con molti degli altri elementi con cui può entrare in contatto.  La studio della sicurezza informatica (ma non solo) si basa sul concetto di affidabilità.  Se un applicazione1 web non è in grado di trattare in maniera sicura il possibile input dell’utente il risultato è quello di non applicazione a sua volta non sicura. Il problema putroppo della sicurezza è dato proprio da quel possibile. Infatti essendo le modalità di interazione2 con un’applicazione (ma potrebbe essere una macchina, una serratura, qualsiasi cosa) pressocchè infinite e non prevedibili risulta a volte difficile un deployment effettivo di sicurezza. Come fare quindi?

La risposta potrebbe essere quella di agire in due fasi: nella prima ricercare tutti punti contatto dell’applicazione con l’esterno ritenendoli “untrusted” , nella seconda  invece dare priorità alle vulnerabilità  che in generale possono produrre a lungo termine effetti più gravi. Può sembrare scontato ma è sempre utile ricordare che una sicurezza al 100% che sia di una singola applicazione o di un complesso network non è possibile ne dal punto di vista teorico ne pratico proprio perché si fonda sul contatto tra l’applicazione e l’esterno che , anche se considerato untrusted, comunque porta con sé la possibilità seppur minima dell’errore. Ecco perché bisogna dare priorità, non cercare di garantire una sicurezza completamente esente da teoriche vulnerabilità ma al contrario ragionare in modo effettivo e fattivo creando delle progressive barriere di sicurezza tali che, anche ipotizzata una possibile falla comunque essa non sia in grado di compromettere la confidenzialità, riservatezza, disponibilità di un sistema o di un network.

In questo articolo sto cercando di trattare dal punto di vista teorico solo della prima fase ovvero di quel particolare lavoro che cerca in prima istanza di scoprire quali siano i punti di contatto che l’applicazione ha verso l’esterno e le modalità di interazione con l’esterno, successivamente di ritenere ogni punto di contatto come intrinsecamente “untrusted” cioè non sicuro. Paradossalmente più si considerano insicure le applicazioni e il possibile input che possono ricevere, più ci si avvia verso un cammino che cerca di portare maggiore sicurezza alle stesse applicazioni. Come si può vedere dalla Fig 1 l’applicazione riceve dell’input e per riceverlo ha però bisogno di un contatto con l’esterno rappresentato dal punto rosso. E’ li che si insidiano le possibili vulnerabilità o in generale usi non previsti. Infatti una vulnerabilità altro non è che un uso o un esito non previsto sfruttato più o meno malevolmente per compromettere la confidenzialità, integrità, disponibilità di un qualsiasi dato o sistema informatico.

Fig. 1

 

Questo blog nasce proprio dalla convinzione teorica che alla base di ogni problema di sicurezza (informatica e non) vi siano elementi ingiustamente ritenuti come “trusted” che sono generatori di insicurezza e inaffidabilità.

Ma in che senso se un elemento è ritenuto non fidato (untrusted) è più sicuro?

Per cercare di rispondere si può immaginare un’applicazione in esecuzione che prevede delle modalità ben precise di interazione con l’utente3. Ora le problematiche di sicurezza sorgono, come già ho espresso, o perché una particolare interfaccia di comunicazione tra l’applicazione e l’utente non viene calcolata in sede di sviluppo (potrebbe infatti verificarsi un’interazione non prevista) oppure ancora perché uno o più punti di contatto vengono considerati trusted.

Ho cercato di rappresentare in maniera grafica i concetti esposti sopra: due circonferenza dove una rappresenta l’applicazione, l’altra un generale agente esterno che entra in contatto, il piano definito dall’intersecarsi delle due circonferenze invece indica l’interazione (lo spazio entro il quale l’applicazione e l’esterno si incontrano modificandosi entrambi) .

Fig 2

In Fig 2  se l’interazione, che è la risultante del contatto tra la suddetta applicazione e l’esterno, è ritenuta fidata allora sicuramente si avranno molte probabilità di generare e creare risultati non previsti e quindi a possibili falle.

Fig 3

Nella Fig 3 invece l’interazione cioè sia l’input effettivamente ricevuto che la modalità stessa con cui l’applicazione interagisce con l’esterno, è ritenuta untrusted cioè non fidata e questo sicuramente genera maggiore sicurezza. Una pratica del genere non produrrà magicamente sicurezza tout court ma bensì sarà solo un avvicinamento ad esso, la sicurezza infatti per essere effettiva deve essere intesa come un moto di avvicinamento e approssimazione mai come effettivamente realizzato in pieno. Solo percependo la sicurezza come un qualcosa di “incarnato” nella realtà che ci circonda si può cercare di produrre o sviluppare tecniche sicure. Rubando il termine filosofico della “embodied cognition” o conoscenza incarnata si potrebbe quindi parlare di “embodied security” o sicurezza incarnata. Questo termine  solo per porre maggior enfasi nel considerare la sicurezza informatica come un “animale sociale” , cioè un qualcosa che ha si le sua basi teoriche (come vuole d’altronde evidenziare questo articolo) ma proprio per queste sue basi ricerca la sua definizione nell’attuarsi pratico.

 


 

1. In questo articolo oltre al suo normale significato ho usato il termine applicazione anche per indicare in generale un situazione che può presentare delle vulnerabilità. E’ vero che in sicurezza informatica si parla quasi sempre di un applicazione vulnerabile o al massimo di tecnologie vulnerabili (ma loro stesse sono delle applicazioni, cioè una serie di istruzioni da eseguire che interagiscono con altre istruzioni) ma data la generalità dell’articolo che nonostante parta dal ristretto ambito della sicurezza informatica vuole porre enfasi sulla problematicità della sicurezza in generale, che sia di un’applicazione, di un sistema operativo o di una serratura. Il termine applicazione va quindi inteso anche in questo senso se si vuole carpire il senso problematico della sicurezza qui presentato.

2. Con interazione intendo la risultante tra il contatto che avviene tra l’applicazione e l’esterno.In dettaglio interazione è il risultato di un qualsivoglia agente esterno (utente, applicazione, tempo, raggi cosmici) in grado, anche se in minima parte, di influenzare il succedersi di operazioni eseguite su un calcolatore. Il termine interazione racchiude in sé il significato di influenzare e modificare l’elemento con il quale si entra in contatto.

3. Con il termine utente similmente a quanto avviene con quello di applicazione, intendo non solo lo specifico utente che interagisce con un’ipotetica applicazione bensì in generale ogni possibile modalità di interazione con l’applicazione stessa. Infatti sebbene sia sempre l’utente ad interagire con l’applicazione e a stimolarne comportamenti non previsti, non è detto che tale interazione sia diretta. Molte applicazioni infatti non prevedono una diretta interazione con l’utente, anzi esse interagiscono o con altre applicazioni oppure con l’hardware stesso sul quale vengono eseguite. Con utente quindi, oltre al suo uso specifico e legittimo, intenderò anche tutto ciò che può entrare in contatto con un applicazione.

L’articolo col tempo potrà subire variazioni, aggiunte  e rimozioni parziali di testo.
Versione 0.1

.

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

%d blogger cliccano Mi Piace per questo: