In che modo l'Informatica teorica si collega alla sicurezza?


11

Quando penso a un software insicuro, penso che sia "troppo utile" e possa essere maltrattato da un utente malintenzionato. Quindi, in un certo senso, proteggere il software è il processo che rende il software meno utile. In Theoretical Computer Science non stai lavorando con il mondo reale. Quindi ci sono problemi di sicurezza quando si lavora con la teoria pura? O dall'altra parte della medaglia, Theoretical Computer Science influenza il mondo reale delle persone che vengono hackerate? In tal caso, quali argomenti di sicurezza sono considerati teorici?


9
La prospettiva della teoria del CS presentata è soggettiva e molto discutibile e non è nemmeno necessario porre la domanda. La domanda sembra focalizzarsi specificamente sull'hacking, che è un argomento ampio in sé e per sé (che spazia fino alle tecniche di ingegneria sociale) e non si avvicina a ciò che comporta "essere sicuri". Per questi motivi ho annullato il voto. Tuttavia, sento che la domanda proviene da un buon posto e presenta alcuni aspetti interessanti, quindi ho risposto di seguito.
Ross Snider,

Risposte:


20

La tua intuizione che "insicurezza" sia dovuta a software "troppo utile" è corretta, in un certo senso. Esiste una vasta e crescente letteratura teorica sulla "privacy differenziale" che formalizza il tuo intuito. Vedi ad esempio qui: research.microsoft.com/en-us/projects/databaseprivacy/dwork.pdf

ϵeϵ

0


14

In diversi modi:


Onestamente non credo che tu abbia mai trovato una vulnerabilità, rattoppato un singolo pezzo di codice o abbia persino visto il funzionamento interno di una vulnerabilità del mondo reale.
The Rook,

8
Usando OllyDbg ho corretto la mia dll gdi per correggere la (seconda) vulnerabilità del cursore (ovviamente senza codice sorgente) prima della patch di Microsoft martedì. Ancora una volta usando OllyDbg ho patchato un emulatore di sorgenti chiuse per renderlo imbarazzante (imbarazzante) per una competizione di Pokemon. Ho trovato un giorno 0 in un progetto webcam e ho ottenuto punteggi abbastanza alti su un gran numero di wargame (incluso Blacksun, che ha abilitato ASLR e PaX). Non menzionerò alcune delle cose più nefaste che ho fatto ... Scrollata di spalle; Perché dovrebbe importare se avessi o no? Per favore, non fiamma.
Ross Snider,

13
@The Rook: se ritieni che l'elenco di Ross abbia poca connessione con la pratica effettiva della sicurezza del software, allora dillo. Forse anche dare alcuni esempi sarebbe utile, o aggiungere una risposta ai tuoi dettagli su quanto sia lontana la ricerca sulla sicurezza TCS dall'effettiva pratica di sicurezza (che penso sarebbe molto interessante da leggere). Ma non c'è bisogno di sminuire Ross.
Joshua Grochow,


10

C'è molta motivazione nel mondo reale per lo studio degli algoritmi di streaming che deriva dal rilevamento delle intrusioni di rete. Il documento seguente utilizza algoritmi di streaming per l'entropia empirica per rilevare anomalie nel traffico di rete.

Yu Gu, Andrew McCallum e Don Towsley. Rilevamento di anomalie nel traffico di rete utilizzando la massima stima entropica. In IMC '05: Atti della 5a conferenza ACM SIGCOMM sulla misurazione di Internet, pagine 1–6, 2005


8

A differenza delle altre risposte, questo è più in linea con "le cose di cui dovremmo preoccuparci quando diciamo che qualcosa è" dimostrabilmente sicuro "" rispetto ai luoghi in cui TCS è stato usato nella sicurezza. Pertanto, affronta la prima questione dei problemi di sicurezza quando si lavora con la teoria.

Come affermano gli hacker, i risultati teorici sono spesso tangenziali per la sicurezza del mondo reale. Questo tipo di argomento è stato reso più teorico, scientifico e preciso da Alfred Menezes e Neal Koblitz nelle loro serie di articoli " Another Look " (attenzione: il sito mi sembra un po 'conflittuale, ma penso che l'idea di base di mettere in discussione le ipotesi è molto importante). Sottolineano debolezze nelle ipotesi standard nella crittografia, anche nei documenti seminali.

Alcuni esempi (citando / parafrasando alcuni punti dal loro sito):

  1. Un teorema di sicurezza è condizionale - presuppone l'intrattabilità di qualche problema matematico.

  2. Spesso l'assunzione di intrattabilità è fatta per un problema complicato e inventato: in alcuni casi il problema è banalmente equivalente al problema della crittoanalisi per il protocollo la cui sicurezza viene "dimostrata".

  3. A volte una prova ha un ampio divario di tenuta, ma le dimensioni dei parametri sono ancora consigliate come se la prova fosse stata stretta. In tali casi, la prova di solito fornisce un limite inferiore inutile al tempo di esecuzione di un attacco riuscito. Inoltre, un risultato asintotico non fornisce necessariamente alcuna garanzia di sicurezza per i parametri nell'intervallo utilizzato nella pratica.

  4. Un teorema di sicurezza utilizza un certo modello di sicurezza. Alcuni attacchi, in particolare gli attacchi del canale laterale, sono molto difficili da modellare e i modelli proposti sono dolorosamente inadeguati.


6

I dimostratori di teoremi sono stati usati in una certa misura per dimostrare la correttezza di software, hardware e protocolli. Vedi, ad esempio, qui o qui .

Il problema del flusso di dati in modi indesiderati attraverso i programmi (causando così una potenziale perdita) è stato modellato teoricamente usando la nozione di (non) interferenza; ottenere puntatori qui .


3

La decidibilità è una preoccupazione centrale nella ricerca del linguaggio di programmazione. Cioè, molti sforzi vengono investiti nella costruzione di linguaggi di programmazione che accettano solo codice che soddisfa determinate proprietà. I linguaggi statici tipici forniscono solo deboli garanzie, come rifiutare un programma se non esistono determinati metodi, ma immaginiamo se il linguaggio potrebbe anche lanciare programmi che, ad esempio, usano in modo improprio i mutex o tentano di leggere oltre la fine delle regioni di memoria. È chiaro che i problemi di decidibilità arrivano rapidamente (scenario più semplice: specifica che il tuo compilatore dovrebbe accettare solo programmi di chiusura), e certamente, ci sono problemi di efficienza (il controllo del tipo ML ha casi doppiamente esponenziali).

In ogni caso, la comunità di ricerca di PL è molto interessata alla sicurezza (ti fidi che il tuo browser esegua un codice straniero arbitrario ?!), e le loro domande portano a molte classiche domande sulla teoria CS.


Qualsiasi linguaggio di alto livello (leggi: diverso da C [++]) non fornisce al programmatore il controllo sull'accesso alla memoria, quindi considererei questo problema risolto.
Raffaello,

@Raphael: Dato che una grande quantità di software è ancora scritta in C e C ++, questo problema non può essere semplicemente considerato risolto. Inoltre, le tecniche per affrontare gli attacchi di iniezione di codice su Javascript, ad esempio, sono ancora agli inizi. C'è molto da fare.
Dave Clarke,

1
Il fatto che alcuni ambienti ignorino le soluzioni esistenti (a volte per buoni motivi) non rende il problema (qui: accesso agli indirizzi di memoria proibiti) meno risolto. Alcune cose che sono difficili da controllare possono essere facilmente eluse dagli invarianti appropriati. Ad esempio, è possibile richiedere una prova formale di risoluzione al proprio programmatore (vedi Isabelle / HOL).
Raffaello,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.