Menu
Gratis
Registrazione
Casa  /  Fasi del ciclo mestruale/ Linux è davvero il sistema operativo più sicuro? Sistemi operativi affidabili e sicuri? ⇡ In conclusione.

Linux è davvero il sistema operativo più sicuro? Sistemi operativi affidabili e sicuri? ⇡ In conclusione.

Ogni giorno gli smartphone vengono attaccati da hacker e malware, quindi il sistema operativo deve essere il più sicuro possibile per proteggere i dati personali dell'utente.

In questo articolo esamineremo i sistemi operativi mobili più diffusi e scopriremo qual è il più sicuro.

Androide

Il sistema operativo mobile di Google è uno dei più deboli in termini di sicurezza. Gli esperti riferiscono che un utente malintenzionato può hackerare uno smartphone semplicemente inviandogli un messaggio multimediale. Tuttavia, le ultime versioni di Android prestano particolare attenzione alla sicurezza, quindi la situazione non è così critica.

Poiché Android è un sistema open source, gli sviluppatori possono utilizzarlo gratuitamente per i loro scopi. In altre parole, Android è un grande bersaglio per hacker e malware. L’anno scorso, circa il 97% dei malware sono stati creati appositamente per i dispositivi Android.

Google Play Store non può garantire la sicurezza completa durante il download e l'installazione di applicazioni e, se scarichi programmi da altre fonti, il rischio di contrarre un virus aumenta rapidamente.

La realtà è che Android è il sistema operativo mobile più utilizzato al mondo, il che significa che è più redditizio hackerarlo.

Mora

La popolarità degli smartphone BlackBerry è diminuita drasticamente negli ultimi anni, nonostante le ottime recensioni degli ultimi dispositivi. L'azienda ha cambiato il proprio sistema operativo mobile in Android, cosa che tuttavia non l'ha salvata dal fallimento.

Molti dipendenti pubblici utilizzavano gli smartphone BlackBerry perché considerati i più sicuri.

Il sistema operativo BlackBerry utilizzava la crittografia end-to-end, indipendentemente dal modello di smartphone. Sfortunatamente, BlackBerry è una cosa del passato.

Ubuntu Touch

Dopo il rilascio del primo smartphone Ubuntu lo scorso anno, molti prevedevano che i produttori sarebbero passati da Android al sistema Linux che è Ubuntu.

Per coloro che non conoscono Ubuntu Touch, è un sistema operativo open source simile ad Android completamente gratuito, supportato dalla comunità Free/Libre Open-Source Software e Canonical Ltd.

In uno dei nostri articoli abbiamo parlato di come è possibile.

Ubuntu ha un elevato livello di protezione antivirus, tuttavia è un sistema operativo open source, quindi il malware può comunque penetrare nei dispositivi mobili.

L'App Store di Ubuntu è più sicuro del Google Play Store. Inoltre, il proprietario del dispositivo mobile deve fornire determinate autorizzazioni prima di installare l'applicazione.

Un altro vantaggio è il fatto che Linux non è la piattaforma più popolare oggi, quindi gli aggressori hanno poca voglia di hackerare questo sistema. Per darvi un’idea della situazione, a ottobre 2015 l’hackeraggio contava complessivamente 15 persone.

Grandi aziende come Netflix, Snapchat e Dropbox utilizzano il sistema operativo Ubuntu. Se ancora non sei impressionato, forse cambierai idea dopo aver appreso che anche i dipendenti della Stazione Spaziale Internazionale e del Large Hadron Collider utilizzano Ubuntu.

Windows Phone e Windows 10 Mobile

Microsoft mantiene il suo Windows App Store al guinzaglio, quindi a meno che tu non voglia eseguire il jailbreak del tuo Windows Phone, dovresti utilizzare solo i servizi ufficiali per scaricare app. La cosa principale delle app su Windows Phone è che non interagiscono tra loro a meno che tu non dia il permesso.

Una caratteristica della nuova versione del sistema operativo Windows 10 Mobile è la crittografia del dispositivo, che sostanzialmente blocca lo smartphone in caso di smarrimento. Questo viene fatto utilizzando la sofisticata tecnologia BitLocker. Se non disponi di una chiave di crittografia, i tuoi file saranno illeggibili. La chiave di crittografia è un codice PIN che devi inserire in Impostazioni > Sistema > Crittografia dispositivo.

iOS

Proprio come Google Play Store è il repository principale per le applicazioni Android, l'App Store memorizza tutte le applicazioni per i dispositivi iOS.

Il sistema operativo iOS è chiuso. Ciò significa che solo Apple può apportare modifiche e aggiornamenti alla piattaforma. Sembrerebbe che ciò garantisca il massimo livello di sicurezza, ma non del tutto.

Ad esempio, circa 500 milioni di utenti dell’app di messaggistica cinese WeChat sono stati violati dopo il rilascio di una versione modificata di Xcode approvata da Apple.

Molti di voi hanno sentito parlare dell'hacking degli account iCloud di celebrità. Se una volta Apple era garante della sicurezza, oggi l'azienda non è così attenta al riguardo.

In termini di popolarità iOS è secondo solo ad Android, quindi non sorprende che gli aggressori cerchino falle di sicurezza nel sistema operativo.

Tra le qualità positive di iOS vale la pena notare che la piattaforma mobile è davvero difficile da hackerare. Non molto tempo fa, l'FBI ha arrestato un terrorista, dopo di che ha chiesto ad Apple di fornire i dati dal suo smartphone iPhone. L'azienda ha rifiutato. Alla fine i federali trovarono un hacker che accettò di hackerare un dispositivo iOS per 1,3 milioni di dollari. Se fosse così facile hackerare iOS, non sarebbero d'accordo a pagare così tanti soldi, giusto?

Chi è il vincitore?

Ogni sistema operativo ha i suoi pro e i suoi contro.

androide: Se monitori attentamente le tue attività online e i link, i messaggi e gli MMS sospetti e scarichi applicazioni solo da Google Play Store, probabilmente non scoprirai mai la presenza di hack e virus sul tuo dispositivo Android.

Gli smartphone Nexus, ora Google Pixel, sono i dispositivi Android più sicuri.

Mora: Vecchie versioni del sistema operativo Mora aveva davvero un alto livello di sicurezza. Tuttavia l'azienda è passata alla piattaforma Android per i suoi dispositivi, per cui corrono lo stesso rischio di infezione degli altri smartphone Android.

Ubuntu: Anche se sembra essere il sistema operativo più sicuro oggi disponibile, non siamo sicuri che rimarrà tale quando (e se) il numero di utenti attivi aumenterà.

Telefono Windows: Lo stesso si può dire per gli smartphone basati su Windows. Quando la quota di mercato aumenta, aumenta il numero di hack e attacchi di virus. Tuttavia al momento il sistema sembra essere molto affidabile.

iOS: Nonostante una serie di recenti problemi di sicurezza, Apple gode di un alto livello di fiducia tra gli utenti. Dato che il sistema operativo è chiuso, l'azienda può rilevare rapidamente il malware e adottare le misure necessarie per colmare la falla di sicurezza.

Qual è lo smartphone più sicuro che consigliamo in questo momento? Se preferisci un dispositivo più vecchio, BlackBerry Priv è una buona opzione. Se vuoi qualcosa di più nuovo, dovresti scegliere un dispositivo con Ubuntu.

Quando è stata l'ultima volta che la tua TV si è spenta improvvisamente o ti è stato richiesto di scaricare urgentemente una patch software dal Web per correggere un errore critico? Alla fine, se hai una TV non proprio antica, in realtà è lo stesso computer - con un processore centrale, un grande monitor, una sorta di elettronica analogica per decodificare i segnali radio, un paio di ingressi/uscite speciali dispositivi (telecomando, unità disco integrata per cassette o DVD) e con software memorizzato nella RAM. Questa domanda retorica ci riporta a uno spiacevole problema di cui l'industria informatica non ama parlare. Perché televisori, lettori DVD, lettori MP3, telefoni cellulari e altri dispositivi elettronici dotati di software sono abbastanza affidabili e ben protetti, ma i computer no? Naturalmente, ci sono molte “spiegazioni” per questo: i computer sono sistemi flessibili, gli utenti possono cambiare software, l’industria della tecnologia dell’informazione non è ancora sufficientemente sviluppata e così via. Ma poiché viviamo in un’epoca in cui la stragrande maggioranza degli utenti di computer ha poca conoscenza delle questioni tecniche, tali “spiegazioni” non sembrano loro convincenti.

Cosa si aspetta il consumatore da un computer? Lo stesso della TV. Lo compri, lo colleghi e funziona benissimo per i prossimi dieci anni. I professionisti IT dovrebbero tenere conto di queste aspettative e rendere i computer affidabili e sicuri quanto i televisori.

Il punto più debole in termini di affidabilità e sicurezza rimane il sistema operativo. Nonostante il fatto che i programmi applicativi contengano molti difetti, se il sistema operativo fosse privo di errori, l'erroneità dei programmi applicativi non avrebbe conseguenze così gravi come quelle attuali, quindi in questo articolo ci concentreremo sui sistemi operativi.

Ma prima di entrare nei dettagli, qualche parola sul legame tra affidabilità e protezione. I problemi che sorgono in ciascuna di queste aree hanno spesso una radice comune: i bug del software. Un errore di overflow del buffer può causare un arresto anomalo del sistema (un problema di affidabilità), ma consente anche a un virus scritto in modo intelligente di entrare nel computer (un problema di sicurezza). Sebbene in questo articolo parleremo principalmente di affidabilità, è opportuno tenere presente che una maggiore affidabilità può portare a una maggiore protezione.

Perché i sistemi sono inaffidabili?

I moderni sistemi operativi hanno due caratteristiche che li rendono meno affidabili e meno sicuri. In primo luogo, questi sistemi operativi sono di dimensioni enormi e, in secondo luogo, hanno un isolamento degli errori molto scarso. Il kernel Linux ha oltre 2,5 milioni di righe di codice e il kernel Windows XP è almeno il doppio.

Uno studio che ha esaminato l’affidabilità del software ha rilevato che i programmi contenevano tra 6 e 16 errori per ogni 1.000 righe di codice eseguite. Secondo un altro studio, il tasso di errori di programma varia da 2 a 75 per 1000 righe di codice eseguite, a seconda delle dimensioni del modulo. Anche basandosi su una stima conservativa di 6 bug per 1000 righe di codice, il kernel Linux sembra contenere circa 15.000 bug; Windows XP: almeno il doppio.

A peggiorare le cose, in genere circa il 70% del sistema operativo è costituito da driver di dispositivo, che hanno tassi di errore da tre a sette volte superiori rispetto al codice normale, quindi la stima sopra riportata del numero di errori nel sistema operativo è probabilmente una grossolana sottostima. . È chiaro che è semplicemente impossibile trovare e correggere tutti questi errori. Inoltre, quando alcuni errori vengono corretti, spesso ne vengono introdotti di nuovi.

A causa delle enormi dimensioni dei moderni sistemi operativi, nessuno da solo può conoscerli a fondo. Infatti, è estremamente difficile creare un buon sistema se nessuno lo comprende appieno.

Questo fatto ci porta al secondo problema: l'isolamento degli errori. Nessuno al mondo sa tutto su come funziona una portaerei, ma i sottosistemi di una portaerei sono ben isolati gli uni dagli altri e una toilette intasata non influirà sul funzionamento del sottosistema di lancio dei missili.

I sistemi operativi non hanno questo tipo di isolamento tra i componenti. Un moderno sistema operativo contiene centinaia o addirittura migliaia di procedure combinate in un unico programma binario eseguito in modalità kernel. Ciascuna delle milioni di righe di codice del kernel può sovrascrivere le strutture dati principali che utilizzano componenti non correlati al codice, provocando un arresto anomalo del sistema estremamente difficile da capire. Inoltre, una volta che un virus ha infettato una procedura del kernel, non c'è modo di impedire che si diffonda rapidamente ad altre procedure e infetti l'intera macchina.

Torniamo all'analogia della nave. Lo scafo di una nave moderna è diviso in molti compartimenti. Se si verifica una perdita in uno dei compartimenti, solo quel compartimento verrà allagato e non l'intera stiva. I moderni sistemi operativi sono come le navi che esistevano prima dell'invenzione delle paratie: qualsiasi buco può affondare una nave.

Fortunatamente la situazione non è così disperata. Gli sviluppatori stanno cercando di creare sistemi operativi più affidabili. Esistono quattro diversi approcci adottati per rendere i sistemi operativi più affidabili e sicuri in futuro. Li presenteremo nel nostro articolo in ordine “ascendente”, dal meno radicale al più radicale.

Sistemi operativi rafforzati

L'approccio più conservativo, Nooks, è stato progettato per aumentare l'affidabilità dei sistemi operativi esistenti come Windows e Linux. La tecnologia Nooks supporta una struttura del kernel monolitica in cui centinaia o migliaia di procedure sono concatenate insieme in un unico spazio di indirizzi ed eseguite in modalità kernel. Questo approccio si concentra sul rendere i driver del dispositivo (la causa principale di tutti i problemi) meno pericolosi.

In particolare, come Fig. 1, Nooks protegge il kernel da driver di dispositivo errati avvolgendo ciascun driver e posizionandolo in un livello software sicuro che forma un dominio di sicurezza leggero. Questa tecnologia è talvolta chiamata “sandbox”. L'involucro attorno a ciascun driver monitora attentamente tutte le interazioni tra il driver e il kernel. Inoltre questa tecnologia può essere utilizzata per altre estensioni del kernel, come i sistemi operativi avviabili, ma per semplicità ne parleremo solo in relazione ai driver.

Gli obiettivi del progetto Nooks sono:

  • proteggere i kernel dagli errori dei driver;
  • fornire il ripristino automatico in caso di guasto del driver;
  • fai tutto questo con modifiche minime ai driver esistenti e al kernel.

Proteggere il kernel da driver errati non è l'obiettivo principale. La tecnologia Nooks è stata implementata per la prima volta su Linux, ma le idee si applicano ugualmente ad altri kernel legacy.

Isolamento

Il mezzo principale per proteggere le strutture dei dati del kernel dalla distruzione da parte di driver errati è una mappa delle pagine della memoria virtuale. Quando il driver è in esecuzione, tutte le pagine esterne sono impostate in modalità di sola lettura, creando un dominio di sicurezza semplificato separato per ciascun driver. In questo modo, il driver può leggere le strutture dati del kernel di cui ha bisogno, ma qualsiasi tentativo di modificare direttamente le strutture dati del kernel causerà un'eccezione della CPU che verrà rilevata dal gestore di isolamento di Nooks. L'accesso alla memoria privata del driver, dove sono archiviati stack, heap, strutture dati private e copie di oggetti del kernel, è di lettura-scrittura.

Mediazione

Ogni classe di driver esporta un insieme di funzioni che il kernel può chiamare. Ad esempio, i driver audio possono fornire una chiamata per scrivere un blocco di campioni sonori sulla scheda audio, un'altra per controllare il volume e così via. Quando un driver viene caricato, viene popolato un array di puntatori alle funzioni del driver in modo che il kernel possa trovarne qualcuna. Inoltre, il driver importa una serie di funzioni fornite dal kernel, ad esempio, per la prenotazione del buffer di dati.

Nooks fornisce wrapper sia per le funzioni esportate che per quelle importate. Ora, quando il kernel chiama una funzione del driver, o un driver chiama una funzione del kernel, la chiamata viene effettivamente inviata alla shell, che verifica che i parametri siano corretti e controlla la chiamata. Nonostante il fatto che i surrogati della shell (stub) (nella Fig. 1 sono rappresentati come linee che puntano sia all'interno che all'esterno del driver) vengano generati automaticamente sulla base di prototipi di funzioni, gli sviluppatori devono scrivere manualmente il corpo della shell. In totale, il team di Nooks ha scritto 455 wrapper: 329 per le funzioni esportate dal kernel e 126 per le funzioni che esportano i driver del dispositivo.

Quando un driver tenta di modificare un oggetto del kernel, la sua shell copia l'oggetto nel dominio di sicurezza del driver, cioè nelle sue pagine private di lettura-scrittura. L'autista quindi modifica la copia. Se la richiesta ha esito positivo, il gestore isolamento copia nuovamente gli oggetti modificati nel kernel. Pertanto, un guasto del driver o un errore durante una chiamata lascia sempre gli oggetti del kernel nello stato corretto. Le operazioni di controllo per gli oggetti importati sono specifiche per ciascun oggetto, quindi il team di Nooks ha dovuto scrivere manualmente il codice per controllare le 43 classi di oggetti che utilizzano driver Linux.

Recupero

Se si verifica un errore in modalità utente, viene avviato un agente di recupero che consulta il database di configurazione per capire cosa fare. In molti casi è sufficiente rilasciare tutte le risorse occupate e riavviare il driver, poiché gli errori algoritmici più comuni vengono solitamente rilevati durante il test e gli errori di sincronizzazione e i difetti specifici rimangono principalmente nel codice.

Questa tecnologia consente di ripristinare il sistema, ma le applicazioni in esecuzione al momento dell'errore potrebbero trovarsi in uno stato errato. Come risultato del loro lavoro, il team di Nooks ha aggiunto il concetto di driver shadow in modo che le applicazioni possano funzionare correttamente anche dopo un guasto del driver.

In breve, durante il normale funzionamento, il driver ridondante registra le interazioni tra ciascun driver e il kernel se tali interazioni potrebbero essere necessarie per il ripristino. Dopo il riavvio del driver, il driver duplicato passa tutti i dati di registro al driver riavviato, ad esempio ripetendo la chiamata di controllo input/output (IOCTL) per impostare parametri come il volume audio. Il kernel non sa nulla del processo di ripristino del driver nello stato in cui si trovava il vecchio driver. Una volta completato questo processo, l'autista inizia a elaborare le nuove richieste.

Restrizioni

Sebbene Nooks sia in grado di rilevare il 99% degli errori fatali del conducente e il 55% degli errori non fatali, secondo gli esperimenti, è lungi dall'essere perfetto. Ad esempio, i conducenti possono eseguire comandi privilegiati che non dovrebbero; potrebbero scrivere dati su porte I/O errate ed eseguire cicli infiniti. Inoltre, il team di Nooks ha dovuto scrivere a mano un gran numero di skin e queste skin potrebbero contenere bug. Infine, con questo approccio è impossibile impedire ai driver di scrivere dati in qualsiasi posizione di memoria. Tuttavia, questo è un passo potenzialmente molto utile verso il miglioramento dell'affidabilità dei kernel legacy.

Macchine paravirtuali

Il secondo approccio si basa sul concetto di macchina virtuale. Questo concetto è stato sviluppato alla fine degli anni '60. L'idea è quella di utilizzare uno speciale programma di controllo chiamato monitor della macchina virtuale che funzioni direttamente con l'hardware anziché con il sistema operativo. Una macchina virtuale crea più istanze di una macchina reale. Ogni istanza può supportare qualsiasi programma eseguibile su quell'hardware.

Questa tecnica viene spesso utilizzata per consentire a due o più sistemi operativi, ad esempio Linux e Windows, di funzionare contemporaneamente sulla stessa macchina, in modo che ciascun sistema operativo pensi di avere il controllo dell'intera macchina. L'uso delle macchine virtuali ha la meritata reputazione di fornire un buon isolamento degli errori. Dopotutto, se nessuna delle macchine virtuali è a conoscenza dell'esistenza delle altre, i problemi che si verificano su una macchina non possono diffondersi alle altre.

Si è cercato di adattare questo concetto per organizzare la protezione all'interno di un sistema operativo e non tra diversi sistemi operativi. Inoltre, poiché il Pentium non supporta completamente la virtualizzazione, abbiamo dovuto discostarci dal principio di far funzionare il sistema operativo in una macchina virtuale senza alcuna modifica. Questa concessione consente di apportare modifiche al sistema operativo per garantire che non possa fare nulla che non possa essere virtualizzato. Per distinguere questa tecnologia dalla vera virtualizzazione, viene chiamata paravirtualizzazione.

In particolare, negli anni '90, un gruppo di sviluppatori dell'Università di Karlsruhe creò il microkernel L4. Sono stati in grado di eseguire una versione leggermente modificata di Linux (L4Linux) su L4 in quella che può essere definita una visualizzazione della macchina virtuale. Gli sviluppatori in seguito hanno capito che invece di eseguire una sola copia di Linux su L4, potevano eseguirne più copie. Come mostrato in riso. 2, questo pensiero ha portato all'idea di utilizzare una delle macchine virtuali Linux per eseguire programmi applicativi e un'altra o più per eseguire i driver di dispositivo.

Se i driver di dispositivo vengono eseguiti in una o più macchine virtuali isolate dalla macchina virtuale principale su cui sono in esecuzione il resto del sistema operativo e i programmi applicativi, se un driver si guasta, si guasta solo la sua macchina virtuale, non quella principale. Un ulteriore vantaggio di questo approccio è che i driver del dispositivo non necessitano di essere modificati poiché vedono il normale ambiente del kernel Linux. Naturalmente, il kernel Linux stesso dovrà essere modificato per supportare la paravirtualizzazione, ma si tratta di un cambiamento una tantum. Inoltre, non è necessario ripetere questa procedura per ciascun driver di dispositivo.

Poiché i driver di dispositivo vengono eseguiti sull'hardware in modalità utente, la domanda principale è come eseguiranno l'I/O e come gestiranno gli interrupt. L'I/O fisico è stato supportato aggiungendo circa 3.000 righe di codice al kernel Linux che esegue i driver, consentendo ai driver di utilizzare i servizi L4 per l'I/O invece di doverlo fare da soli. Ulteriori 5.000 righe di codice supportano le interazioni tra tre driver isolati (disco, rete e PCI) e la macchina virtuale che esegue le applicazioni.

In linea di principio, questo approccio dovrebbe garantire una maggiore affidabilità rispetto a un singolo sistema operativo, perché se una macchina virtuale contenente uno o più driver si guasta, la macchina virtuale può essere riavviata e i driver torneranno al loro stato originale. A differenza di Nooks, questo approccio non tenta di riportare i conducenti a uno stato precedente (lo stato in cui si trovavano prima che si verificasse l'incidente). In questo modo, se il driver audio si guasta, verrà ripristinato il livello audio predefinito, non quello che era prima che si verificasse l'errore.

I parametri prestazionali mostrano che il sovraccarico quando si utilizzano macchine paravirtualizzate è intorno al 3-8%.

Sistemi operativi multiserver

I primi due approcci implicano la modifica dei sistemi legacy. I prossimi due riguardano i sistemi futuri.

Uno di questi approcci va direttamente al nocciolo del problema: eseguire l'intero sistema operativo come un unico gigantesco programma binario in modalità kernel. Si propone invece di avere diversi piccoli microkernel in esecuzione in modalità kernel, mentre il resto del sistema operativo è un insieme di processi server e driver completamente isolati in esecuzione in modalità utente. Questa idea è stata proposta 20 anni fa, ma poi non è mai stata completamente implementata a causa delle prestazioni inferiori di un sistema operativo multiserver rispetto a un kernel monolitico. Negli anni '80 la prestazione era considerata l'indicatore più importante e l'affidabilità e la protezione non venivano nemmeno pensate. Naturalmente, ai loro tempi, gli ingegneri aeronautici non pensavano al consumo di carburante o alla creazione di porte di cabina in grado di resistere ad un attacco armato. I tempi cambiano e cambiano anche le idee delle persone su ciò che è veramente importante.

Architettura multiserver

Per comprendere meglio qual è l'idea di un sistema operativo multiserver, passiamo ad un esempio moderno. Come mostrato in riso. 3 In Minix 3, il microkernel gestisce gli interrupt, fornisce meccanismi di base per il controllo dei processi, implementa le interazioni tra processi ed esegue la pianificazione dei processi. Fornisce inoltre un piccolo insieme di chiamate del kernel a driver e server autorizzati, come la lettura di una parte selezionata dello spazio di indirizzi di un particolare utente o la scrittura su porte I/O autorizzate. Il driver dell'orologio utilizza lo stesso spazio di indirizzi del microkernel, ma è pianificato come processo separato. Nessun altro driver funziona in modalità kernel.

Sopra il microkernel c'è il livello del driver del dispositivo. Ogni dispositivo I/O ha il proprio driver, che viene eseguito come processo separato nel proprio spazio di indirizzi privato, protetto da un'unità di gestione della memoria hardware (MMU). Questo livello include i processi driver per disco, terminale (tastiera e display), Ethernet, stampante, audio e così via. Questi driver funzionano in modalità utente e non possono eseguire comandi privilegiati o operazioni di lettura/scrittura sulle porte I/O del computer. Per ottenere questi servizi, i driver devono contattare il kernel. Sebbene questa architettura aumenti il ​​sovraccarico, migliora significativamente l'affidabilità.

Sopra il livello del driver del dispositivo c'è il livello del server. Il file server è un programma (4,5K righe di codice eseguibile) che accetta richieste dai processi utente per chiamate di sistema Posix relative ai file, come read, write, lseek e stat, e le esegue. Inoltre, questo livello ospita il process manager, che gestisce i processi e la memoria ed esegue chiamate Posix e altre chiamate di sistema come fork, exec e brk.

Una caratteristica un po' insolita è il server di reincarnazione, che funge da processo genitore per tutti gli altri server e tutti i driver. Se un driver o un server si guasta, si blocca o non risponde ai comandi ping periodici, il server di reincarnazione rimuove questi processi se necessario e quindi li riavvia da una copia su disco o dalla RAM. In questo modo è possibile riavviare i driver, ma attualmente è possibile riavviare solo i server il cui stato interno è limitato.

Altri server includono un server di rete, che contiene: uno stack TCP/IP completo; un archivio dati, un semplice server dei nomi utilizzato da altri server; server di informazioni utilizzato per il debug. Infine, sopra il livello server ci sono i processi utente. L'unica differenza tra questo e altri sistemi Unix è che le routine di libreria per la lettura, la scrittura e altre chiamate di sistema vengono eseguite inviando messaggi ai server. A parte questa differenza (nascosta nelle librerie di sistema), questi sono normali processi utente che possono utilizzare l'API POSIX.

Interazioni tra processi

Poiché la comunicazione interprocesso (IPC) è il meccanismo che consente a tutti i processi di lavorare insieme, è fondamentale in un sistema operativo multiserver. Tuttavia, poiché tutti i server e i driver in Minix 3 vengono eseguiti come processi fisicamente isolati, non possono chiamare direttamente le funzioni degli altri o condividere strutture di dati. Invece, Minix 3 supporta IPC trasmettendo messaggi a lunghezza fissa utilizzando il cosiddetto principio rendezvous (quando sia il mittente che il destinatario sono pronti per lo scambio, il sistema copia il messaggio direttamente dal mittente al destinatario). Inoltre, esiste un meccanismo per le notifiche di eventi asincrone. Gli eventi che non possono essere implementati sono contrassegnati come differiti nella tabella dei processi.

Minix 3 integra elegantemente gli interrupt con un sistema di scambio di messaggi. I gestori di interrupt utilizzano un meccanismo di notifica per segnalare il completamento dell'I/O. Questo meccanismo consente al gestore di impostare un bit nella bitmap di "interruzione ritardata" e quindi continuare l'esecuzione senza bloccarsi. Quando il driver è pronto a ricevere un'interruzione, il kernel lo converte in un normale messaggio.

Caratteristiche di affidabilità

Ci sono diverse ragioni per l'elevata affidabilità di Minix 3. Innanzitutto, il kernel non esegue più di 4K righe di codice, quindi sulla base di una stima conservativa di 6 bug per 1000 righe, il numero totale di bug del kernel è probabilmente intorno a 24. Confronta questo numero con i 15K bug di Linux e molti altri su Windows. Poiché tutti i driver dei dispositivi, tranne gli orologi, sono processi utente, nessun codice estraneo verrà mai eseguito in modalità kernel. Inoltre, le dimensioni ridotte del kernel consentono una verifica più efficiente della sua correttezza, sia manualmente che utilizzando metodi formali.

L'architettura IPC in Minix 3 non richiede supporto per code o buffering dei messaggi, eliminando la necessità di gestione del buffer nel kernel. Inoltre, poiché IPC è un progetto potente, le capacità IPC di ciascun server e driver sono strettamente limitate. Per ciascun processo vengono rigorosamente definite le primitive IPC utilizzate, le destinazioni disponibili e le notifiche degli eventi utente. I processi utente, ad esempio, possono comunicare solo tramite rendezvous o inviare messaggi solo ai server Posix.

Inoltre, tutte le strutture dati del kernel sono statiche. Tutte queste funzionalità semplificano notevolmente il codice ed eliminano gli errori del kernel associati a buffer overflow, perdite di memoria, interruzioni premature, codice del kernel inaffidabile e così via. Naturalmente, mettere la maggior parte del sistema operativo in modalità utente non elimina gli inevitabili bug nei driver e nei server, ma li rende significativamente meno pericolosi. A causa di un errore, il kernel può distruggere strutture critiche del kernel, scrivere spazzatura sul disco e così via. Un bug nella maggior parte dei driver e dei server non può causare danni significativi perché i processi sono chiaramente separati e le operazioni che possono eseguire sono strettamente limitate.

I driver e i server in modalità utente non possono essere eseguiti con privilegi di superutente. Non possono accedere ad aree di memoria al di fuori dei propri spazi di indirizzi, ad eccezione delle chiamate del kernel (di cui il kernel controlla la correttezza). Inoltre, bitmap e intervalli all'interno della tabella dei processi del kernel controllano l'insieme di chiamate kernel valide, capacità IPC e porte I/O valide in base al processo. Ad esempio, il kernel potrebbe impedire al driver della stampante di scrivere negli spazi degli indirizzi utente, di accedere alle porte I/O del disco o di inviare messaggi al driver audio. Nei sistemi monolitici tradizionali, qualsiasi conducente può fare qualsiasi cosa.

Un altro motivo di affidabilità è l'uso di istruzioni e spazi dati separati. Se un bug o un virus provoca un overflow del buffer del driver o del server e viene scritto codice estraneo nello spazio dati, il codice infetto non può essere eseguito passandogli il controllo o utilizzando una procedura che punta ad esso, perché il kernel non eseguirà il codice a meno che non si trovi nello spazio dei comandi di sola lettura del processo.

Tra le altre caratteristiche specifiche che garantiscono una maggiore affidabilità, la più importante è la proprietà di autoriparazione. Se un driver tenta di memorizzare dati su un puntatore non valido, entra in un ciclo infinito o tenta altre operazioni non valide, il server di reincarnazione sostituirà automaticamente il driver, solitamente senza influenzare gli altri processi in esecuzione.

Sebbene il riavvio di un driver logicamente errato non risolva l'errore, in pratica una sincronizzazione errata ed errori simili causano molti problemi e il riavvio del driver può spesso ripristinare il sistema a uno stato corretto.

Opzioni di prestazione

Per decenni gli sviluppatori hanno criticato le architetture multiserver basate su microkernel per le loro prestazioni inferiori rispetto alle architetture monolitiche. Tuttavia, diversi progetti confermano che l’architettura modulare può effettivamente fornire prestazioni comparabili. Nonostante il fatto che Minix 3 non sia stato ottimizzato per le prestazioni, il sistema è abbastanza veloce. La riduzione delle prestazioni che si verifica a causa dei driver eseguiti in modalità utente rispetto ai driver in modalità kernel è inferiore al 10% e il sistema può essere costruito includendo il kernel, i driver condivisi e tutti i server (112 compilazioni e 11 collegamenti), in meno di 6 s su una macchina Athlon/2,2 GHz.

Il fatto che le architetture multiserver possano supportare un ambiente simile a Unix abbastanza affidabile con un sovraccarico prestazionale minimo rende questo approccio praticamente accettabile. Minix 3 per Pentium può essere scaricato gratuitamente secondo i termini della licenza Berkeley dal sito web www.minix3.org. Attualmente sono in fase di sviluppo versioni per altre architetture e sistemi embedded.

Protezione basata sulla lingua

L'approccio più radicale, in modo del tutto inaspettato, è stato proposto da Microsoft Research, abbandonando il sistema operativo come un singolo programma eseguito in modalità kernel e un certo insieme di processi utente operanti in modalità utente. Offre invece un sistema scritto in linguaggi completamente nuovi e indipendenti dai tipi, privi di tutti i problemi dei puntatori e di altri bug associati a C e C++. Come i due approcci precedenti, questo approccio è stato proposto diversi decenni fa ed è stato implementato nel computer Burroughs B5000. A quel tempo esisteva solo il linguaggio Algol e la protezione non era supportata dalla MMU (che non era affatto nella macchina), ma dal fatto che il compilatore Algol semplicemente non generava codice "pericoloso". L'approccio proposto da Microsoft Research adatta questa idea alle condizioni del 21° secolo.

Descrizione generale

Chiamato Singularity, il sistema è scritto quasi interamente in Sing#, un nuovo linguaggio indipendente dai tipi. Questo linguaggio è basato su C#, ma è integrato con primitive di passaggio di messaggi, la cui semantica è determinata da contratti formali descritti dal linguaggio. Poiché il linguaggio limita strettamente i processi del sistema e dell'utente, tutti i processi possono lavorare insieme in un unico spazio di indirizzi virtuale. Ciò aumenta sia la sicurezza (poiché il compilatore impedirà a un processo di modificare i dati di un altro processo) che l'efficienza (poiché elimina le trappole del kernel e i cambi di contesto).

Inoltre, l'architettura Singularity è flessibile perché ogni processo è un'entità chiusa e può quindi avere il proprio codice, strutture dati, struttura di memoria, sistema runtime, librerie e garbage collector. MMU è supportato, ma alloca solo le pagine anziché stabilire un dominio sicuro separato per ciascun processo.

Il principio fondamentale dell'architettura Singularity è vietare le estensioni dinamiche dei processi. Inoltre, questa architettura non supporta moduli caricabili come driver di dispositivo e plug-in del browser, poiché potrebbero introdurre codice estraneo e non testato che potrebbe danneggiare il processo principale. Invece, tali estensioni dovrebbero essere eseguite come processi separati, completamente isolati e comunicanti utilizzando il meccanismo IPC standard.

Microkernel

Il sistema operativo Singularity è costituito da un processo microkernel e da un insieme di processi utente che tipicamente vengono eseguiti in uno spazio di indirizzi virtuali condiviso. Il microkernel controlla l'accesso all'hardware, riserva e libera memoria, crea, chiude e pianifica catene, mantiene la sincronizzazione della catena utilizzando semafori, mantiene la sincronizzazione tra processi utilizzando canali e controlla input/output. Ogni driver di dispositivo viene eseguito come processo separato.

Sebbene la maggior parte del microkernel sia scritta in Sing#, i singoli componenti sono scritti in C#, C++ o assembler e devono essere affidabili, poiché la loro correttezza non può essere verificata. Il codice attendibile include il livello di astrazione hardware e il garbage collector. Il livello di astrazione hardware nasconde l'hardware di basso livello dal sistema incapsulando concetti come porte I/O, linee di richiesta di interruzione, canali DMA e timer per fornire astrazioni interoperabili al resto del sistema operativo.

Comunicazione tra processi

I processi utente ottengono servizi di sistema inviando messaggi fortemente tipizzati al microkernel su canali bidirezionali punto-punto. Infatti, questi canali vengono utilizzati per tutte le interazioni tra processi. A differenza di altri sistemi di messaggistica che dispongono di una libreria di invio e ricezione, Sing# supporta completamente i canali a livello di lingua, inclusa la tipizzazione formale e le specifiche del protocollo. Per renderlo più chiaro, diamo un'occhiata alle specifiche del canale.

contratto C1 (

Nel messaggio Request(int x) richiede x > 0;

Messaggio in uscita Rispondi (int y);

Messaggio in uscita Errore();

Richiesta? -> In sospeso;

Stato in sospeso: uno (

Rispondere! -> Inizio;

Errore! -> Arrestato;

Stato arrestato: ;

Questo contratto stabilisce che un canale accetta tre messaggi: Richiesta, Risposta ed Errore. Il primo ha un numero intero positivo come parametro, il secondo ha un numero intero e il terzo non ha parametri. Quando viene utilizzato un canale per accedere a un server, i messaggi di richiesta vengono inviati dal client al server e gli altri due messaggi vengono inviati attraverso un percorso diverso. La macchina a stati descrive il protocollo per il canale.

Nello stato Start, il client invia un messaggio Request, spostando il canale nello stato Pending. Il server può rispondere con un messaggio di risposta o con un messaggio di errore. Il messaggio di risposta riporta il canale nello stato di avvio, in cui la comunicazione può continuare. Il messaggio di errore pone il canale nello stato Interrotto, terminando la comunicazione sul canale.

Mucchio

Se tutti i dati, come i blocchi di file letti dal disco, devono essere trasferiti su pipe, il sistema funzionerà molto lentamente, quindi viene fatta un'eccezione alla regola di base secondo cui i dati di ciascun processo sono completamente privati ​​e interni a quel processo. La singolarità mantiene un heap di oggetti condiviso, ma ogni istanza di ciascun oggetto sull'heap è di proprietà di un singolo processo. Tuttavia, la proprietà di un oggetto può essere trasferita tramite un canale.

Come esempio di come funziona l'heap, considera l'I/O. Quando un driver del disco legge un blocco di dati, inserisce quel blocco nell'heap. Il sistema passa poi l'handle di quel blocco all'utente che ha richiesto i dati, aderendo al principio del "proprietario unico", ma consentendo il trasferimento dei dati dal disco all'utente senza effettuare ulteriori copie.

Sistema di file

Singularity mantiene un unico spazio dei nomi gerarchico per tutti i servizi. Il server dei nomi root utilizza la parte superiore dell'albero, ma altri server dei nomi possono essere montati sui propri nodi. In particolare il filesystem, che è semplicemente un processo, è montato su /fs, quindi ad esempio il nome /fs/users/linda/foo potrebbe essere un file utente. I file sono implementati come alberi B, con i numeri di blocco che fungono da chiavi. Quando un processo utente richiede un file, il file system indica al driver del disco di posizionare i blocchi richiesti nell'heap. Il possesso viene quindi trasferito come sopra descritto.

Esame

Ogni componente del sistema dispone di metadati che ne descrivono le dipendenze, le esportazioni, le risorse e il comportamento. Questi metadati vengono utilizzati per la verifica. L'immagine del sistema è composta dal microkernel, dai driver e dalle applicazioni necessarie per il funzionamento del sistema, nonché dai relativi metadati. I moduli di verifica esterni (verificatori) possono eseguire molti controlli su un'immagine di sistema prima che il sistema la utilizzi, in particolare per garantire che i driver non abbiano conflitti di risorse. La verifica si compone di tre fasi:

  • il compilatore controlla l'indipendenza dai tipi, la proprietà degli oggetti, i protocolli dei canali e così via;
  • il compilatore genera Microsoft Intermediate Language, un bytecode portatile simile a JVM che può essere verificato da un verificatore;
  • MSIL viene compilato in codice x86 per il computer host, che può aggiungere controlli di runtime al codice (tuttavia, il compilatore esistente no).

È possibile ottenere una maggiore affidabilità utilizzando strumenti per rilevare errori nei verificatori stessi.

Ciascuno dei quattro diversi tentativi di migliorare l'affidabilità del sistema operativo mira a impedire che driver di dispositivo difettosi causino l'arresto anomalo del sistema.

Nell'approccio Nooks, ogni driver è avvolto individualmente in un software per controllare attentamente le sue interazioni con il resto del sistema operativo, ma in questo approccio tutti i driver risiedono nel kernel. Nell’implementazione dell’approccio della macchina paravirtuale, questa idea è stata ulteriormente sviluppata. In questo caso, i conducenti vengono spostati su una o più macchine separate dalla macchina principale, limitando ulteriormente le capacità dei conducenti. Entrambi questi approcci sono progettati per aumentare l'affidabilità dei sistemi operativi (legacy) esistenti.

Gli altri due approcci sostituiscono i sistemi operativi legacy con altri più affidabili e sicuri. L'approccio multiserver esegue ciascun driver e componente del sistema operativo in un processo utente separato e consente loro di comunicare utilizzando il meccanismo IPC del microkernel. Infine, Singularity, l'approccio più radicale, utilizza un linguaggio indipendente dai tipi, un unico spazio di indirizzi e contratti formali che limitano rigorosamente ciò che ogni modulo può fare.

Tre dei quattro progetti di ricerca (paravirtualizzazione basata su L4, Minix 3 e Singularity) utilizzano microkernel. Non è ancora noto quale di questi approcci si diffonderà in futuro (a meno che non si tratti di qualche altra soluzione). Tuttavia, è interessante notare che i microkernel, a lungo considerati inaccettabili a causa delle loro prestazioni inferiori rispetto ai kernel monolitici, potrebbero tornare alla ribalta nei sistemi operativi a causa della loro affidabilità potenzialmente maggiore, che molti considerano più importante delle prestazioni. La ruota della storia ha girato.

Andrew Tanenbaum ( [e-mail protetta]) - Professore di Informatica presso la Vrije Universiteit (Amsterdam, Olanda). Jorrit Herder ( [e-mail protetta]) - studente post-laurea presso il Dipartimento di Sistemi Informatici, Facoltà di Informatica, Vrije Universiteit. Herber Bos ( [e-mail protetta]) - Professore associato, Dipartimento di Sistemi Informatici, Facoltà di Informatica, Vrije Universiteit.

Letteratura
  1. V. Basili, B. Perricone, Errori e complessità del software: un'indagine empirica, comm. ACM, gennaio. 1984.
  2. T. Ostrand, E. Weyuker, La distribuzione degli errori in un grande sistema software industriale, Proc. Sintomo int. Test e analisi del software, ACM Press, 2002.
  3. A. Chou et al., Uno studio empirico sugli errori del sistema operativo, Proc. 18° ACM Sintomo. Principi del sistema operativo, ACM Press, 2001.
  4. M. Swift, B. Bershad, H. Levy, Migliorare l'affidabilità dei sistemi operativi delle materie prime, ACM Trans. Sistemi informatici, vol. 23, 2005.
  5. M. Swift et al., Ripristino dei driver del dispositivo, Proc. 6° sintomo Progettazione e implementazione del sistema operativo, ACM Press, 2003.
  6. R. Goldberg, Architettura delle macchine virtuali, Proc. Workshop Sistemi informatici virtuali, ACM Press, 1973.
  7. J. LeVasseur et al., Riutilizzo dei driver di dispositivo non modificati e affidabilità del sistema migliorata tramite macchine virtuali, Proc. 6° sintomo Progettazione e implementazione del sistema operativo, 2004.
  8. J. Liedtke, Sulla costruzione del microkernel, Atti. 15° ACM Sintomo. Principi del sistema operativo, ACM Press, 1995.
  9. H. Hartig et al., Le prestazioni dei sistemi basati su microkernel, Proc. 16° ACM Sintomo. Principi del sistema operativo, ACM Press, 1997.
  10. J.N. Herder et al., Programmazione di sistemi modulari in MINIX 3, Usenix; www.usenix.org/publications/login/2006-04/openpdfs/herder.pdf.

Andrew Tanenbaum, Jorrit Herder, Herbert Bos, Possiamo rendere i sistemi operativi affidabili e sicuri?, IEEE Computer, maggio 2006. IEEE Computer Society, 2006, Tutti i diritti riservati. Ristampato con permesso.

Nell'era del BYOD, in cui quasi la metà delle organizzazioni segnala violazioni dei dati e attacchi hacker ai dispositivi mobili e il 64% non adotta alcuna policy BYOD (secondo Veracode), il tema della sicurezza mobile sta diventando sempre più rilevante per i fornitori di soluzioni che cercano di proteggere i clienti reti.

Ciò pone l’onere del BYOD sui dipartimenti IT e sui VAR, che devono implementare le migliori pratiche di sicurezza su un’ampia varietà di dispositivi.

Esistono, ovviamente, dozzine di modelli diversi di smartphone e tablet, ma, in generale, si tratta di quattro principali piattaforme di sistemi operativi mobili: iOS di Apple, Android di Google, BlackBerry e Windows Phone di Microsoft.

Secondo un sondaggio tra i fornitori di servizi di amministrazione di dispositivi mobili (MDM) condotto da CRN per questo articolo, iPhone e iPad hanno ottenuto un'adozione diffusa negli ambienti aziendali. Theodora Titonis, vicepresidente della tecnologia mobile presso Veracode, ritiene che il successo di Apple sia costruito sul suo stretto controllo della piattaforma hardware, del software e dell'ecosistema delle app, insieme ad aggiunte ponderate come nuovi contenuti e API di gestione delle app in iOS 7.

Android, il sistema operativo mobile più popolare al mondo, ha compiuto progressi significativi nel segmento aziendale, sebbene i fornitori di antivirus forniscano un lungo elenco di malware a cui a volte soccombono i dispositivi Android. Samsung, il principale fornitore di Android, sta enfatizzando le sue estensioni SAFE (Samsung Approved For Enterprise) e la tecnologia di sicurezza proprietaria Knox integrata in alcuni modelli nel tentativo di rendere il sistema operativo più attraente per le organizzazioni.

Microsoft offre funzionalità uniche nel suo Windows Phone 8, in particolare l'integrazione di Active Directory, che consente ai fornitori MDM di migliorare l'amministrazione e assegnare policy ai gruppi di utenti. Ovviamente c'è anche il supporto integrato per Active Sync. E gli esperti di sicurezza affermano che Windows Phone 8 fa grandi passi avanti nel sandboxing.

Infine, c'è BlackBerry, che ha (e mantiene tuttora) un enorme rispetto tra i fornitori di soluzioni per le sue numerose funzionalità di sicurezza, come il suo servizio BBM e le funzionalità di sicurezza nel suo server amministrativo BES 10 riorganizzato. Il sistema operativo ora include il supporto Exchange Active Sync e a la nuova tecnologia Balance, che consente alle organizzazioni di creare una partizione su un dispositivo BlackBerry 10 per mantenere separati i dati e le applicazioni personali e aziendali.

"I consumatori tendono a gravitare verso il lato positivo del mercato dei dispositivi mobili", afferma Titonis di Veracode. Ma questo non è sempre protetto in modo affidabile. "L'onere del BYOD spetta all'utente finale fare la scelta giusta dello smartphone o del tablet e utilizzarlo in sicurezza", ha aggiunto.

Per quanto riguarda le minacce alla sicurezza e le violazioni della privacy dei dispositivi mobili, anche il sistema operativo mobile più sicuro non può eliminarle se l'utente non possiede il buon senso, afferma.

Ciò è d'accordo anche Jerry Zigmont, proprietario della società di rivenditori MacWorks, che collabora con Apple. "Non penso che esista un telefono più sicuro di tutti gli altri", ha detto. Tuttavia, ritiene che Apple e iOS 7 abbiano qualche vantaggio rispetto ad Android, Windows Phone 8 e BlackBerry.

iOS: il più sicuro

Questo è ciò che pensano gli esperti di sicurezza mobile e i fornitori di soluzioni. Apple è in vantaggio, dicono, perché controlla una parte significativa di tutti i componenti: il livello dell’applicazione (App Store), il sistema operativo (iOS) e i dispositivi stessi (iPhone/iPad), ma non l’infrastruttura (ovvero fornite dagli operatori di telecomunicazioni).

"iOS è il più sicuro perché presta la stessa attenzione alla sicurezza a livello di applicazione così come a livello di sistema operativo", afferma Ira Grossman, direttore della tecnologia dei dispositivi client presso MCPc, un importante fornitore di soluzioni con sede negli Stati Uniti con un proprio Piattaforma Anyplace Workspace.

"Se le applicazioni non sono sicure, non importa quanto lo sia il sistema operativo", afferma Grossman. "L'Apple Store fornisce un livello di sicurezza che oggi non abbiamo nell'app store Android standard."

Ma solo perché Apple monitora rigorosamente il suo App Store non garantisce un vantaggio rispetto ai concorrenti nella sicurezza delle app. Secondo Veracode, le app mobili di Apple presentano tanti rischi potenziali quanto il suo concorrente più vicino, Android, quando si tratta dei principali tipi di minacce.

Dopo aver analizzato migliaia di app iOS e Android utilizzate dai suoi clienti, Veracode ha riscontrato un numero quasi uguale di casi di archiviazione non protetta di informazioni proprietarie in modo tale che un hacker potrebbe rubare dati finanziari o di identità archiviati dall'app. Veracode ha riscontrato la stessa vulnerabilità anche nella gestione degli errori dell'applicazione, che può essere utilizzata negli attacchi di scripting cross-site, in cui uno script preso da un sito Web può essere eseguito e può essere utilizzato per rubare informazioni o eseguire altro malware sul dispositivo.

“Apple è la più lontana in termini di sicurezza. Ogni applicazione viene eseguita separatamente (in modalità sandbox), ovvero l'archiviazione dei dati e la memoria sono isolate. E ha il massimo controllo sul modo in cui vengono installate le patch", ha affermato un esperto di sicurezza presso un'azienda MDM che ha richiesto l'anonimato.

La gestione del livello di patch e il controllo sull'installazione degli aggiornamenti sono un vantaggio importante che Apple ha rispetto ad Android, affermano molti fornitori MDM. Apple invia le proprie patch direttamente agli utenti, il che significa che eventuali vulnerabilità rilevate vengono risolte entro 24 ore. Ciò offre ad Apple un vantaggio, dicono, poiché Android si affida agli operatori wireless per inviare patch e aggiornamenti del sistema operativo per correggere le falle di sicurezza. A peggiorare le cose, il segmento Android è frammentato: diverse piattaforme hardware e numeri di versione del sistema operativo possono talvolta richiedere una patch separata per ciascuna versione.

A differenza di Apple, i dispositivi Android utilizzano un miscuglio di diverse varianti del sistema operativo. Sfortunatamente, gli operatori non hanno fretta di inviare patch ai dispositivi. Anche i fornitori di MDM ammettono di avere difficoltà a coprire tutte le versioni.

Android: ottimo secondo posto

Ma questo non significa che il sistema operativo Android non sia sicuro. Ha molte funzionalità di sicurezza integrate. Inoltre, i produttori di dispositivi Android, in primis Samsung, hanno migliorato le versioni di questo sistema operativo aggiungendo funzionalità di sicurezza avanzate, come la tecnologia Knox (Samsung).

Tuttavia, affinché la piattaforma Knox funzioni in modo efficace, un'organizzazione deve prima implementare una gestione di livello aziendale per i dispositivi abilitati Knox. Questa piattaforma si basa sulla virtualizzazione per garantire la completa separazione del lavoro e dei dati personali sui dispositivi mobili.

Con questo in mente, Ojas Rege, vicepresidente della strategia presso il fornitore MDM MobileIron, afferma che le capacità di sicurezza e amministrazione di Android sono quasi uguali a quelle di Apple. “La chiave per la sicurezza è un’architettura isolata dalle applicazioni, in cui i dati di un’applicazione aziendale non siano accessibili da un’altra applicazione. iOS fornisce l'isolamento più rigoroso. Ma anche le versioni più sicure di Android, ad esempio con la tecnologia Knox di Samsung, sono altrettanto valide”.

BlackBerry: una rinascita è possibile?

Anche il sistema operativo BlackBerry rimane popolare in alcuni ambienti. Con il suo BlackBerry Enterprise Server (BES), include centinaia di funzionalità di sicurezza per le organizzazioni.

“BlackBerry è il più sicuro. Questa è l'unica ragione per cui è ancora viva, afferma Steven Kantorowicz, presidente della società VAR CelPro Associates. “Ecco perché le agenzie governative e persino il presidente Obama lo usano”.

Se la nostalgia e il meritato rispetto potessero aumentare la quota di mercato, domani BlackBerry supererebbe Apple, ma ahimè! - molti nel settore credono che stia progressivamente svanendo. Di conseguenza, c’è un esodo di sviluppatori e anche i fornitori di MDM stanno passando ad altre piattaforme. Se i numeri sono indicativi, il futuro di BlackBerry appare cupo. Rare di MobileIron afferma che la quota di BlackBerry tra le organizzazioni con cui collabora sta diminuendo rapidamente.

Secondo un recente studio di MobileIron, la metà delle aziende che amministrano gli smartphone BlackBerry affermano di voler smettere di supportarli nei prossimi 12 mesi. Nel settore dei servizi finanziari il 44% dei dispositivi mobili sono BlackBerry. Secondo un sondaggio di MobileIron, nei prossimi 12 mesi questa cifra scenderà al 30%.

Tuttavia, il CEO di BlackBerry, John Chen, si è permesso di non essere d'accordo con i sovvertitori. Al Mobile World Congress di febbraio, ha detto al pubblico che l'azienda stava cercando di rientrare nel mercato degli smartphone con un nuovo modello di tastiera QWERTY di fascia alta chiamato BlackBerry Classic, previsto per il rilascio quest'anno.

In un'intervista con USA Today, Chen ha descritto il modello in questo modo: “Questa è una versione migliorata e ampliata di uno dei nostri prodotti più popolari e di successo, chiamato Bold. Avrà una tastiera e un buon touch screen, Internet molto veloce, un browser web e strumenti multimediali. E inoltre sarà molto protetto”.

Chen ha più volte affermato che BlackBerry è la piattaforma più sicura in termini di dispositivo stesso e di messaggistica (sia e-mail che BBM) e la sicurezza è in prima linea nei piani di sviluppo dell'azienda.

Windows Phone 8: una forza da non sottovalutare

Una ricerca di ComScore mostra che Android e Apple insieme detengono oggi più del 93% del mercato (la quota di Android è del 52%, Apple ha il 41%), con Windows Phone 8 e BlackBerry in lizza per un lontano terzo posto, con il 3,4% e il 2. 9% rispettivamente.

Sebbene la quota di mercato di Microsoft sia solo una piccola percentuale, il suo vantaggio rispetto a BlackBerry è la sua stretta integrazione con l'ambiente aziendale. "Windows Phone è una parte centrale della nostra offerta perché riteniamo che abbia un grande potenziale nel segmento aziendale", afferma Regé di MobileIron.

Gli esperti di sicurezza affermano che Windows Phone 8 ha migliorato significativamente l'isolamento delle app. Ma il sistema operativo supporta meno criteri MDM rispetto a iOS, il che significa che fornitori come MobileIron non possono fornire lo stesso livello di controllo per il sistema operativo, afferma Regé.

"Windows Phone 8 è particolarmente adatto a soddisfare i professionisti dell'informazione, ma non coloro che devono soddisfare elevati livelli di conformità normativa e sicurezza", ha affermato Ryan Smith, ingegnere capo della sicurezza presso la startup Mojave Networks.

Per questi motivi (e a causa della scarsa domanda), Windows Phone 8 è in basso nell'elenco delle opzioni sicure di molti esperti. Ma ciò non significa che i fornitori MDM non forniscano supporto: la maggior parte lo fa.

Se BlackBerry manca chiaramente di vitalità, Windows Phone 8 ha un orizzonte di possibilità. La sicurezza mobile è un obiettivo irraggiungibile, afferma Smith. Sostenuta da una forte presenza nel segmento enterprise e dall'acquisizione del business degli smartphone Nokia, Microsoft potrebbe cambiare l'equilibrio della sicurezza con la nuova versione del suo sistema operativo mobile, ha affermato.

Stai cercando la distribuzione Linux più sicura che sia sicura e fornisca una forte privacy per il tuo sistema operativo?

Ecco le 15 distribuzioni Linux più sicure per gli utenti di privacy e sicurezza.

Bene, potresti già sapere che il sistema operativo è il software principale che ti consente di interagire con l'hardware e il software del tuo computer. Controlla tutto l'hardware e comunica con il processore e la memoria.

Le 15 migliori distribuzioni Linux più sicure

Il numero di utenti Linux cresce ogni giorno. La loro particolarità è che sono meno diffusi rispetto ad altri sistemi operativi. Tuttavia, stanno lavorando per essere più tecnici nei prossimi giorni.

Ecco un elenco delle distribuzioni Linux più sicure che sono "specificamente focalizzate sulla sicurezza di Linux". Ciò significa che questo articolo è stato scritto appositamente per concentrarsi su Sharp Security, che è più una preoccupazione di un utente Linux

1. Sistema operativo Cubi | Qubes Linux

Se stai cercando la distribuzione Linux più sicura per il tuo desktop, Qubes è il migliore. Perché? Bene, Qubes è un sistema operativo basato su Fedora focalizzato sulla sicurezza desktop. Questo sistema operativo ti proteggerà isolando e virtualizzando separatamente diverse macchine virtuali.

Supponiamo che tu abbia scaricato software dannoso senza renderti conto immediatamente di cosa si trattasse? Oppure non sai se è sicuro o no. Non preoccuparti, il sistema operativo Qubes gioca un ruolo qui. I cubi isolano gli altri file personali dal malware senza causare danni. È bello, vero? Nota: questo sistema operativo è più adatto agli utenti esperti. Pertanto, se sei un principiante, troverai difficile utilizzare questo sistema.

2. Coda Linux

Tails è una delle distribuzioni Linux migliori e più sicure dopo Parrot Security OS. Tails è stato pubblicato per la prima volta nel 2009. Questo sistema operativo è progettato specificamente per i personal computer. Se stai cercando un sistema operativo che ti tenga al sicuro mentre navighi in Internet, Tails è al primo posto.

Si tratta di un CD live e di un sistema operativo preinstallato con il pacchetto browser Tor che utilizza lo schema Onion. Poiché tutte le connessioni in uscita passano attraverso Tor, ti consente di utilizzare Internet in modo anonimo e, qualunque cosa tu faccia, non lascia mai traccia.

Il sistema operativo Tails non utilizza spazio sul disco rigido, utilizza solo lo spazio richiesto nella RAM, ma verrà eliminato automaticamente allo spegnimento del sistema. Può essere utilizzato come DVD live o USB live. Sarà più conveniente eseguire l'avvio da un'unità flash anziché da un DVD. Tuttavia, ci sono alcuni problemi con questo sistema operativo. Ultimamente, la maggior parte degli utenti afferma che l'installazione di Tails richiede 2 unità USB, il che è noioso.

3. Sistema operativo Parrot Security

Parrot Security OS è stato sviluppato da FrozenBox e rilasciato nel 2013. Questo software rappresenta una svolta quando si tratta di sicurezza e privacy del sistema operativo di un computer. Parrot Security OS è appositamente progettato per testare un attacco simulato autorizzato sul tuo computer, che aiuta a valutare le vulnerabilità del tuo sistema se è abbastanza forte o meno.

Viene fornito con un laboratorio completamente portatile che mantiene il tuo sistema al sicuro da qualsiasi malattia indesiderata mentre navighi in Internet, navighi su qualsiasi cosa, giochi, ecc. Ancora una volta, se sei un esperto forense, allora questo sistema operativo è il migliore...

4. Kali Linux

Kali Linux è una distribuzione Linux preinstallata basata su Debian, appositamente progettata per Pen Testing ed esperti forensi. Kali viene fornito con un pacchetto di strumenti come -Aircrack-ng, Ettercap, Foremost, Wireshark Kismet, Maltigo e molti altri che ti aiutano in molti modi, ad esempio sfruttando la rete o l'applicazione della vittima, scoprendo la rete o identificando l'indirizzo IP di destinazione. indirizzo.

Kali non include solo lo strumento grafico di attacco informatico di Armitage che ti consente di cenare e sfruttare, sfruttare consigli e funzionalità avanzate di contrasto del Metasploit Framework. Kali Linux è considerata una delle distribuzioni Linux più sicure per gli sviluppatori.

Come Tails, questo sistema operativo può anche essere avviato come un DVD live o un'unità USB ed è più facile da usare rispetto ad altri sistemi operativi disponibili. Sia che utilizzi 32 o 62 sistemi operativi, Kali Linux può essere utilizzato su entrambi. Questo sistema operativo richiede un minimo di 512 MB di RAM e 10 GB di spazio su disco rigido.

5.Wonix | WhonixLinux

Se vuoi nascondere il tuo indirizzo IP, Whonix è perfetto per te. Whonix è un sistema operativo basato su Debian incentrato sull'anonimato, sulla privacy e sulla sicurezza. Whonix fornisce sicurezza attraverso l'isolamento. È un sistema operativo che utilizza esplicitamente il principio di isolamento per garantire sicurezza, privacy e anonimato.

Questo sistema operativo è sviluppato da due programmi principali. Uno è una workstation e l'altro è un gateway. Il gateway funge qui da intermediario e forza tutte le connessioni a passare attraverso la rete Tor. Quindi, non vi è alcuna possibilità di fuga di indirizzi IP ed è così che il sistema operativo Whonix ti protegge.

6. Discreto | Linux discreto

Potresti provare a mantenere i tuoi dati al sicuro e trovare comunque la migliore distribuzione di sicurezza per il tuo sistema operativo Linux. Lascia che le tue paure volino via. Qui hai il sistema operativo Discretee Linux, che si dice sia una delle distribuzioni Linux più sicure per proteggere i tuoi dati preziosi.

Questo sistema operativo non interagisce con Internet durante il funzionamento, separando i dati e le chiavi crittografiche per proteggerlo da una rete non attendibile. Un'altra cosa interessante è che questo sistema operativo è un puro sistema live, quindi non è necessario installarlo sul tuo computer, puoi eseguirlo rapidamente da un'unità USB.

7.Linux Kodachi | Kodachi

Ti piace rimanere completamente anonimo mentre navighi in Internet? Allora Kodachi Linux è una delle distribuzioni Linux migliori e più sicure che vorresti avere. Molti utenti affermano che è la distribuzione Linux più sicura che abbiano mai posseduto. Personalmente però non l'ho mai testato. Questo sistema operativo viene fornito con Tor, VPN e DNSCrypt e può essere facilmente avviato da un DVD o un'unità USB.

Puoi selezionare il paese di uscita quando sei online. Questo sistema operativo contiene molte altre applicazioni utili come Pidgin Internet Messenger Transmission VirtualBox Geany, FileZilla e molte altre. Infine, devo dire che questo sistema operativo è dotato di tutto il necessario per proteggere l'utente.

8.BlackArchLinux

BlackArck Linux è una nuova distribuzione di sicurezza per Linux appositamente progettata per test e sicurezza con penna. Offre un numero enorme di strumenti, anche il doppio di Kali Linux.

Possono essere installati singolarmente o, se preferisci, puoi anche installarli in gruppo. Questo sistema operativo è facile da usare. Questo sistema operativo è abbastanza leggero da poterlo eseguire su qualsiasi hardware.

9. Sistema operativo delle teste

Heads è una distribuzione di sicurezza gratuita basata su GNU Linux. Questo sistema operativo è significativamente più piccolo di altri ed è più facile da gestire. I dirigenti utilizzano solo software libero, il che significa che questo sistema operativo valorizza maggiormente la libertà degli utenti e della comunità.

Come gli altri sistemi operativi sopra menzionati, anche Heads utilizza Tor per mantenerti anonimo durante la navigazione in Internet. Tutto il tuo traffico passa attraverso Tor per impostazione predefinita, ma ti danno la possibilità di fermarlo se lo desideri. I leader danno sempre la priorità ai propri utenti.

10. Sottografo | Sottografo sistema operativo

Come Tails, anche Subgraph Operating System è un sistema operativo basato su Debian che impedisce la sorveglianza e l'interferenza da parte di sofisticati avversari Internet. Questo sistema operativo è per tutti. Il suo ambiente desktop basato su GNOME è incredibilmente facile da usare.

Parlando di sicurezza e privacy, questa distribuzione della sicurezza previene gli attacchi con un controllo intelligente degli accessi; Prevenire gli exploit di danneggiamento della memoria utilizzando un set di patch (grsecurity patchset e Pax). Il set di patch Grsecurity fornisce una suite di sicurezza come protezione dello spazio degli indirizzi, auditing avanzato e controllo dei processi

11.IprediaOS

Questa distribuzione di sicurezza è utile per navigare sul Web, inviare e-mail, chattare e condividere qualsiasi file su Internet in modo anonimo. Tutte le connessioni vengono effettuate tramite il software I2P.

A differenza di altre distribuzioni, IprediaOS supporta TORRENTS. Questo sistema operativo è competitivamente più veloce di Tor, anche se lo utilizzerai sul tuo vecchio computer, questo sistema operativo funzionerà bene anche su quello.

12. Pure OS

Se stai cercando una distribuzione di sicurezza facile da usare che ti permetta di cambiarla liberamente. Allora è PureOS. PureOS è un software gratuito che fornisce un pacchetto di sicurezza che include il motore di ricerca Duck Duck Go.

Ciò proteggerà la tua privacy evitando risultati di ricerca privati. Poiché si tratta di un software gratuito, puoi scaricarlo senza acquistare nulla. Puoi richiederne il codice sorgente, anche se ti è consentito modificarlo.

13. OpenWall GNU/*/Linux

Openwall è un sistema operativo Linux basato su distribuzione sicura progettato specificamente per server e applicazioni. Openwall fornisce sicurezza riducendo i difetti nei suoi componenti software attraverso la patch Openwall (meglio conosciuta come (non patch exec stack). È una piattaforma server gratuita progettata per fare questo.

14. Linux alpino

Alpine Linux è la distribuzione Linux più sicura basata su mus libc e BusyBox. È leggero come potresti pensare. La dimensione del sistema di base è di circa 5 MB, che è inferiore a quella di altri sistemi disponibili sul mercato. Ed è per questo che questa distribuzione Linux è così popolare.

Un altro componente di BusyBox include molti strumenti e pochissimi di essi sono bunzip2, bzip2, less, lzma, unlzma, vi, wget. Questi strumenti si trovano nell'immagine base Alpine, che non si trova nell'immagine base Debian. Questo gestore di app APK è molto più veloce di altri e molto facile da usare.

15. Contenitore | Contenitore Linux (precedentemente CoreOS)

Se ti piace lavorare su macchine diverse e aggiornarle senza tempi di inattività, allora Container Linux (in precedenza CoreOS) è la tua distribuzione Linux. Linux Container è una distribuzione Linux leggera progettata per cluster e server. Questa distribuzione della sicurezza sta diventando popolare al giorno d'oggi perché è facile da distribuire, gestire ed eseguire i contenitori. In precedenza, CoreOS supportava solo la piattaforma Dockers, ma recentemente supporta rkt (Rocket) come alternativa a Docker. Questo software si aggiorna automaticamente quando è necessario un aggiornamento, aumentando la sicurezza.

09.01.2017, lunedì, 14:07, ora di Mosca , Testo: Vladimir Bakhur

Secondo CVE Details, il sistema operativo più problematico in termini di numero di vulnerabilità è stato Google Android, che ha superato di gran lunga il "leader" Apple Mac OS X dello scorso anno per numero di bug, numerose versioni di Linux e lasciando molto indietro la famiglia Microsoft Windows.

Il sistema operativo Android è uno dei leader nelle statistiche che perdono

Secondo il database del sito web CVE Details, che monitora e sistematizza la sicurezza di vari prodotti software a causa di errori di codice, la famiglia Microsoft Windows ha dimostrato nell'ultimo anno il livello di vulnerabilità più basso tra i sistemi operativi. “lasciando” davanti a sé Apple Mac OS X, numerose versioni di Linux e il “leader” nel numero di vulnerabilità rilevate – Google Android.

Secondo le statistiche CVE Details dello scorso anno, i “leader” nel numero di bug rilevati sono stati Apple Mac OS X (444 vulnerabilità) e iOS (387). Nel 2016 questi sistemi operativi sono entrati nella top 50 dei software più vulnerabili, all'11° e al 15° posto con rispettivamente 215 e 161 vulnerabilità rilevate.

Il sistema operativo più leaky del 2016, Google Android, al contrario, ha rilevato solo 125 vulnerabilità nel 2015, aumentando così le tristi cifre di oltre quattro volte in un solo anno.

Le vulnerabilità scoperte più frequentemente in Android nell'ultimo anno sono state l'escalation dei privilegi (39,8%) e il Denial of Service (25%). È anche importante notare che tra i 523 bug rilevati, 254 avevano un punteggio di vulnerabilità CVSS (Common Vulnerability Scoring System) pari o superiore a 9 punti, che in pratica significa un grado di gravità molto elevato di tali bug.

Tra i primi tre “leader assoluti” nel 2016 in termini di numero di vulnerabilità figurano anche Debian Linux e Ubuntu Linux con rispettivamente 319 e 278 bug rilevati. Al quarto posto si è classificato il lettore multimediale Adobe Flash Player con 266 bug, anche se nel 2015 occupava un terzo posto più alto con 329 vulnerabilità.

Dettagli CVE Statistiche 2016

E, al contrario, quest’anno i sistemi operativi della famiglia Windows, che vengono spesso “respinti” per i bug, sono lontani dai “premi”. Pertanto, Windows 10 ha “segnato” 172 bug, Windows 8.1 – 154, Windows 7 e Windows Vista – 134 e 125 vulnerabilità rilevate, rispettivamente.

Tra le versioni server, la più vulnerabile (al 16° posto) è stata Windows Server 2012 con i suoi 156 bug, Windows Server 2008 si è classificato al 22° posto con 133 vulnerabilità.

Anche le statistiche CVE Details sui browser nel 2016 hanno indicato Google Chrome con i suoi 172 bug come il più vulnerabile. Segue con un notevole ritardo Microsoft Edge (135), poi Mozilla Firefox (133), Microsoft Internet Explorer (129), e in fondo alla lista, al 44° posto, c'è Apple Safari (56).

La suite per ufficio Microsoft Office si è classificata penultima, 49esima, con 48 vulnerabilità scoperte nel 2016.

Dettagli CVE 2016 Statistiche per fornitore

Uno spaccato delle statistiche CVE Details delle prime 50 aziende per azienda ha portato Adobe al primo posto nel 2016 con un totale di 1.383 bug per tutti i prodotti dell'azienda menzionati nella classifica (Flash Player, varietà di Acrobat Reader e Acrobat). Al secondo posto si è classificata Microsoft con 1.325 bug, al terzo posto Google (695 bug), al quarto e quinto posto Apple (611) e Red Hat (596).

Specifiche della metodologia di contabilità delle vulnerabilità CVE Details

Il database CVE Details tiene conto delle vulnerabilità del software se sono state ufficialmente registrate nel database Common Vulnerabilities and Exposures (CVE) della MITRE Corporation, un'organizzazione non governativa e senza scopo di lucro degli Stati Uniti che gestisce la ricerca finanziata a livello federale con il supporto dal Dipartimento della Difesa, dalla Federal Aviation Administration, dal Dipartimento per la sicurezza aerea nazionale, dall'Istituto nazionale di standard e tecnologia

Analisti indipendenti sottolineano specificamente che, nonostante i dati interessanti di CVE Details, dovrebbero essere presi in un determinato contesto adeguato. Assegnando un punteggio di vulnerabilità univoco a ogni singolo prodotto software, CVE consente agli utenti di garantire che il software riceva infine aggiornamenti e protezione adeguati contro le vulnerabilità identificate.

Tuttavia, i numeri CVE sono del tutto irrilevanti per qualsiasi valutazione di sicurezza del prodotto. In altre parole, per analogia con la medicina, il numero di visite in clinica non significa affatto la valutazione della salute del paziente.

Non tutte le valutazioni CVE sono uguali in termini di gravità delle vulnerabilità. Inoltre, numerosi produttori di software rilasciano aggiornamenti dei prodotti senza fornire loro le classificazioni CVE.