Un'infrastruttura server è fondamentalmente possibile che la persona più intelligente non può violare?

30

TL; DR:

Forse ho esagerato con i dettagli della mia domanda, ma volevo essere sicuro che la domanda fosse chiara poiché l'argomento sembra molto ampio. Ma eccolo qui. La parola "più intelligente" è intesa fondamentalmente, non letteralmente.

Un'infrastruttura server è fondamentalmente possibile che la persona più intelligente non può violare?

Sfondo:

Ho letto articoli sui server di enormi banche (o siti di imbroglio) che sono stati compromessi e in un articolo basato su un'intervista con una società di sicurezza Internet interessata al caso, uno specialista ha affermato che esistono organizzazioni criminali altamente qualificate specialmente in Cina e Russia che hanno a loro disposizione vaste risorse, strumenti e alcuni dei migliori "hacker" del mondo, e questo specialista ha affermato che non esisteva "nessun sistema sulla terra" (connesso al web, ovviamente) che non potevano scendere a compromessi con le risorse a loro disposizione.

(Web-Server) La sicurezza delle informazioni è come gli scacchi:

Non sono molto un giocatore di scacchi, e non sono molto di un punto informazioni. esperto, ma sono un programmatore che scrive software per server e sono interessato a questo. Ignorando qualsiasi fattore di scacchi che potrebbe annullare il mio scenario, come ad esempio la persona che si muove per primo ha un vantaggio o qualcosa del genere, immagina che Information Security sia un gioco di scacchi tra due dei migliori giocatori di scacchi del mondo.

Classico: Se tu ed io dovessimo giocare una partita a scacchi, vinceremo quella che possiede maggiore abilità, conoscenza e intelligenza riguardo al gioco degli scacchi.

Scenario 1 programmato: O forse, se riproduciamo il gioco digitalmente, vincerà quello di noi che scrive il software di scacchi più intelligente.

Scenario 2 programmato: Oppure, ed ecco la chiave, forse è possibile che entrambi siamo così bravi a entrambi gli scacchi e alla programmazione che entrambi scriviamo programmi per computer che giocano a scacchi così bene che nessuno dei nostri programmi può vincere e il gioco termina in una situazione di stallo.

Considera un'infrastruttura server, ad esempio un server bancario o un server applicazioni che deve comunicare con i client sul Web, ma che non deve consentire alle parti criminali di penetrare nei suoi archivi dati.

  • La sicurezza di questa infrastruttura server potrebbe essere come Scenario 1 , ovvero non importa cosa, chiunque abbia il miglior software e conoscenza della sicurezza delle informazioni, le persone che inventano le strategie di sicurezza ad esempio, avrà sempre la possibilità di superare la difesa dell'infrastruttura di un server, indipendentemente dalla sicurezza. Nessuna difesa perfetta è fondamentalmente possibile.

  • Oppure potrebbe essere come Scenario 2 , in cui è fondamentalmente possibile sviluppare un'infrastruttura server che utilizza una strategia di sicurezza che (fondamentalmente) non può essere migliorata da un programma più intelligente. Una difesa perfetta è fondamentalmente possibile.

La domanda

Quindi qual è?

    
posta Viziionary 25.08.2015 - 05:45
fonte

13 risposte

31

La sicurezza può essere dimostrata, ma devi capire cosa è provato

link

Our proof statement in high-level natural language is the following:

The binary code of the seL4 microkernel correctly implements the behaviour described in its abstract specification and nothing more. Furthermore, the specification and the seL4 binary satisfy the classic security properties called integrity and confidentiality.

Integrity means that data cannot be changed without permission, and confidentiality means that data cannot be read without permission.

Our proof even goes one step further and shows that data cannot be inferred without permission – up to a certain degree. So-called information side channels (also called covert channels) are known to exist. The proof only covers those information inference channels that are present in the formal model: the confidentiality proof covers all in-kernel storage channels, but excludes timing channels which must be dealt with empirically.

Quindi, perché non tutti usano solo sel4? (Attualmente il luogo in cui è più probabile incontrarlo è sul processore TrustZone di alcuni dispositivi Apple).

La risposta è che la dimostrazione copre solo il kernel, non il software dello spazio utente che potresti voler eseguire. Non esiste un server web sicuro, ad esempio, per non parlare delle implementazioni linguistiche per le applicazioni che potresti voler eseguire su di esso. E dovresti anche dimostrare la sicurezza della tua applicazione web. Sviluppare queste cose richiederà un investimento molto grande, che nessuna grande azienda è interessata a fare.

I sistemi ad alta sicurezza vengono solitamente attaccati nella chiave e nel punto di gestione degli accessi

Non importa quanto sia sicuro il sistema se l'amministratore lascia la sua password su pastebin per sbaglio. Proprio l'altro giorno abbiamo visto un dipendente della TSA pubblicare un'immagine delle chiavi master (fisiche) della TSA per bloccare i bagagli su Twitter, quindi ora sono tutti compromessi. Password deboli, password indovinate, password memorizzate in modo insicuro, token di sicurezza hardware non validi, impronte digitali copiate: tutti questi sono possibili vettori di attacco.

    
risposta data 26.08.2015 - 17:35
fonte
77

"Nessuna difesa perfetta è fondamentalmente possibile."

Negli scacchi, hai 64 caselle, 2 giocatori che giocano e un set di regole immutabili e comunemente note.

Nelle infrastrutture server, ci sono un numero incalcolabile di risorse e modi per avvicinarsi a tali risorse, un numero sconosciuto di persone che giocano e regole che cambiano costantemente con i giocatori che cercano intenzionalmente di piegare, infrangere o bypassare le regole.

Considera 2 elementi che dimostreranno il mio punto: zero giorni e barrette di cioccolato .

In primo luogo, zero giorni cambiano le regole durante la riproduzione del gioco. Mentre una parte ottiene il beneficio di questo elemento, l'altra parte non è a conoscenza del vantaggio ed è forse ancora incapace di contrastare questi attacchi, anche se alla fine saranno noti. Ogni giorno zero è una nuova regola che viene applicata in modo non uniforme al gioco. Anche se una "strategia di sicurezza perfezionata" può essere concepita e applicata perfettamente, zero giorni possono significare che la strategia è costruita su debolezze sconosciute che potrebbero non essere mai conosciute dal lato difensore.

In secondo luogo, le barrette di cioccolato possono fare di più per inficiare la sicurezza di un'infrastruttura rispetto a qualsiasi altro elemento. Ciò che intendo è che le persone possono essere corrotte o allettate a "cambiare posizione" e concedere un vantaggio al lato opposto, a volte per qualcosa di piccolo come una tavoletta di cioccolato (gli studi mostrano). Phishing, bustarelle, perdita di dati, ecc. Sono tutti aspetti del lato umano del gioco che la tecnologia non è in grado di spiegare completamente. Finché c'è un umano con potere nell'infrastruttura, esisterà sempre quella debolezza del sistema.

Che cosa fare?

Nella storia, vediamo molteplici situazioni in cui un massiccio tentativo di difesa è stato sconfitto da qualcosa di piccolo e imprevisto (ad esempio la porta della Grande Muraglia cinese si è aperta a una concubina che era un doppio agente per i mongoli). L'obiettivo, come difensori, non è quello di montare la difesa perfetta, ma piuttosto di progettare un'infrastruttura elastica e trasparente in cui gli attacchi possano essere visti rapidamente e rispondere completamente. Muri non più alti, ma milizie più vigili. Fondamenti non incrollabili ma un'architettura sostituibile.

    
risposta data 25.08.2015 - 06:09
fonte
18

Nessuno ha trovato motivi particolari per ritenere di aver trovato un sistema del genere.

Hai menzionato Chess, che è un bel gioco su una griglia 8x8. Considera che un server moderno è leggermente più complicato di così. Facciamo invece giocare in una scheda 65536x65536, per renderla più realistica. Inoltre, negli scacchi, più giochi, meno posizioni sono possibili. Invece, un sistema più realistico è come Go. Più giochi, più la posizione può intrecciarsi. Noterò che il gioco di Go rende il nostro lavoro sui computer di Chess un gioco da ragazzi.

Conway, circa nel 1970, cercò di rompere il gioco di Go. Scoprì che spesso il tabellone sembrava dividersi in sottogiochi, ognuno dei quali giocava nel suo spazio per sommarsi al vincitore finale. Ha trovato il modo in cui hanno lavorato insieme è stato molto complicato. Di conseguenza, ha trovato numeri surreali, uno schema numerico che è letteralmente più vasto dei numeri reali che usiamo in fisica. Non è uno scherzo, in realtà è più facile prevedere il tempo a livello globale che vincere a Go by divide et impera. Potrebbe esserci un caso di "vittoria" qui? Forse. Buona fortuna a trovarlo. L'unico modo per sapere con certezza è di rendere conto dell'intera scheda 65536x65536, tutto in una volta.

Kevin Mitnick in uno dei suoi libri ha commentato:

The only truly secure computer is one that is disconnected from the internet, powered down, unplugged, stored in a concrete bunker, under armed guard. And even then, I'd check on it every once in a while."

    
risposta data 25.08.2015 - 07:45
fonte
8

Probabilmente esiste un sistema simile, ma probabilmente non lo troveremo

Abbiamo molti algoritmi da usare in Sicurezza. Alcuni di loro probabilmente sono corretti. In particolare, alcuni di loro sono probabilmente esponenzialmente difficili da rompere. In effetti, ne conosciamo alcuni che sono assolutamente impossibili da rompere (una sola volta). Il problema è implementazione .

La sicurezza non riguarda chi è più intelligente. La sicurezza riguarda l'attenzione del difensore v.s. l'intelligenza e la creatività dell'aggressore. Un difensore non deve essere brillante se riesce a seguire un algoritmo con estrema attenzione. Difesa perfetta v.s. l'offesa perfetta si traduce in un vincitore difensivo in terra di sicurezza.

Il problema è che i server sono spesso macchine complesse. Hai il sistema operativo e mirate di programmi, e diversi protocolli e linguaggi di programmazione e AHH. È quasi impossibile avere una sicurezza perfetta in un simile ambiente.

D'altra parte, se un sistema è abbastanza semplice, un umano probabilmente può renderlo perfetto. Ad esempio, ho un messaggio, $ M $, codificato come un numero da 1 a 6. Ora tirerò un dado, che sarà la chiave $ K $, e aggiungerò $ M $ e $ K $ modulare $ 6 $ , per ottenere il testo cifrato $ C $.

Il testo cifrato è $ 5 $. Qual era il messaggio?

Questo è un esempio è stato così semplice, ho potuto plausibilmente considerare tutte le possibilità. D'altra parte, un server è piuttosto complesso.

Che consiglio possiamo trarre da questo. Rendilo semplice, stupido. (Il principio K.I.S.S.) Anche se è probabilmente al di fuori della nostra capacità umana di creare un server perfetto, più semplice è il server e i nostri algoritmi, meglio è. Documenta il tuo codice, rendilo comprensibile, rendilo semplice. Ogni riga di codice ha una ragione. Usa un sistema operativo semplice (Nota: non confondere la semplicità con la facilità d'uso. Pensa ad Arch Linux, non a iOS.) Conserva solo il minimo indispensabile di programmi. Scegli un linguaggio di programmazione con una piccola definizione, e senza regole strane e simili (ti sto guardando, javascript.) Anche se questo non lo renderà perfetto, ci vorranno un sacco di modi per renderti più sicuro.

    
risposta data 25.08.2015 - 21:41
fonte
8

Il confronto con gli scacchi è interessante perché mostra cosa non protegge un sistema. Rispetto agli scacchi, il gioco tra buoni e cattivi nella sicurezza IT non ha regole fisse, non sai chi sono i tuoi avversari e puoi essere attaccato al di fuori della scacchiera. E se l'avversario perde una cifra, può prenderne una nuova mentre non lo fai.

  • Hai risorse limitate (tempo, denaro, conoscenze) per proteggere i tuoi sistemi. Anche gli attaccanti hanno risorse limitate, ma se sei un obiettivo interessante ci saranno abbastanza hacker interessati che in totale potrebbero avere più risorse di te.
  • Con queste risorse limitate devi proteggere tutto. Questo significa chiudere tutti i possibili (e probabilmente sconosciuti) modo / exploit che un utente malintenzionato potrebbe utilizzare per entrare. L'autore dell'attacco deve trovare solo un modo e usarlo.
  • Oltre a ciò c'è un conflitto tra usabilità e sicurezza. Dai un'occhiata al controllo degli accessi con password, ai modi per reimpostare le password dimenticate ecc. Questi sono di design non sicuri al 100% perché rappresentano un compromesso tra sicurezza e usabilità. Potresti trasferire tutti i tuoi utenti a metodi più sicuri come l'autorizzazione a due fattori, i certificati client, le smart card ecc. Ma questi potrebbero risultare troppo sconvenienti per gli utenti e perdere clienti. Inoltre, non sono sicuri al 100%, ma solo più sicuri delle password.
  • C'è anche un conflitto tra sicurezza e prestazioni. Più è difficile analizzare tutti i dati in arrivo per rilevare gli attacchi più lentamente sarà. Mentre puoi lanciare più hardware sul problema, non si scalerà linearmente, quindi devi trovare un equilibrio tra velocità e profondità dell'analisi.
  • E devi occuparti di software che è insicuro. Potrebbe essere closed source quindi non puoi guardarlo e risolverlo ma anche con l'open source non hai il tempo e l'esperienza per scoprire bug o backdoor accidentalmente o deliberatamente nascosti. Anche se avessi tutti i soldi e i migliori esperti che potresti ottenere per i soldi, hai un tempo limitato per fare la valutazione e l'analisi non scala in modo lineare con il numero di esperti (cioè non aiuta a ottenere 1000 esperti se analizzare 1000 righe di codice, perché queste 1000 linee non sono indipendenti l'una dall'altra).
  • E infine ci sono le persone che proteggono la tua infrastruttura e ne hanno accesso. Sono umani quindi possono essere attaccati con l'ingegneria sociale, corrotti, ricattati ...

In sintesi: mentre in teoria potresti avere risorse illimitate (tempo, denaro, conoscenza, hardware veloce illimitato) per proteggere un sistema e avere solo clienti che sono anche tali esperti e preferiscono metodi di accesso sicuri e convenienti - in realtà tu non 't. Ci sarà sempre un modo per entrare, quindi dovresti essere preparato per questo. Non credere che riuscirai mai a ottenere un'infrastruttura sicura al 100%, ma invece a creare un'infrastruttura che non sia solo robusta contro attacchi esterni, ma in cui sia possibile rilevare un compromesso e recuperare da esso il più velocemente possibile. Il danno potrebbe essere fatto ma dovrebbe essere limitato.

    
risposta data 25.08.2015 - 07:26
fonte
6

Supponiamo che la sicurezza sia come gli scacchi

A differenza della maggior parte delle persone qui, in realtà conosco un bel po 'di scacchi e abbastanza sulla sicurezza per rendere questa una risposta utile.

Se consideri gli scacchi, troverai che:

The number of possibilities is so large that no practical strategy covers them all explicitly

Pertanto, come vediamo anche nella pratica, il partecipante più strong ha più probabilità di vincere. Ma anche così, c'è sempre la possibilità che una persona strong / giocatore di computer perda (molto) più debole.

Quindi per concludere:

A meno che tu non conosca la mossa giusta in ogni situazione possibile, non è possibile una difesa perfetta

    
risposta data 25.08.2015 - 10:24
fonte
4

Una difesa perfetta è fondamentalmente possibile.

In realtà sono mediocre a scacchi, ma per me è banale stallo nei confronti dei più grandi giocatori del mondo e posso persino mettere in stallo i migliori giocatori di scacchi che giocano meglio.

Mi siedo sulle mie mani e aspetto che il tempo si esaurisca e il maestro di scacchi non possa rivendicarmi una vittoria.

Allo stesso modo, il server impenetrabile non risponde mai alle richieste dei client e non può essere sconfitto nemmeno dall'hacker più abile.

Nonostante la sua perfetta sicurezza, è totalmente inutile.

    
risposta data 25.08.2015 - 21:11
fonte
2

La sicurezza delle informazioni è fondamentalmente diversa dagli scacchi. Gli scacchi sono un modello scadente da applicare alla sicurezza delle informazioni, anche se le differenze tra i due possono essere illuminanti.

Gli scacchi sono un gioco di informazioni perfette. Entrambe le parti sanno esattamente dove sono tutti i pezzi in ogni momento. Nella sicurezza delle informazioni gran parte delle informazioni è nascosta e una parte può ottenere un vantaggio avendo più informazioni rispetto alle altre. "Più intelligente" non ha nulla a che fare con questo.

Gli scacchi sono un gioco in cui tutte le regole sono conosciute e impostate. Nella sicurezza delle informazioni, l'esistenza di regole è discutibile nel migliore dei casi. Le "Regole" sono meglio pensate come un ambiente e quindi un bersaglio mobile.

Gli scacchi sono un gioco a somma zero. Nella sicurezza delle informazioni tutti possono perdere, tutti possono vincere, nessuno può vincere e vincere e perdere non può significare nulla.

Chess è un gioco con due giocatori. La sicurezza delle informazioni ha più attori con motivazioni diverse (vedi "non un gioco a somma zero").

Gli scacchi hanno una vittoria e una perdita chiaramente definite. Le vittorie sono complete e le perdite sono complete. La sicurezza delle informazioni è molto più fangosa e per nulla in bianco e nero. Il sistema può essere parzialmente compromesso e le perdite sono mitigate.

    
risposta data 25.08.2015 - 23:32
fonte
2

Sì. Un'infrastruttura null server è fondamentalmente impossibile da violare.

Nessun server = niente da violare = fondamentalmente impossibile da violare.

Qualsiasi altra cosa è fondamentalmente possibile da violare.

    
risposta data 27.08.2015 - 16:36
fonte
1

Ovviamente, non esiste una soluzione tecnica perfetta per prevenire errori umani o impedire a un utente malintenzionato di corrompere il tuo sysadmin. Ma se guardiamo al lato tecnico puramente deterministico di questo, allora la risposta è (banalmente) sì.

È possibile guardare un sistema connesso in rete come una funzione. Avete alcune funzioni che volete calcolare, dove gli input sono uno stato di sistema e bit che arrivano sul filo e le uscite sono un nuovo stato di sistema e bit inviati sul filo. Se la funzione è calcolabile, esiste un'implementazione di sistema che farà esattamente questo.

Il problema è che decidere se un determinato sistema calcola perfettamente una funzione in generale è impossibile, e impossibile da determinare con certezza nella pratica quando il comportamento del sistema è complesso. Quindi una persona il cui sistema è veramente impenetrabile (di nuovo, da questa limitata prospettiva tecnica) non potrebbe mai esserne sicuro. Viceversa, qualcuno che è completamente sicuro della sicurezza di un sistema molto complesso detiene quasi sicuramente questa convinzione in modo irrazionale.

    
risposta data 25.08.2015 - 23:15
fonte
1

La vera domanda dietro questo è piuttosto: quante risorse sei disposto a spendere per rompere la difesa? E qual è anche il livello minimo di sicurezza che può essere considerato perfettamente sicuro? Nessun accesso come mai? Accedere a qualsiasi dato casuale? O solo l'accesso ai dati che possono essere utilizzati per profitto è considerato una violazione?

Per usare il tuo esempio di scacchi: in futuro, costruiremo un computer che contiene tutte le posizioni di tutti i possibili giochi di scacchi. Porsi contro se stessi probabilmente porteranno al 100% in pareggio / stallo. Con un insieme "limitato" di mosse possibili questo è un presupposto valido di una difesa perfetta.

La realtà ha troppe opzioni per aggirare le regole e le possibili situazioni. Forse non vuoi rubare i dati, forse vuoi solo che tutti i backup cessino di esistere. Quindi bombardi la struttura del server e sei contento dei detriti non funzionali.

Nella vita reale, soluzioni come sistemi di rilevamento delle intrusioni, celle frigorifere (sistemi di archiviazione che non sono in diretta sul web), account aggressivi e amp; i processi di gestione delle password, la progettazione di applicazioni difensive e l'analisi del comportamento di utilizzo possono far lievitare i costi per incidere tali sistemi a un tale livello, ma solo tasche molto profonde potrebbero persino pensare di attaccarlo.

E avresti bisogno di abilità simili a quelle di "James Bond" e di abilità tattiche ben addestrate per farcela. Per una parte molto ampia della comunità degli hacker, questa sarebbe considerata una difesa "quasi" perfetta.

Anche i siti più compromessi nelle notizie non sanno chi si trova nei loro "prati digitali". Molti hacker trascorrono settimane o mesi nei loro sistemi, senza essere rilevati. Semplicemente non pensavano di spendere milioni di dollari in minima difesa, perché non è richiesto dalla legge e le cause legali sono potenzialmente più economiche che iniziare il gioco degli scacchi di "hacking defense".

    
risposta data 27.08.2015 - 13:34
fonte
1

È molto più semplice progettare un sistema per tenere lontane le persone più intelligenti rispetto a progettarne uno per tenere fuori la gente senza nome, senza vergogna, creativa e persistente.

Le persone intelligenti procedono in modo identificato, lungo percorsi prevedibili di sforzo ed esplorazione, e fanno affidamento su un insieme di ipotesi miseramente prevedibili e simili. Un genio sembra sempre presumere che quando si utilizza la funzione di aggiunta che 2 e 2 sia sempre 4, e mai 22, o 2 & 2.

La più grande minaccia per un sistema empirico, razionale - in termini umani - si rivela essere un avversario che possiede meno di un QI di livello geniale, tende a essere un anticonformista o danze al ritmo del proprio tamburo piuttosto che seguire le norme sociali della mandria, e la scarsità non viene mai identificata come quella intelligente nei gruppi sociali. Ben regolato, a proprio agio nella propria pelle e in quello che sono e accettando il proprio status come non il capobranco in nessuna area, questa persona non è influenzata né si impegna nella frivola competizione personale che potrebbe circondarli. Autodidatta, autodidatta, ispirata e guidata dalla realtà interiore interiore, questa persona accoppia una certa scintilla di spontaneità e creatività genuina, non razionale, con persistenza incrollabile e volontà o volontà interiore, temperata, disciplinata.

Non hanno bisogno della tua convalida sociale, quindi tutta una serie di exploit di ingegneria sociale si rivelano inutili. Spesso passano inosservati tra la folla, poiché non si preoccupano né competono per l'attenzione di nessuno, tranne per quelli che essi stessi identificano come interessanti o degni del loro sforzo e attenzione.

Personalmente ho assistito a una possibilità in alcuni momenti preziosi della vita che una persona come me descrive sfidare, violare e invalidare le specifiche di progettazione e implementazione dei geni più intelligenti.

Ancora una volta, preferirei progettare un sistema contro le persone più intelligenti che contro persino una persona come quella che ho descritto.

    
risposta data 28.08.2015 - 01:36
fonte
1

Se c'è un modo legittimo, c'è un modo illegittimo.

L'unico server che è fondamentalmente impossibile da violare è quello che è fondamentalmente impossibile accedere. Nella sicurezza di rete, questo è noto come "air-gapping"; un server o una sottorete è fisicamente disconnesso da qualsiasi altra rete, incluso il mondo esterno. In combinazione con la sicurezza fisica dei componenti di questa rete airgapped, che impedisce a persone non autorizzate di raggiungere e toccare fisicamente qualsiasi componente hardware connesso alla rete, i computer su questa rete sono inattaccabili da un hacker.

... Tipo di. Ancora una volta, se c'è un modo legittimo, c'è un modo illegittimo. La sicurezza fisica è in definitiva uno sforzo umano e quindi alla fine fallibile. L'ingegneria sociale può essere utilizzata per aggirare i protocolli di sicurezza faccia a faccia, ingannando un "gatekeeper" nel permettere a una persona non autorizzata di entrare o inducendo una persona autorizzata a fare qualcosa che non dovrebbe fare a nome di una persona non autorizzata. Migliore è che gli umani coinvolti siano addestrati a seguire i protocolli di sicurezza fisica, meno probabile sia questo, ma c'è sempre una possibilità non nulla di aggirare la sicurezza fisica fino alla forza bruta inclusa (qualcosa come il raid Zero Dark Thirty, anche se non minimamente, potrebbe teoricamente essere perpetrato contro qualsiasi sede aziendale sul pianeta, è solo questione di avere le persone giuste con l'attrezzatura giusta per fare il lavoro).

    
risposta data 28.08.2015 - 20:49
fonte

Leggi altre domande sui tag