Scrivo questo articolo per completare un certo argomento iniziato con la scrittura di diversi articoli. Stiamo parlando, come ha appena confermato il titolo, della sicurezza informatica. Questo articolo in realtà va oltre a questo concetto, in quanto verranno introdotte molte cose. Questo articolo sarà molto più tecnico rispetto a quelli che ho precedentemente scritto sull’argomento, ma comunque non così tanto da non capirci.
Ci sono molte cose da dire. Questo perché tengo particolarmente, e forse chi segue il mio blog da tanto tempo lo sa, a questa tipologia di argomentazione. E c’è un motivo, anche piuttosto semplice a dir la verità. La motivazione è la disinformazione. Leggo sempre più spesso blog che nascono e che i loro scrittori si considerano delle persone acculturate sulla tematica. Sostengono che tutte le loro tesi siano corrette e si impongono di essere i numeri uno. Questo causa un problema. Tutte le persone, che non ne sanno molto in materia, credono a queste sciocchezze e arrivano ad avere un pensiero scorretto sull’argomento.
Uno degli esempi lampanti è come viene trattata la sicurezza informatica. Viene attribuita la fonte di tutti i problemi al sistema operativo. Installando un tale sistema operativo si riesce ad evitare qualsiasi tipo di problemi, rispetto ad installarle un altro. Questo l’ho spesso sottolineato in molti, se non nella maggior parte dei miei articoli. Questa tesi si poteva considerare valida decine di anni fa, quando con un computer si svolgevano per la stra grande maggioranza operazioni offline, come gestione dei file o altro ancora. Oggi, nel 2016, con un computer si naviga in rete. E su internet la cosa che deve preoccupare meno sono i virus.
A parte il fatto che i virus molto spesso vengono presi in quanto l’utente non ha voglia di leggere e di guardare con un minimo di criterio ciò che sta facendo. Poi per giustificarsi per ciò che è successo, da la colpa al sistema operativo. Poi non capisco tutto questo modo di giustificarsi. Se uno non sta attento e dopo si deve scontrare con dei problemi, non deve giustificarsi. Magari deve soltanto stare più attento la prossima volta.
Oppure molti installano aggiornamenti di sistema, come per esempio aggiornamenti di Windows, piuttosto che aggiornamenti di Linux senza leggere le note di rilascio.
All’interno delle note di rilascio è possibile vedere gli eventuali bug che un tale software o aggiornamento può avere.
Non leggendo le note di rilascio, che per altro sono facili da leggere. In molti casi c’è perfino un link diretto per accedervi, vi informa su diversi rischi. Non leggendole non si potranno sapere certe cose e ovviamente di chi è la colpa? Beh ovviamente della casa produttrice di quel determinato software.
Dopo aver esposto questa mini carrellata di problematiche direi che possiamo iniziare seriamente con l’articolo
Cosa comprenderà questo articolo?
Questo articolo si dividerà in due parti. Parte sulla sicurezza offline e una parte sulla sicurezza online. Non sarà il classico articolo in cui si scrive soltanto 3 cose sui virus e poco più, ma questo articolo comprende anche moltissime altre situazioni e soluzioni a problemi che non c’entrano nulla con i malware, ma che incidono comunque sulla propria sicurezza e sulla sicurezza del proprio computer.
Sicurezza offline
Direi innanzi tutto di dedicare la prima parte dell’articolo alla sicurezza offline.
La sicurezza offline comprende tutto ciò che potrebbe accadere quando non si è connessi ad internet.
Innanzi tutto parliamo dei classici problemi di sicurezza. Possiamo iniziare da diversi malware presente in unità di archiviazione esterne, come chiavette, hard disk esterne e molto altro. Questi virus non danno particolarmente problemi, tranne in alcune eccezioni.
Un qualsiasi virus è una porzione di codice scritta in un determinato linguaggio di programmazione, che potrebbe essere c++, che si collega ad un file. Un virus informatico non è in grado di agire autonomamente, ma come un organismo batterico che attacca un essere vivente, ha bisogno di collegarsi ad un’entità. In questo caso ad un programma.
Come succede questo? Beh per esempio il virus potrebbe essere contenuto all’interno di un’immagine e quando quest’ultima viene aperta tramite un programma di visualizzazione immagini, ecco qua che il virus inizia a fare il suo percorso. La maggior parte delle volte quest’ultimo viene intercettato dall’antivirus prima ancora che il file venga aperto. Questo fatto consente di prevenire tutta una serie di problemi.
Ma come ho già spiegato innumerevoli volte, un antivirus non ha una particolare funzione. Infatti non è che poi sia così efficiente. Infatti la maggior parte delle volte il virus non viene intercettato, il file viene aperto e e mi spiace dirlo, ma ormai è troppo tardi.
Ma come si può evitare questo problema?
Per prima cosa è necessario guardare l’estensione del file per verificare che il file che si intende aprire sia effettivamente quello che si pensa che sia. Ad esempio se un file ha come estensione jpg.exe, si può subito intuire, senza grossi problemi, che il file non è certo un’immagine, ma tutt’altra roba e che magari non sia proprio il caso di aprirlo.
Un esempio di questo problema potrebbe essere questo:
Da questo screen è possibile notare che il file che si credeva un’immagine in realtà era un programma, che si è avviato in background e chissà che operazioni starà facendo al proprio computer. Questo potrebbe essere un problema grave, anche perché non è detto che un virus rompa il computer. Magari inizia a leggere i dati del computer e li invia ad un altro pc. O molto altro ancora. Dipende da chi aveva creato il virus e che intenzione aveva.
Ci possono essere dei casi in cui l’estensione del file possa sembrare normale e questo potrebbe risultare un grave problema. E infatti lo è. Su Windows ad esempio esiste un bug che permette, tramite una certa codifica di caratteri, modificare l’estensione dei file. Questo bug viene chiamato Windows Unitrix Exploit. Questo bug presente da ben 19 anni e a quanto ne so, non ancora risolto, permette di nascondere letteralmente un’estensione o di cambiarla totalmente.
Questo bug deriva da un problema di codifica di Unicode da parte di Windows.
Come risolvere il problema in questo caso?
Beh in ogni caso, se non si è certi di conoscere correttamente la fonte del file, si può controllare le proprietà del file. In questo caso si sa di per certo che tipo di file si tratta.
Su che piattaforma si può riscontrare questo problema?
Come abbiamo appena detto, Windows è una prima piattaforma che è soggetta a questo problema. Per quanto riguarda altri sistemi operativi, come GNU/Linux, non esiste questo genere di problema, in quanto non è presente un bug di questo genere.
Su GNU/Linux esiste però un problema aperto in molti dibattiti. Il problema dei file scaricati con il metodo wget, ovvero il comando lanciato da terminale. Può capitare che il link che si digiti per far scaricare un certo comando, faccia scaricare file .run o .deb che non hanno nulla a che vedere con quello che si desidera installare.
Una volta scaricato il programma, se si danno i permessi per la sua installazione (inserendo la password utente o la password di root) e il programma era tutt’altra roba rispetto a quello che si aveva intenzione di scaricare, il disastro è praticamente fatto. Si è appena installato un virus a tutti gli effetti.
Per fortuna questo problema non è molto accentuato su Gnu/Linux o comunque tutti i sistemi operativi che si basano sul buon vecchio Unix. Questo perché di solito i repository sono gestiti da comunità di sviluppatori open. Questo fa si che se ci dovesse essere del codice dannoso all’interno di un programma, verrebbe subito intercettato e rimosso da qualcuno. Ma per evitare problemi, installate software proveniente o dai repo ufficiali della propria distribuzione o da repository esterni fidati, che provengono da fonti sicure.
Dopo aver parlato di possibili virus che si potrebbero incontrare in modalità offline, parliamo di altri problemi che potrebbero minare la sicurezza digitale.
Dati
All’interno di un computer si è solito inserire dei dati al suo interno. Molti per facilitarsi la vita partizionano il proprio disco fisso in diverse partizioni, tra cui una che funge da partizione dati, ovvero un’intera area del disco fisso del proprio disco fisso dedicata alla memorizzazione dei dati.
Questa pratica è anche piuttosto corretta, dato che se ci dovessero essere dei problemi con il sistema operativo installato sul computer, anche se ci dovesse essere il bisogno di formattare, i dati non verranno persi. Peccato che in molti casi questa pratica non viene attuata.
E’ importante però effettuare dei backup su hard disk esterni, o come vedremo dopo, su cloud. Infatti la vita media di un hard disk, anche se non utilizzato è di circa 10 anni. Dopo di che inizia a rompersi.
Ad esempio gli hard disk tradizionali, quelli meccanici, sono realizzati con diverse placche magnetiche, che si mantengono in equilibrio tra di loro. Come una sorta di puzzle. Col tempo i magneti cedono e quindi si iniziano a creare degli spazi neri, vuoti, dove la memoria è inutilizzabile. La struttura ha un minimo di tolleranza, ma una continua degenerazione della struttura porta il disco ad essere inutilizzato.
La soluzione migliore in questo caso potrebbe essere quella di collegare un hard disk piuttosto capiente in un computer datato e utilizzare quest’ultimo come spazio di archiviazione di rete casalingo. Così potrete trasferire i file in quelle memorie da qualunque dispositivo voi state usando. Avevo già spiegato come fare tutto questo in questo articolo.
L’unico problema di questa soluzione è che bisognerà pensare in modo autonomo alla manutenzione dei dati. Cosa che non bisognerebbe attuare affidandoci a dei servizi cloud, che ne parleremo dopo quando andremo a trattare la parte sulla sicurezza online.
Sicurezza online
Ecco che quindi iniziamo a trattare la parte dell’articolo che riguarda la sicurezza online.
Per prima cosa direi di trattare la navigazione standard, ovvero la navigazione ad internet che pratica la maggior parte delle persone ogni giorno. Questo tipo di argomento l’ho già introdotto in questo articolo, ma è giusto approfondirlo con l’opportuno criterio.
Nella navigazione di tutti i giorni vedo moltissime persone che si trovano in difficoltà. Ma non in difficoltà a navigare, ma difficoltà a distinguere cosa sia reale e cosa sia truffa.
Vedo persone che cliccano a caso sulle cose che vedono e quando vanno nei pasticci danno la colpa al software installato sul computer. Vedo persone utilizzare male tecnologie come AdBlock, perché tramite questi sistemi si blocca tutto ciò che potrebbe essere potenzialmente rischioso o soltanto lontanamente fastidioso.
La maggior parte delle volte, quindi, i problemi che vengono riscontrati durante la navigazione sono causate dagli utenti stessi. Secondo me questa è una cosa abbastanza sconcertante, ma poi sarete voi a stabilirlo.
Secondo me la maggior parte delle persone commettono sempre errori, anche banali, in quanto non conoscono per nulla il funzionamento delle tecnologie che caratterizzano i siti che si navigano o i linguaggi utilizzati per il browser attualmente in uso.
Quindi iniziamo a trattare queste tecnologie. Spero che con questo molte persone potranno colmare alcune lacune causate da una grave disinformazione.
Cookie
Direi di partire con un argomento semplice e che praticamente conoscono tutti. Ma che nessuno sa cosa sono di preciso.
I cookie sono dei file di testo dove vengono memorizzate le informazioni di navigazione di un determinato sito. Ad esempio, se navigate nel sito di Falco96, ovvero questo blog, verranno salvati dei cookie che memorizzeranno le vostre preferenze, memorizzeranno il vostro stato (se siete loggati oppure no) e molte altre informazioni.
Solitamente i cookie vengono controllati dal sito di appartenenza. Ad esempio questo blog controllerà i propri cookie e il sito di Google i propri.
Il problema è che non tutti seguono questo regolamento. Infatti aziende come Google scannerizzano tutta la cartella dei Cookie del proprio browser, controllando la navigazione effettuata negli altri siti. Infatti avete mai notato che se voi guardate un annuncio di Amazon, ritroverete la pubblicità dell’annuncio all’interno di molti banner pubblicitari di altri siti.
Sinceramente parlando non solo altri siti può farlo, ma può farlo qualsiasi utente con un semplice script php lato server.
Questa cosa, come voi potrete notare, mina non poco la privacy degli utenti. Il fatto che si possa controllare i cookie altrui non è presente solo su Windows, ma su qualsiasi browser di qualunque sistema operativo.
Javascript
Javascript è un linguaggio di programmazione lato web che viene eseguito nei computer degli utenti, a differenza di altri linguaggi come il php.
Essendo eseguito dal client, il problema è che può essere rischioso. Infatti alcuni siti poco raccomandabili possono includere codice malevolo all’interno degli script javascript. Gli script essendo eseguiti dal computer, fanno danni nei confronti dell’utente senza che quest’ultimo se ne accorga.
Non tutti i siti presentano queste problematiche, anzi praticamente nessuno dei siti tradizionali. Diciamo che problemi di questo genere sono comuni su siti poco raccomandabili come siti di pirateria. Per evitare questo problema esistono molte estensioni per browser che bloccano il codice javascript potenzialmente dannoso, senza il bisogno di installare un antivirus specifico.
Questo tipo di problema può avvenire in qualsiasi sistema operativo. Questo perché il codice javascipt viene eseguito dal browser, che è installato direttamente nel sistema operativo. Con le nuove tecnologie di programmazione, ormai la maggior parte dei browser isolano una parte di memoria RAM per la loro esecuzione. In poche parole il browser diventa come un sistema quasi del tutto indipendente. Questo permette che la maggior parte delle possibili minacce non raggiungano il sistema operativo, ma rimangono per così dire bloccate nella memoria dedicata al programma di navigazione utilizzato in quel momento.
Ma dato che anche le tecnologie di sviluppo dei malware stanno migliorando, bucare questo tipo di sicurezza che il browser attua non è impossibile. Pertanto un minimo di attenzione è raccomandabile.
Sicurezza dei file online
Finalmente arriviamo all’argomento cloud, accennato in precedenza.
Questo argomento ritengo sia molto importante, quasi fondamentale, anche perché è sempre più di attualità.
Un cloud è una piattaforma ove è possibile caricare dei file per poterli conservare nel tempo. E’ uno spazio gratuito in remoto, gestito da una società, chiamata provider.
Tramite i cloud è possibile caricare dei file senza preoccuparci dei lati tecnici che la piattaforma comporta.
Questo tipo di tecnologia però viene usata molto da provider come Google, che offrono gratis il servizio per poi vendere a diverse aziende elaborati dei dati caricati dagli utenti, se non i dati originali. Gli elaborati si possono definire come vere e proprie indagini di mercato attuate a spese della privacy dei propri utenti. E’ per questo che se si desidera un sito sicuro che mantenga la vostra privacy e che consenta di caricare e di conservare dati, è necessario informarsi con sufficienza.
Infatti leggendo il contratto di licenza che ogni provider fornisce e prendendo altre informazioni che possono tornare utili per decidere, si può decidere se una determinata piattaforma fa a caso o meno per le proprie necessità.
Molte persone, ignare di questo fatto, pensano e poi ovviamente lo fanno, di caricare dati anche sensibili sul primo cloud che trovano in rete. Vi posso assicurare che questo atteggiamento non è proprio da consigliare. Anzi se lo evitate è meglio. Con questo non sto dicendo di evitare i cloud in generale, ma vi consiglio di informarvi meglio sui servizi che andrete ad utilizzare.
Il discorso dei cloud è applicabile anche a molti account creati con diverse piattaforme, come Bing, o Google, o Libero e molte altre ancora. Questi servizi non sono gratuiti per niente, ma c’è una motivazione ben precisa.
Sviluppo Web
Questa parte dell’articolo voglio dedicarla a tutti gli sviluppatori, ovviamente persone che stanno imparando a programmare come me. Penso che certi discorsi ad una persona ben afferrata in materia siano alquanto inutili, anche perché si presume che molte delle cose che andremo a dire le sappia già.
Nello sviluppo di applicazioni web, accessibili quindi tramite browser o webapp, bisogna prendere nota di diverse nozioni importanti, per riuscire a garantire a tutti gli utenti che andranno ad usufruire del servizio creato, di una certa sicurezza. Qui si sta parlando di sicurezza dei dati.
La sicurezza è una cosa molto importante, che non bisogna prenderla alla leggera. Soprattutto quando si va a sviluppare un certo servizio e non ad utilizzarlo.
Cosa bisogna prendere atto quando si va a sviluppare un qualsiasi programma che funzionerà online e che funzionerà su un server?
Beh innanzi tutto bisogna esser sicuri che la trasmissione dei dati tra il computer dell’utente e il server sia al sicuro. Per garantire questa sicurezza è necessario ricorrere al protocollo HTTPS, che è uno standard di comunicazione un po’ diverso dall’HTTP. Il protocollo HTTPS, trasmette le informazioni in modo criptato, quindi non leggibile da qualunque sistema.
Il server conosce la chiave di codifica e tramite questa riesce a leggere il dato inviato. Allo stesso modo il client (il computer dell’utente) conosce la chiave di codifica e quindi riesce a leggere i messaggi di risposta. La chiave di codifica viene trasmessa tramite lo standard. E’ una chiave che viene creata al momento dell’apertura della connessione e termina in due casi possibili:
- l’utente chiude il browser e quindi la connessione si interrompe
- La connessione si interrompe dal server.
Una volta che i dati sono stati trasmessi è necessario memorizzarli all’interno del database. Ti rimando alla mia guida sui database, così potrai capire meglio di cosa stiamo parlando, nel caso non lo sapessi in modo approfondito.
Per memorizzare dati come password o comunque dati di accesso in generali o altre informazioni sensibili è necessario prima cifrare questi dati. Solitamente si utilizza, per farlo, la funzione hash in php, che permette, specificando l’algoritmo di criptazione, il modo di criptare determinati dati.
Per semplificarti la vita ti spiegherò alcuni algoritmi di criptazione:
- md5: Algoritmo di criptazione irreversibile (i dati non sono decifrabili) a 32 bit. Questa funzione è stata abbandonata in quanto di recente è stata hackerata.
- sha1: Algoritmo di criptazione a 100 bit. Algoritmo sempre irreversibile. Questo algoritmo non è più supportato in quanto è stato hackerato di recente.
- sha2: Algoritmo di criptazione a 200 bit. Algoritmo sempre irreversibile.
- sha216: Algoritmo di criptazione a 216 bit.
- sha512: Il più sicuro degli algoritmi, ma il più pesante da eseguire via lato server.
Questi algoritmi possono essere usati anche per criptare file, oltre che stringhe di dati.
E’ di fondamentale importanza che i dati vengano criptati prima di essere inviati al database. Per maggiore sicurezza è importante che la trasmissione tra il server web e il server del database sia protetta dal protocollo HTTPS.
E’ importante anche stare attenti ai vari utenti malintenzionati. In questo caso bisogna prendere una precauzione piuttosto semplice: mai salvare dati o richiamare dati tramite il Javascript, perché come spiegato anche prima, il Javascript viene eseguito nel client e non nel server.
Inoltre alcuni dati sensibili come ad esempio i dati di connessione al database devono essere scritti in un file a parte, in modo da negare l’accesso al file e alle informazioni in esso contenute ai non autorizzati.
Con questo articolo ho voluto sottolineare alcuni aspetti sulla sicurezza informatica che in altri articoli che ho scritto non ho trattato.
Spero che questo articolo ti sia sembrato utile e che ti sia interessato.
Con questo ti saluto e ci ritroviamo al prossimo articolo!