Come creare una applicazione e quali sono i possibili rischi informatici che si corrono?
In questo articolo vedremo quali sono le fasi necessarie a creare una applicazione, e quali sono i principali rischi informatici e come difendersi.
1. Quali sono i passaggi tecnici necessari per creare una applicazione?
Sempre più spesso si sentono casi di persone che fanno successo creando App per Smartphone e in molti pensano che scriverne una sia una cosa semplice e veloce. In realtà la strada per creare un'applicazione mobile è abbastanza articolata e i costi e i tempi sono da valutare attentamente. Non è semplice capire subito quanto tempo ci occorra e quanto budget serva per realizzare la nostra idea, inoltre non è detto che se scriviamo una App sicuramente tutti la scaricheranno o la vorranno provare solo perché esiste. Nel mondo in cui viviamo , siamo abituati ad avere tutto e subito e ci aspettiamo che se un software si scarichi gratis sicuramente è facile e veloce da scrivere.
Per fare un esempio, una applicazione come Telegram ( che a mia avviso è sicuramente meglio a livello di sicurezza della più celebre WhatsApp ) per svilupparla la prima volta avrà richiesto almeno 2 anni di sviluppo con tutti i costi che ne conseguono. In oltre c'è da mettere in conto anche tutto quello che sta dietro a un'applicazione del genere: i server. il personale, l'assistenza, i costi vivi di struttura ecc. In molti quando facciamo un preventivo, si stupiscono della mole di lavoro che occorre per creare, gestire e manutenere una App che sia in grado di fare successo o essere almeno utile a qualcosa.
La prima cosa che occorre fare per capire cosa sviluppare è sicuramente una ricerca di mercato sia su quali siano le esigenze del mercato e sia su cosa offre il mercato per soddisfare le esigenze individuate. Credo che sia indispensabile , prima di iniziare , fare un attenta analisi su come le varie applicazioni già presenti risolvano l'esigenza. Non ha senso creare una App clone di un altra. Conviene sempre studiare quelle presenti e migliorarle per renderle più attraenti.
Una buona pratica è sicuramente quella di andare a leggere i commenti degli utenti per capire i difetti e le migliorie necessarie affinché sia davvero utile. La seconda cosa da fare è scegliere la piattaforma di sviluppo. Oggi ci sono due grandi sistemi operativi che dominano il mercato, si tratta di Apple iOS e Google Android. Ovviamente se i nostri utenti finali sono mirati su altre piattaforme dovremmo indirizzarci su ciò che richiede il mercato. Non ha senso scrivere un'applicazione per tutti i dispositivi e le varie versioni, in quanto sarebbe dispendioso sia in termini di tempo che in termini economici e ci farebbe perdere la giusta rotta su cosa davvero si voglia ottenere.
Oggi la tecnologia ci mette a disposizione anche soluzioni intermedie come lo sviluppo su piattaforma ibrida che (con delle limitazioni ) ci permettono di sviluppare in contemporanea per più sistemi operativi. La terza fase è sicuramente l'analisi del progetto in dettaglio. Occorre definire fin da subito dove si vuole andare. Questa fase è tra le più critiche nel ciclo di vita di un'applicazione. Solo dopo attente riunioni tra il cliente finale e il nostro team di sviluppo si potrà scegliere la giusta linea da seguire. Prima ancora di scrivere del codice , ci servirà avere una comprensione a 360 gradi delle aspettative del cliente , i suoi requisiti , la grafica e molto altro.
Senza questa fase è impossibile sviluppare applicazioni di successo. Tutti i requisiti devono essere scelti in collaborazione con il cliente e devono essere concordate anche le casistiche di utilizzo per sapere che strada far percorrere all'utente finale che si troverà ad usare la nostra App. La quarta fase da mettere in pratica prima di scrivere il codice vero e proprio è “ L'esperienza Utente”. In questa fase, si disegna e si scrivono i vari diagrammi di flusso dell'applicazione. Solo dando una buona esperienza nell'utilizzo , gli utenti finali saranno invogliati a scaricare e usare la nostra applicazione. Fare a meno di questa analisi significherebbe sicuramente un insuccesso in quanto se non ben strutturata sarà di difficile utilizzo e quindi non verrà scelta ed usata da molti utenti finali. La quinta ed ultima fase di analisi è la creazione di un prototipo. In pratica ancora prima di scrive il codice vero e proprio si crea una “bozza” di Applicazione Virtuale e si vede se “sulla carta” potrebbe funzionare. Qui si controlla se tutte le dinamiche studiate e scelte prima possano andare bene o se c'è qualcosa da rivedere. Se le fasi scritte sopra sono state eseguite bene , sicuramente sarà una fase indolore e servirà solo a confermare che tutto sia stato pensato nella maniera corretta.
La sesta fase è quella dove il team di sviluppo inizia a creare e a scrivere l'applicazione sulla base di ciò che si è deciso e confermato nelle fasi precedenti. Questa fase termina con la pubblicazione della nostra applicazione nei vari store scelti in precedenza. A distanza di un po’ di tempo dalla pubblicazione , occorreranno ancora altre due fasi definite di “mantenimento”. La prima è analizzare il comportamento degli utenti e i vari feedback di chi sta usando la nostra applicazione. In questa fase se occorre potremmo iniziare a pensare a una versione di aggiornamento per poter correggere eventuali errori presenti o aggiungere nuove funzionalità richieste dal mercato.
La seconda fase post pubblicazione è la gestione degli aggiornamenti software. Potrebbe accadere che se un utente aggiorna il suo dispositivo a una versione superiore del suo sistema operativo , alcune funzionalità non siano più supportate. Quindi è fondamentale stare al passo con i vari aggiornamenti software e pubblicare eventuali aggiornamenti se necessario.
2. Ci sono delle differenze tecniche nel momento in cui si deve creare una applicazione per Android o una per Apple?
Assolutamente si! Ogni sistema operativo ha le sue esigenze e le sue regole. Scrivere una App per tutte le principali piattaforme equivale a scrivere più applicazioni differenti tra loro. Se si volesse scrivere un'applicazione e farla usare su Android, iOS , Windows Phone e BlackBarry, sarà necessario usare quatto ambienti di sviluppo differenti, quattro linguaggi di programmazione differenti e anche quatto codici sorgenti differenti.
Le differenze tra i vari sistemi operarvi sono davvero tante, sia a livello tecnico che a livello di struttura grafica e di strategia da adottare. Tutta la progettazione dell'applicazione cambia in base a dove si andrà ad installare. Ricordiamoci sempre che stiamo parlando di dispositivi diversi tra loro e con logiche di funzionamento del tutto differenti.Un discorso a parte sono le soluzioni multi-piattaforma di cui accennavo prima. Queste soluzioni permettono di usare lo stesso codice scritto per più sistemi operativi , ma hanno dei limiti di funzionalità e di estensione che vanno presi in considerazione nelle fasi descritte prima. Se si sceglie la strada del multi-piattaforma successivamente non si potrà tornare indietro e sarà necessario iniziare un nuovo progetto.
Questa soluzione di solito si usa per applicazioni poco complesse e per clienti che hanno un budget ristretto in funzione a ciò che si vuole ottenere. Generalmente vengono usate anche come App di test del mercato e permettono le funzionalità basilari in modo da capire dove sia più conveniente indirizzare gli sviluppi futuri. In ogni caso , per creare i file da installare sui dispositivi , anche le applicazioni ibride dovranno essere create su differenti sistemi operativi. Prendendo ad esempio l'applicazione di prima su quattro piattaforme differenti , lo stesso codice andrà compilato sia su computer Apple per iOS , che su computer Windows per Windows Mobile , che su computer GNU/Linux per Android e BlackBerry.
3. In tema di sicurezza informatica , quali sono i principali rischi che si corrono?
Per risponde in maniera esaustiva a questa domanda dovrei dilungarmi molto su tanti aspetti. Semplificando molto posso dire che nel mondo informatico di oggi , i pericoli sono molteplici e proteggersi da tutto è praticamente impossibile. Ma se riusciamo ad adottare delle buone norme di comportamento allora potremmo limitare al minimo i rischi.
Le minacce informatiche sono differenti in base al soggetto che abbiamo in analisi. Quando mi trovo a fare una consulenza di questo genere , mi soffermo principalmente su alcuni fattori chiave che mi indicano il grado di esposizione ai rischi informatici che la persona o l'azienda in questione è esposta.Prima di tutto occorre identificare qual'è il suo livello di interesse per un potenziale criminale informatico. La nostra strategia di difesa cambia sicuramente se dobbiamo proteggere una persona privata che ha da nascondere solo piccoli segreti oppure una azienda che deve assicurarsi che i suoi segreti aziendali non siano trafugati, oppure se dobbiamo proteggere una banca o altro ente che è soggetto ad attacchi frequenti.Una volta identificato il livello di pericolo si procede ad analizzare i pericoli più semplici che coinvolgo la maggior parte delle persone.
Si analizza il telefono , i social network , cosa si condivide e con chi , quali applicazioni si hanno installate sui dispositivi mobili e quali di questi “comunicano all'esterno” si analizza il traffico dati in entrata e in uscita , ci assicuriamo che nessuno abbia già messo in atto azioni di spionaggio o sabotaggio. Per dovere di precisione , posso dire che non esiste oggi nessuna persona che non abbia nulla da nascondere in quanto tutti noi abbiamo dei piccoli segreti. Il 95% dei telefoni che analizzo di persone private ( anche non imprenditori, come per esempio ragazzi giovani , madri di famiglia o impiegati di uffici ) ha almeno un'applicazione insicura sul telefono che usa abitualmente. In pochi eseguono la criptazione del telefono anche se questa è disponibile senza sforzi su moltissimi terminali.
Vorrei ricordare , che condividere una foto con un conoscente equivale a pubblicare su un server privato di una azienda le nostre foto e le nostre conversazioni. Tutto ciò che esce dal nostro telefono e automaticamente salvato su server online e da li persone più o meno raccomandabili potrebbero usarle a loro piacimento. Ma stiamo divagando troppo, tornando sul tema , dopo aver analizzato tutti i dispositivi mobili , i computer fissi e portatili , l'ambiante di lavoro ( casa , ufficio, cantiere, ecc.. ) abbiamo stilato una lista di possibili minacce a cui il cliente va incontro.Solo dopo aver capito bene quali sono le minacce è possibile capire come prevenirle. Prevenire tutti i tipi possibili di minacce informatiche sarebbe uguale ad andare in farmacia e comprare tutti i tipi di medicinali per essere immuni a tutte le malattie esistenti. Una buona norma è sicuramente prevenire una minaccia che si prevede di correre.
Come si fa per i viaggi all'estero o per qualsiasi altra cosa, bisogna proteggersi dai rischi che si è sicuro di correre. Non ha senso mettere il casco per andare a spasso in città , ma è utilissimo se vado in moto o in bici e anche qui userò due protezioni differenti , se sono in bici avrò un casco che protegge meno rispetto a quando vado in moto , in quanto il rischio è maggiore sulla moto. Lo stesso principio si usa per prevenire i rischi informatici. Se dovessi fare una classifica dei quattro rischi più comuni che si corrono, utilizzando le reti informatiche stando su situazioni generali e comuni, posso dire che, in cima alla lista sicuramente troviamo il furto di identità o di materiale privato, dovuto alla condivisione volontaria sui social network e server in Cloud di materiale privato come foto e video, al secondo posto metterei le intercettazioni e la fuga di informazioni non volute specialmente sui dispositivi mobili.
Al terzo posto troviamo il rischio di infezione da mail aperte senza capirne il reale contenuto. Al quarto posto metterei la diffamazione personale intesa come cyber bullismo o ricatti volti all'estorsione. Oggi viviamo in una realtà dove tutto deve essere social e in pochi capiscono i reali pericoli che si corrono.
4. Ora che sappiamo i rischi che si corrono , cosa possiamo fare per evitarli o limitare i rischi?
Come la domanda di prima non c'è una risposta veloce e univoca. Quello che sicuramente possiamo fare è prestare la massima attenzione a quello che si condivide e si carica sui vari social o server in Cloud. Ricordiamoci sempre che se un file si spedisce o si carica su un server esso sarà potenzialmente disponibile anche alle persone non autorizzate a vederlo. Con questo non significa abbandonare del tutto i social o barricarsi e non comunicare più con nessuno.
Significa solo fare le cose responsabilmente ed educare i più piccoli a usare gli strumenti tecnologici con la testa e in maniera responsabile. Per limitare il rischio di infezioni ed intercettazioni si potrebbe usare sistemi operativi diversi da MS Windows. In pochi sanno che esistono anche sistemi operativi molto sicuri e sopratutto gratuiti. Sto parlando del sistema operativo GNU/Linux ( conosciuto ultimamente con il nome delle due distribuzioni più famose Ubuntu e Mint ) ma questo è un altro discorso che meriterebbe un approfondimento a parte. Negli ultimi 3 / 4 anni sto notando che molte persone hanno barattato la comodità in cambio dei dati personali e della noncuranza di ciò che potrebbe succedere.
Tutto ciò è dovuto alla falsa sensazione di sicurezza che ognuno di noi ha, motivando la sua noncuranza dicendosi a se stesso << tanto che vuoi che succede? Io non ho nulla da nascondere, se vogliono prendere i mie dati, che li prendano pure, non sono un criminale ...>> e bene questa a parere mio è una grossa inesattezza in quanto così facendo state regalando i vostri dati personali ad aziende che li useranno per creare profitti. Un accorgimento che sicuramente potrebbe tornare utile è fare come i bambini piccoli quando stanno per imparare che si chiedono sempre le motivazioni di tutto. Secondo voi perché un'applicazione che è costata milioni di dollari per scriverla e costa altrettanto per mantenerla in vita ed operativa dovrebbe essere gratuita?
Cosa succede se diamo troppi permessi alle nostre App sui dispositivi mobili? Io personalmente mi sono sempre chiesto perché se la polizia informatica e gli esperti di tutto il mondo sconsigliano di condividere le foto dei minorenni, molti genitori continuano a farlo solo per prendersi dei like da amici e parenti ? Ecco vedete sono queste le leggerezze di cui parlavo, solo per il gusto di apparire e sentirci apprezzati facciamo di tutto e mettiamo a rischio la privacy dei nostri cari.
Poi magari inorridiamo dietro le foto trovate sui computer dei pedofili e ci chiediamo da dove le abbiano prese e chi è quel genitore tanto incosciente da mandare le foto dei figli ai pedofili. Ora voglio essere un po forte , ma spero che vi servirà come esempio futuro. Ogni volta che condividete qualcosa pensate a cosa potrebbe succedere se qualcuno che non conoscete riesca ad avere il file o la comunicazione da voi inviata. Mentre condividete la foto in costume dei vostri figli al mare, pensate se quella foto venisse salvata o venduta su un circuito di pedofili. Io per lavoro ne vedo di tutti i colori e purtroppo ogni volta è sempre troppo tardi per correre ai ripari. Ricordatevi che prevenire è meglio che curare. Una foto che inviate su un gruppo potrebbe finire su altri con un click e voi non potete avere più il controllo di chi la stia visualizzando e di che uso se ne farà.
Dopo che vi ho scosso la coscienza , vi faccio riflettere su un fenomeno che sta dilagando sul web. Sto parlando delle mail di phishing ( sono mail contenenti link o file potenzialmente dannosi) queste mail colpiscono molto le persone poco attente e fanno leva sui nostri istinti e debolezze. Una segretaria di azienda che legge nell'oggetto della mail “conferma ordine“ magari non sta attenta al file che scarica e involontariamente infetta tutti i pc dell'ufficio. Pensiamo a tutte le mail spedite dalle banche con richiesta di immissione delle credenziali. Tutti sanno che le banche non chiedono i dati via mail eppure ancora oggi il phishing è una tecnica molto utilizzata e redditizia. Anche in questo caso basterebbe usare il cervello e non farsi prendere dalle emozioni ed analizzare il contenuto delle mail che arrivano oppure semplicemente non aprire le mail sospette. Insomma come avete visto dai vari esempi alla fine di tutto si evince un solo grande consiglio.
Usate la testa e comportatevi nel mondo web come fareste nel mondo reale. Se non fate entrare sconosciuti a casa , non fateli entrare neanche nei vostri computer e dispositivi mobili, se siete sospettosi se un estraneo si avvicina al parco ai vostri figli o a voi , siate sospettosi anche nel mondo del web. Molti criminali informatici si nascondono dietro l'anonimato e trovano le forza di commettere reati perché protetti da uno schermo.
5. Cos'è il penetration test e come funziona ?
Il Penetration Test è una simulazione di attacco svolta dai nostri tecnici su richiesta di un cliente sia privato che aziendale. Serve per capire le varie debolezze dei sistemi informatici sottoposti a questo esame. Ci sono diversi step e diversi livelli di test. Questa analisi serve a capire cosa potrebbe causare una fuga di informazioni o di dati nel ambito del processo lavorativo di una azienda. Di solito i privati non richiedono questo tipo di analisi per due ragioni principali: è un analisi costosa e serve principalmente per prevenire attacchi informatici a danno di aziende. In 10 anni di lavoro mi è capitato solo due volte che un privato mi abbia chiesto di eseguire questa analisi.
Uno di questi lo ha richiesto perché temeva che i suoi dati aziendali potessero essere più vulnerabili tra le mura domestiche in quanto la rete di casa era sprovvista di protezioni specifiche. In questo caso si è trattato di analizzare dai dispositivi mobili ai computer fissi e portatili dei componenti della famiglia. L'analisi ha rilevato che effettivamente su due smartphone dei figli ci fossero due App molto note che trasmettevano informazioni e che potenzialmente potessero collegarsi con i dispositivi del padre e trafugare alcune informazioni. Ovviamente stiamo parlando di attacchi che per andare a buon fine hanno bisogno di esecutori con altri profili tecnici in grado di portare a termine un attacco molto complesso. Tornando al discorso principale, per eseguire un Penetration Test in primis occorre un'autorizzazione scritta dal cliente che ci sollevi da potenziali denunce e che metta a conoscenza del cliente che durante la simulazione di attacco alcune informazioni potrebbero entrare in nostro possesso e che ci impegneremo a distruggerle non appena finito il servizio.
L'analisi comprende diverse fasi e ha come obbiettivo la creazione di tre report dettagliati su tutte le vulnerabilità trovate e su come si potrà porre rimedio. Normalmente le aree che si analizzano sono principalmente tre : vulnerabilità interne alle rete , vulnerabilità esterne alla rete ed in fine sicurezza fisica delle rete. Come accennato prima esistono differenti modalità di esecuzione e la differenza sta nella quantità e qualità di informazioni raccolte.
Modalità White Box: Prima di iniziare a fare l'analisi , al tecnico vengono fornite molte informazioni sulla rete da analizzare. Per esempio si possono ricevere schemi di rete , indirizzi IP , codice sorgente dei software che utilizzano la rete , dettagli sui sistemi operativi utilizzati e sul personale che lavora internamente. Avendo tutte le informazioni a disposizione non serve un'analisi preventiva prima di iniziare il lavoro.
Modalità Grey Box: Prima di iniziare a fare l'analisi , al tecnico vengono fornite solo alcune informazioni sulla rete da analizzare. Il tecnico dovrà riuscire a trovare le informazioni mancanti da solo. Questa modalità presuppone che ci sia un minimo di analisi e di utilizzare tecniche di ingegneria sociale ( Ingegneria sociale o social engineering è la tecnica che si usa per convincere le persone a farsi rivelare informazioni private , convincendole di essere autorizzati a saperle. Viene sfruttata la nostra natura umana che ci spinge ad aiutare il prossimo se si trova in difficoltà)
Modalità Black Box: Al tecnico incaricato dell'analisi non viene comunicato nulla sulla rete in questione. Dovrà riuscire da solo a trovarsi tutte le informazioni per effettuare l'analisi richiesta. Questa modalità presuppone che ci sia una lunga fase di analisi e di utilizzare tecniche di ingegneria sociale ed altre per ottenere le informazioni essenziali per l'analisi. Questa è la modalità più costosa e lunga , ma è anche quella più richiesta in quanto simula alla perfezione una situazione reale.
Ora che sappiamo quali sono i livelli di analisi possiamo passare nel vivo del lavoro e vedere come si svolge in linea molto generale un Penetration Test. Durante il lavoro si alternano periodi di lavoro manuale a periodi di lavoro automatici svolti con particolari software che servono per captare le informazioni e i dati che circolano sulla rete. Come prima cosa si cercano le informazioni sull'architettura di rete e sui servizi offerti. Solo dopo questa fase si passa a replicare gli errori più conosciuti e vedere se si riesce ad ottenere altre informazioni. In questa fase i software utilizzati iniziano a scansionare tutti i nodi di rete ( computer e altre periferiche collegate alle rete LAN – Wifi ecc. ) per raccogliere più informazioni possibili sulle versioni di software utilizzato e sulle vulnerabilità che si possono sfruttare.
Molte volte ci capita di trovare delle vulnerabilità non ancora di pubblico dominio alle quali dobbiamo trovare un rimedio. Dopo questa fase inizia la fase manuale dove unendo l'analisi automatica all'esperienza del tecnico si procede a verificare e testare ogni segnalazione arrivata dai software usati prima. Conclusa questa fase, si iniziano a certificare le prima criticità riscontrate e si procede con la stesura del primo report dove si evidenziano i problemi riscontrati.
In fine si analizzano i dati raccolti e tutte le casistiche di vulnerabilità censite e si inizia a stilare un secondo report contenente l'analisi del livello di rischio, i dati analizzati e tempistiche per risolvere le problematiche riscontrate. Per finire si stila un terzo report dove si evidenziano tutte le operazioni da mettere in pratica al fine di correggere le vulnerabilità trovate e il relativo costo di messa in opera.
La validità di un Penetration Test dura fino a quando non si modifica nulla sulla struttura analizzata. Se per esempio oggi si fa l'analisi e tra tre giorni un sistemista aggiorna i sistemi operativi o introduce un nuovo dispositivo , la validità dell'analisi fatta qualche giorno prima non è più assicurata. Noi consigliamo di eseguire un Penetration Test almeno una volta al anno nelle piccole ditte o ditte individuali, almeno ogni 6 mesi nelle ditte medie da 20 a 50 dipendenti e almeno una volta ogni 3 mesi per le società strutturate con più di 50 dipendenti Per saperne di più Marco Valenti MWI - MarkWeb Informatica - www.markwebinformatica.net