Trusted hardware or not?

Ho un problema, grosso. E’ il problema di tutta la ricerca sulla sicurezza informatica. Se devo mettere in sicurezza un sistema(un pc), devo sapere cosa c’è su e avere sicurezza che questo che c’è su sia affidabile(cfr.non malevolo).
Chi me lo dice? Sotto  il livello  dell’applicazione che  sto verificando cen’è uno che me lo dice. E chi mi dice che è anch’esso affidabile? Si prodegue così fino ad arrivare ad un punto fisso(teorema del punto fisso), questo punto fisso deve avere UNA proprietà, deve garantire di essere tamper-proof.
Per ora l’unico mezzo è il fantomatico chip del DRM o TPM o come lo vuoi chiamare. A firmware so che solo smontandolo posso scoprire le chiavi di cifratura che mi permettono di validare i livelli della mia architettura(attraverso una metodologia molto intelligente).

Dico che questo metodo può essere molto utile(in barba agli ideologici) ma potrebbe diventare molto rischioso. In molti casi andrebbe usato per ovviare ai soliti problemi di sicurezza(0-days exploit, tecniche di intrusion detection lente e che falliscono se non aggiornate etc.etc.). Il problema sostanziale dello spostamento verso il basso della sicurezza è esclusivamente dato dal fatto che tutti i processi, volenti o nolenti girano su un S.O. che accede alla memoria principale. Tale accesso può essere efettuato anche dai processi(in special modo i rootkit) che in qualche modo possono variare e leggerne i dati(atraverso analisi statica etc..) non appartenenti al proprio spazio di Memoria virtuale(in architetture non riferite alla macchina di Von Neumann, come ora sono quasi tutte). Per cui l’unica soluzione è trovare il modo di rendere parti di codice e di dati tamper-proof, e l’ultimo stadio di sicurezza è che determinati dati siano ad un livello sotto il S.O.

Una possibile soluzione è basare un sistema su un S.o. minimale che fa girare un hypervisor tipo Xen che applica la completa separazione tra MV e rispettivi O.s. In questo caso applicando introspezione ed altri metodi, è possibile verificare l’attendibilità del codice in esecuzione su una particolare macchina.

Il mio problema nasce dal fatto che a volte abbiamo bisogno di verificare un host remoto che assumiamo faccia girare un S.O. che riteniamo di default malevolo. Come facciamo a garantire che le richieste che vengono da quell’host non siano originate da sw malware o simile? Dovremmo poter verificare, senza l’ausilio di Hw di supporto sulla macchina client, che le richieste siano regolari. Dove lo facciamo? Sul mio server strasicuro o sul client? In che maniera se dovessimo agire sul Client? E’ possibile, senza utilizzo di Hw, avere una security chain che garantisca una attestation sicura anche in un ambiente strongly networked?

Ai posteri( e a me) l’ardua sentenza .

~ di diegotech su marzo 27, 2008.

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: