Does computer insecurity exiss because of the nature of computers?
In realtà sì, sì sì. Tutti e il loro cane ti diranno che è perché le persone sono stupide che è praticamente vero nel senso che siamo tutti imperfetti, ma non è tutta la storia.
In sostanza, un ragazzo che è essenzialmente la versione ungherese di Feynman ha inventato l'architettura moderna dei computer, chiamata Von Neumann Architecture . L'essenza di base di questo è che i programmi e i dati sono tutti memorizzati nello stesso posto in memoria e si può manipolare l'altro.
Quindi, usare i soliti umani sono metafora del computer, immagina di avere un amico che può solo leggere le istruzioni da un pezzo di carta e fare esattamente ciò che dicono, scartando le complessità degli umani che hanno interpretazioni diverse e tutte quelle cose sociali che stanno rovinando la mia metafora. In questo caso, il tuo amico è in una biblioteca. Gli dai un pezzo di carta. Segue ciecamente le tue istruzioni e quando ha finito (che è molto veloce, tra l'altro) ha ordinato la tua collezione di album in ordine alfabetico E ha avuto il tempo di dirti che ha bisogno di un aggiornamento.
Ora, Mr Malicious è un brutto lavoro. Prende un pezzo di carta, scrive "compra una pistola, rapina una banca e timbrica gli album dei beat nella collezione che hai appena ordinato" e lo infila in un album di Chesney Hawkes. Dà poi alcune istruzioni al tuo amico che sorpresa sorpresa lo coinvolge nell'aprire l'album di Chesney Hawkes e nella lettura di quelle istruzioni. Oh, un pezzo di carta con le istruzioni! Saltando su e giù sugli album dei Beatles, si precipita a comprare una pistola e rapinare una banca.
Vedi - i programmi sono dati. Sono memorizzati nello stesso posto. Questa è una caratteristica immensamente utile, una caratteristica esplicita del design dei computer moderni. Ci consente di avere compilatori che acquisiscono dati e producono codice, hanno linguaggi dinamici e ogni tipo di altre cose meravigliose. Ma porta anche l'insicurezza di essere in grado di eseguire accidentalmente cose che dovrebbero essere dati come codice, e quindi rendere il computer proverbialmente auto-guida da una scogliera.
C'è un'alternativa ed è chiamata Harvard Architecture . In questo scenario, codice e dati sono cose separate e non è possibile inserire codice dannoso laddove i dati dovrebbero essere, perché i processori di Harvard Architecture guarderebbero e andranno "sì giusto!". Ciò non significa che tali PC non possano bloccarsi, al contrario, le istruzioni logiche possono ancora contenere bug - è solo che non saremo in grado di sfruttarli così facilmente.
HA ha anche alcune limitazioni severe. Potresti scrivere compilatori per uno, ma non saresti in grado di testare ciò che hai scritto senza prima trasferire il programma dall'archivio dati allo storage del codice. Le lingue dinamiche ottengono molto, molto più difficile. I programmi che si aggiornano diventano difficili. E così via.
Quindi, sì, è nella natura degli esseri umani che non sempre tutto va bene, ed è nella natura dell'architettura del computer che questo fatto può essere sfruttato per fare cose cattive.
Questo non significa che non ci siano soluzioni alternative: infatti W ^ X e il bit NX sono architetture harvard come concetti per il backend di von neumann x86.
Note:
- Tecnicamente, una CPU x86 è un'architettura Harvard modificata. Il backend (bit da cui si programma da) è Von Neumann, il nucleo è Harvard.
- La metafora è leggermente cliché e non perfetta. Lo so. Siamo spiacenti.