Mentre ero affacendato nella preparazione del prossimo articolo su Bitcoin, e tutto il mondo che gli ruota attorno, mi sono imbattuto in un post Linkedin che recitava esattamente “Il web3 è sicuro, se sai quello che fai”.
Questo pensiero mi ha intrattenuto in una serie di pensieri articolati che proverò a sciorinare senza esprimere verdetti ma dando, come sempre, il mio parere personale.
Consapevolezza
I progressi tecnologici diventano veramente di massa nel momento in cui l’avanzamento delle nuove tecnologie si evolve talmente tanto da diventare quasi invisibile per cui il loro utilizzo si trasforma in uno standard in nuova gestualità a cui non dobbiamo più pensare. Oggi quasi chiunque ha familiarità con l’account di posta, con l’uso di diversi tool di messaggistica (su pc e smartphone) o anche l’uso di vari sistemi di pagamento tra carte di credito, pagamenti online o anche tramite App su smartphone e smartwatch.
Molta della tecnologia appena descritta fruisce dalle pagine web dei nostri browser che usiamo per comprare su Amazon, per scrivere messaggi su Whatsapp, per sbrigare una commissione amministrativa sui portali delle Regioni magari usando un sistema SPID e molto altro ancora. A tutto ciò che potremmo includere in quelli che sono ad oggi la base portante dei servizi web online su quello che viene chiamato WEB 2.0 si sono aggiunti e continuano ad aggiungersi nuovi servizi con nuove modalità che sono quelli che appartengono alla galassia del WEB 3.0, tra i quali spiccano certamente in pole-position le crypto, gli nft ed i metaversi.
Ma in molti servizi giornalistici/TG continuano a comparire i rischi di frode dati dalla poca conoscenza delle metodologie migliori per gestire i propri dati personali durante l’uso dei servizi online, per cui filoni come il Phishing sono ancora oggi una delle minacce più importanti per le frodi online, frodi che spaziano dal furto di identità online da rivendere nel DarkWeb fino al furto di username/password per l’accesso a servizi bancari, carte di credito e quant’altro.
Dunque sarebbe logico affermare che ci troviamo ancora in una fase di “studio” da parte della CriticalMass nell’imparare i metodi per un uso consapevole dei mezzi informatici, potremmo paragonarci all’inizio del ‘900 in cui l’uso dell’automobile iniziava a diffondersi ma ancora non esistevano molti sistemi di verifica e controllo per un uso intelligente e consapevole da parte dei neo possessori dell’auto, mancanza di segnaletica stradale, mancanza di semafori per un controllo dei flussi di marcia, mancanza dei sistemi di sicurezza e di divisione stradale tra il flusso dei pedoni e quello dei mezzi a 4 ruote etc…. In tutto ciò stiamo gia vivendo l’affiancamento delle tecnologie appartenenti al WEB 3.0 che porta con se sia la necessità di una maggiore conoscenza e consapevolezza da parte dell’utente ma anche di chi sta creando le nuove applicazioni. Infatti potremmo dire che mai come oggi i TEST ed il DEBUG delle Applicazioni web sono di vitale importanza.
I test sono una parte importante di qualsiasi progetto di sviluppo software, ma si sono rivelati particolarmente cruciali per il successo dei progetti Web3. Mentre con le app Web2 si possono verificare registrazioni errate o pagamenti falliti, i bug introdotti nello sviluppo delle app Web3 possono consentire agli utenti malevoli di sgonfiare il valore di un token coniando token in eccesso, modificare le regole di funzionamento di una DAO o persino congelare in modo permanente i fondi collegati a uno smart contract.
Con i progetti Web2, i bug possono essere risolti con semplici rami di correzione che vengono distribuiti prima che altri dati vengano corrotti o che importanti vendite vadano perse. Questo non è il caso di Web3: i bug in un’applicazione Web3 sono permanenti, poiché qualsiasi smart contract distribuito sulla blockchain è immutabile. Si può trovare una soluzione, ma una volta che il contratto è attivo diventa impossibile implementarla.
Possiamo realisticamente pensare di scrivere codice invulnerabile agli attacchi? L’idea di una sicurezza perfetta, anche nel Web3, è un’aspirazione impossibile ?!. Tuttavia, con test adeguati ed una maggiore conoscenza da parte di tutti gli attori, possiamo ridurre le superfici di attacco per i malintenzionati.
SAFER SMART CONTRACTS
Proverò ora ad introdurre un nuovissimo sistema di TESTING che potrebbe essere di aiuto nella gestione e verifica della stesura degli SmartContracts per Bitcoin, questo strumento si chiama CLARITY.
Clarity porta i contratti intelligenti in Bitcoin usando un linguaggio decidibile (che può essere deciso, cioè risolto, stabilito, determinato), il che significa che si può sapere con certezza dal codice stesso cosa farà il programma. Clarity è interpretato (non compilato) ed il suo codice sorgente è pubblicato sulla blockchain. Clarity offre così agli sviluppatori un modo sicuro per costruire contratti intelligenti complessi per la blockchain più sicura del mondo.
I progetti Clarity vengono creati con Clarinet (clarinet è un runtime di Clarity confezionato come strumento a riga di comando, progettato per facilitare la comprensione, lo sviluppo, il test e la distribuzione dei contratti intelligenti) sono dotati di un framework di test TypeScript integrato. Utilizzando questo framework è possibile distribuire i nostri smart contract su catene di test per eseguire le nostre varie funzioni su di esse. Questo ci permette di simulare funzioni pubbliche e di sola lettura e di verificare come accedono e modificano lo stato della catena.
Conclusioni
Dunque se una maggiore integrazione di sistemi per i test è fondamentale per una buona progettazione Web3, allora conoscere gli strumenti di test migliori è fondamentale per scrivere test ottimi e a copertura totale. Per il momento posso solo consigliare a coloro che sono interessati all’argomento di dare un’occhiata al materiale distribuito sullo spazio Github del progetto:
Per chi ancora non conosce il progetto IPFS (creato all’interno del MIT di Boston), posso cominciare dando la definizione riportata sulla pagina Wikipedia, ossia che: L’InterPlanetary File System (IPFS) è un protocollo di comunicazione e una rete peer-to-peer per l’archiviazione e la condivisione di dati in un file system distribuito.
IPFS basa il suo funzionamento sull’utilizzo di molteplici tecnologie, racchiudendo in se le più moderne idee alla base di precedenti sistemi peer-to-peer, inclusi DHT, BitTorrent, Git e SFS.
Bene, dopo questa introduzione dobbiamo capire cosa si può già realmente fare con IPFS, poichè essendo un progetto in forte sviluppo, sono già parecchi gli usi pratici su cui potremo inserire IPFS in un nostro progetto.
Ma quella definizione di “Sistema Interplanetario per la gestione dei dati” potrebbe forse farvi comprendere la vicinanza di questo progetto con la blockchain. Infatti quando è nata la tecnologia della Blockchain, il Bitcoin aveva lo scopo di far usare la blockchain per espandere la libertà finanziaria a tutti coloro che avrebbero usato quel sistema. IPFS vuole portare ulteriormente avanti il concetto da cui è nata la blockchain, non a caso, per gli sviluppatori del progetto la stessa blockchain non dovrebbe essere vista legata solamente alle transazioni di denaro (immagine che attualmente è stata appiccicata a questa fantastica tecnologia ), ma bensì dovrebbe rappresentare la nuova infrastruttura di Internet.
In pratica, Internet, così come lo conosciamo oggi, non dovrà più essere il sistema a cui noi semplicemente accediamo, e di cui qualcun’altro possiede l’infrastruttura.
Proviamo a fare un esempio che possa essere chiaro per tutti:
Oggi quando cerchiamo Facebook sul motore di Google, stiamo compiendo le seguenti azioni
Chiediamo a Google di cercare Facebook, per poi
Chiedere a Facebook di mostrarci che cosa fanno i nostri contatti
..tutto ciò senza considerare tutti i passaggi intermedi che ci servono per arrivare su Google e successivamente arrivare a Facebook, ad iniziare dalla prima "request" che viene fatta dal nostro device al nostro gestore di connessione, che sia il provider che ci fornisce la linea di casa o l’operatore telefonico che ci fornisce la rete per navigare.
Passaggi nei quali lasciamo in rete un sacco di tracce, dal nostro indirizzo IP, il nostro indirizzo MAC(ossia l’identificatore unico e univoco del nostro dispositivo connesso in rete), la localizzazione geografica della nostra posizione in tempo reale, la versione di Browser che stiamo utilizzando, fino alla stringa di ricerca che vogliamo venga esaudita. Insomma un bel pò di dati per una semplice ricerca.
Consideriamo adesso che tutte le aziende attraverso cui passano i nostri dati di navigazione, possono leggere e dunque sfruttare tutte queste informazioni per capire come ci comportiamo in rete, cosa siamo soliti cercare, se siamo appassionati di viaggi o di informatica, se abbiamo preferenze verso certi prodotti piuttosto che altri, e molto altro ancora, una vera e propria profilazione.
Ma una profilazione non serve solo come agglomerato di dettagli e specifiche di un’ utente, vendute agli inserzionisti per creare una pubblicità su misura per ogni singolo internauta. Una profilazione di questo tipo identifica una specifica persona meglio delle sedute dallo psicanalista, e non serve usare il concetto di coloro che sono soliti dire: "ma io non ho nulla da nascondere", in quanto il concetto di Privacy non nasce per difendere coloro che hanno qualcosa da nascondere. Immaginate di diventare dei VIP e che improvvisamente stuoli di giornalisti e paparazzi si piazzino davanti a casa vostra, cercando di rubare un momento qualunque della vostra vita, fotografandovi ovunque voi siate……, credo che invochereste il diritto di privacy immediatamente, non perchè abbiate qualcosa da nascondere, ma perchè avete una vostra vita da vivere; allora immaginiamo questi "scrutatori" della vostra vita, come costantemente parcheggiati nel vialetto davanti alla vostra stradina per navigare in Internet. Appena vi collegate, per un qualunque motivo, loro sono già li tutti pronti a scattare foto di ogni attimo della vostra navigazione, che sia per lavoro o per svago.
Adesso immaginiamo come potrebbe essere la stessa esperienza se non ci fosse bisogno di "Internet, per accedere ad Internet", questo è quello che stanno cercando di realizzare con IPFS, costruendo un protocollo di navigazione che sostituisca HTTP/S, ormai vecchio, accroccato e che non riesce più a stare al passo con la costante crescita delle innovazioni del WEB. Tenendo anche presente che l’http/s è un protocollo di livello 4, mentre nella pila (ISO/OSI) dei protocolli di rete ci sono ben 7 livelli.
IPFS vuole dunque cambiare il protocollo standard da https:// a ipfs:// , che può sembrare una cosa insignificante, invece tutto questo cambia moltissimo l’uso della rete per ogni utente, perchè con IPFS quando richiediamo un’informazione in rete , non la stiamo più chiedendo ad un insieme di server, sparsi chissà dove nel mondo, e di proprietà di una Big Corporation, ma lo stiamo chiedendo a qualcuno che si trova vicino a noi e che condivide quella informazione, nello spirito dei sistemi peer-to-peer.
Oggi il web è fondamentalmente inefficiente e costoso perché internet costa in ogni suo singolo aspetto, dalla connessione, alle infrastrutture per i servizi che si appoggiano, tutti, troppo, alle infrastrutture GAFA (Google, Amazon, Facebook, Microsoft), di conseguenza, non è possibile immaginare l’attuale Internet come il luogo che preserverà la storia umana.
I vantaggi che si potrebbero trarre dall’utilizzo di IPFS sarebbero molteplici, ad esempio:
• download più veloci ed efficienti: mentre HTTP può scaricare una risorsa da un solo computer alla volta, IPFS pu`o recuperare parti diverse di un file da molteplici computer contemporaneamente;
• un web più robusto: l’architettura di IPFS elimina i server centrali che rappresentano un single point of failure permettendo la creazione di un Web “permanente”. IPFS crea una rete resiliente dove ogni risorsa è sempre disponibile grazie al mirroring dei dati su più nodi;
• resistenza alla censura: mentre può essere molto semplice per un governo bloccare l’accesso a un determinato sito internet ospitato presso un server centralizzato, IPFS crea un Web immune alla censura.
Wikipedia è stato uno dei primi progetti ad essere stato “portato” su IPFS con un progetto che si chiama Distributed Wikipedia.
Dunque come iniziato ad accennare all’inizio dell’articolo, <u>IPFS è un sistema distribuito per l’archiviazione e l’accesso a file, siti Web, applicazioni e dati</u>.
Questo, in soldoni, significa che potrai archiviare qualsiasi tipo di dato/file in IPFS e, dopo averli archiviati, IPFS fornirà un hash che inizia con Qm. Si potrà quindi accedere ai dati usando quell’hash.
HASH
Che cosa sono e quale scopo hanno gli hash ?
L’hash in termini tecnici è noto come Identificatore di contenuto (CID) in IPFS. Il CID è sostanzialmente un’etichetta utilizzata per indicare il contenuto in IPFS, ma non indica dove è archiviato il contenuto. L’hash crittografico del contenuto viene quindi utilizzato per generare CID. L’hash corrisponde a un multihash di caratteri che inizierà con “Qm”. Le lettere “Qm” definiscono l’algoritmo (SHA-256) e la lunghezza (byte 32) utilizzati da IPFS.
Gli hash sono funzioni che accettano input arbitrari e restituiscono un valore di lunghezza fissa. Essi possono essere rappresentati in diverse basi (base2, base16, base32, ecc…).
Caratteristiche degli hash crittografici:
Deterministico
Non correlato
Unico
Senso unico
L’utilizzo dell’hash come chiave per l’identificazione dei file ha inoltre il vantaggio di garantirne l’integrità, poichè, così facendo, il nodo che ha richiesto una risorsa, per assicurarsi che il file ottenuto sia effettivamente quello richiesto e che non abbia subito alcuna alterazione, non dovrà far altro che ricalcolarne l’hash e verificare che questo corrisponda con quello che aveva inizialmente richiesto. Oltre ad aggiungere questa misura di sicurezza gratuitamente, la scelta di utilizzare l’hash come chiave porta un secondo vantaggio, ovvero la deduplicazione dei file: ogni volta che un utente pubblica un nuovo file su IPFS, la rete verifica attraverso il suo hash se questo è già presente, evitando automaticamente che ne vengano mantenute molteplici copie qualora più utenti caricassero la medesima risorsa.
Dal momento che IPFS utilizza l’indirizzamento basato sul contenuto, i file memorizzati su di esso non possono più essere modificati, infatti qualunque aggiornamento al file produrrebbe anche una modifica dell’hash che lo identifica. Per questa ragione IPFS, esattamente come Git, supporta il versioning dei file. Ogni volta che il contenuto di un file viene aggiornato, IPFS crea un oggetto chiamato commit che rappresenta un particolare snapshot nella cronologia delle versioni di un determinato IPFS object. Ogni commit contiene un riferimento al commit precedente e un link alla specifica versione dell’IPFS object (vedi immagine). IPFS tiene traccia in questo modo dell’ultima versione del file e di tutte le versioni precedenti.
SALVARE I DATI
pinning
Ora, una volta spiegato cosa c’è alla base del progetto IPFS, dobbiamo chiarire alcuni punti importanti. IPFS usa lo slogan per cui ciò che SALVI sul sistema rimarrà li per sempre….. SI & NO. La precisazione va ben fatta perchè, facciamo un esempio: Qualche giorno fa abbiamo assistito ad un service-down da parte di Google, che ha precluso l’accesso ai dati personali e lavorativi di milioni di persone, le quali improvvisamente, non riuscivano più ad accedere all’account Gmail, ai dati (privati e di lavoro) su Google Drive etc…. (e la lista è lunga). Pensiamo ai danno provocati da questo “blackout informatico”. Tutto ciò non sarebbe accaduto se i dati a cui noi volevamo attingere fossero stati già salvati su IPFS perchè non dipendono dai servizi e dalle architetture di un’azienda, per grande che sia, ma sono attivi perchè condivisi e replicati da tutti i pc degli utenti che utilizzano questo sistema/protocollo. Quindi se io salvo in rete un documento, questo sarà accessibile fino a quando ci sarà anche solo 1 pc nella rete IPFS in grado di condividermelo. Seppur banalizzato, il concetto è questo ma, non tutto ciò che possiamo caricare su IPFS rimane in eterno, questo perchè non ci serve mantenere ogni cosa, quindi esiste un processo, il PINNING, che ci permette di dire alla rete quali file noi consideriamo IMPORTANTI e vogliamo vengano mantenuti, altrimenti IPFS ha un suo sistema di pulizia della cache per cui, tutto ciò che non è stato “pinnato” verrà svuotato. Un pò come il garbage collector.
PROBLEMA
Chiaramente nessun sistema è perfetto, dunque anche IPFS, seppur abbia ottimi punti di partenza e di futuro sviluppo, ha anch’esso alcuni aspetti problematici da tenere presente, ma così come la Blockchain ha creato i Bitcoin come sistema di INCENTIVAZIONE per poter far crescere l’uso della sua innovazione, così anche IPFS ha dovuto trovare la soluzione per lo stesso dilemma.
Infatti, il problema principale di IPFS è quello di riuscire a mantenere i file sempre disponibili, poichè se un file è condiviso da pochi nodi della rete questo diventerà non disponibile non appena questi nodi andranno offline, esattamente come capita su BitTorrent per i file con pochi seeders. L’unico modo per risolvere questo problema è offrire un incentivo ai nodi per rimanere online quanto più tempo possibile e distribuire così proattivamente i file sulla rete in modo che ci sia sempre un certo numero minimo garantito di nodi, che ne mantenga una copia disponibile.
SOLUZIONE
Per questo gli stessi sviluppatori di IPFS hanno creato il progetto Filecoin, una blockchain basata su IPFS che punta alla creazione di un mercato decentralizzato per lo storage di dati. In questo modo chi offre il proprio spazio di archiviazione per il salvataggio di dati su IPFS è al tempo stesso incentivato economicamente a farlo e a mantenere il proprio nodo online per quanto più tempo possibile. In pratica come Bitcoin per la Blockchain.
Di Filecoin parleremo approfonditamente in un prossimo articolo.
IPNS
L’IPNS, ossia Inter-Planetary Name System è la parte tecnologica di IPFS che possiamo associare a ciò che noi conosciamo sulla internet, basata sul protocollo HTTP, come il servizio DNS, tramite il quale possiamo navigare, grazie alla traduzione da indirizzo-IP basato su numeri, a sequenza ordinata di lettere che compongono gli URL che utilizziamo ogni giorno.
Secondo la documentazione ufficiale di IPFS:
” l’ IPNS è un sistema per la creazione e l’aggiornamento di collegamenti mutabili al contenuto IPFS. Poiché gli oggetti in IPFS sono indirizzati al contenuto, il loro indirizzo cambia ogni volta che il loro contenuto lo fa. È utile per una varietà di cose, ma rende difficile ottenere l’ultima versione di qualcosa.”
Quindi, un nome gestito su IPNS equivale all’hash di una chiave pubblica, ed è associato a un record contenente informazioni sull’hash a cui è collegato, che è firmato dalla chiave privata corrispondente. Chiaramente tutti i nuovi record possono essere firmati e pubblicati in qualsiasi momento.
OGNI COSA HA BISOGNO DEL PROPRIO ATTREZZO
Come ho carcato di spiegare (data la vastità dell’argomento) , IPFS può rendervi indipendenti dall’Internet tradizionale, infatti posso salvalre file, pubblicare un sito ed altro ancora, senza dover usare Google, un DNS, o avere un dominio comprato su un ISP……, già dimenticavo di dire che, così come oggi siamo abitutati a comprare e registrare un dominio per il nostro sito, la stessa cosa la possiamo fare in modo indipendente anche su IPFS, tramite ENS (Ethereum Name Service).
In questo caso possiamo vedere come due tecnologie, simili nei concetti, si possono unire, ed è il caso proprio di IPFS+ENS.
L’ Ethereum Name Service (ENS) è definito come un “sistema di denominazione distribuito, aperto ed estensibile basato sulla blockchain di Ethereum”. Ethereum, per coloro che non lo sapessero, è una piattaforma di contratto intelligente (una blockchain) che vanta un gran numero di applicazioni decentralizzate (dapps), una vivace community di sviluppatori e una dichiarata community di utenti.
ENS è stato progettato per creare un sistema simile al DNS, tuttavia, a causa della diversa architettura decentralizzata di Ethereum, l’ENS varia dalla struttura sfruttata nei sistemi DNS. Tuttavia, proprio come il DNS, l’ENS detiene un record di nomi gerarchici separati da punti chiamati domini, con il proprietario del dominio di primo livello che ha il pieno controllo sui sottodomini.
Ad esempio, se “tizio” possiede il dominio “soldiapalate.eth”, può creare “blog.soldiapalate.eth” e configurarlo come desidera.
Per gli utenti della rete principale di Ethereum, l’ENS semplifica decisamente le cose, inquanto migliora l’usabilità delle dapps restituendo, attraverso la risoluzione inversa, nomi leggibili dall’uomo invece dei lunghi hash di IPFS.
WEB 3.0
Come stavo chiarendo qui sopra, posso essere indipendente da tutto se voglio usare IPFS come sistema di backup/scambio di file ma, cosa succede se voglio usare queste nuove tecnologie per creare un sito web?. Da questi ragionamenti è nato quello che oggi è il web3, che accomuna sistemi decentralizzati come IPFS alle Blockchain, come Ethereum, ma non solo. Infatti, seppur abbiamo chiarito che IPFS funziona, a livello concettuale com Torrent, se i contenuti che voglio condividere sono presenti solo su un computer e quel computer, per qualsiasi motivo, non è disponibile, quei contenuti saranno irragingibili.
Per questo motivo, da qualche tempo per IPFS esistono anche dei servizi di pinning: che ci aiutano a garantire la disponibilità dei nostri contenuti. Tra questi, alcuni nomi sono quelli di Pinata, Infura ed anche il blasonato Cloudflare ha aggiunto tra i suoi servizi quelli di “Gateway Website for IPFS” …… and more.
Il vantaggio del Web 3.0 è che i dati sono distribuiti punto a punto, quindi non è necessario preoccuparsi di perdere i dati se i server sulla rete vengono interrotti. Non è lo stesso di un Web centralizzato, quando il server di accesso viene interrotto, non è possibile accedere al sito Web.
CONCLUSIONE
Per questo primo articolo introduttivo è tutto, nel prossimo inizieremo ad affrontare alcuni casi pratici per vedere come si salvano i dati, li si recuperino in caso di cancellazione, vedremo come attivare un nostro nodo locale e come accedere alla Dashboard di gestione del nodo, e come usare alcuni dei servizi di gateway per velocizzare e gestire il pinning dei dile importanti.
Ok, ammetto che fino a non molto tempo fa mi ero quasi scordato di Javascript, nonostante fosse stato uno dei primi linguaggi da me studiati, nel lontano 1997, quando mi approcciai al mondo del web; negli anni successivi pero’, non essendo io uno sviluppatore, le tecnologie di gestione e deploy dei server web che dovevo gestire si erano spostate verso un grande quantitativo di linguaggi, in particolare per la parte back-end , passando cosi dal php, perl, python, java, ruby, lua etc……
Come stavo dicendo, per me javascript era rimasto in sordina come un linguaggio di scripting che intercorreva tra l’hmtl ed il css, nella composizione piu’ o meno dinamica di una pagina web ,prima che i pesi massimi sopra citati entrassero in campo per svolgere il duro lavoro.
Poi, un giorno, a ciel sereno……BOOOOOOOMMMM ! scopro l’esistenza di NodeJS, ed iniziai a chiedermi a cosa si dovesse tutto l’interesse di cui stavo leggendo; scopro quindi che NodeJS e’ una piattaforma Open Source event-driven per l’esecuzione di codice JavaScript Server-side, costruita sul motore V8 di Google Chrome. Mmmmhhhh, ok bene, ma quindi? cosa fa?
Ebbene questa piccola rivoluzione creata da Google consente agli sviluppatori di realizzare web application con JavaScript non più solo lato client, ma anche sfruttandolo come linguaggio di programmazione lato server.
E gli sviluppi sono davvero moltissimi, cosi tanti che mettere un’elenco sarebbe noioso e stancante ma, tanto per farne uno molto odierno, con NodeJS possiamo, ad esempio, realizzare dei ChatBot.
Ma qual’e’ dunque il funzionamento che lo rende cosi appetitoso? Innanzitutto partiamo dal dire che Node funziona con una logica a eventi: quando un evento viene generato, allora viene eseguita un’azione. Grazie a questa tecnica non bisogna attendere che le istruzioni precedenti siano terminate, rendendo cosi il tutto molto veloce.
Nella pratica, non c’e’ bisogno di sapere come funziona il V8 per poter utilizzare NodeJS, basti sapere che e’ l’interprete javascript piu’ veloce al mondo, poiche’ e’ stato altamente ottimizzato utilizzando un tipo di programmazione JIT (Just In Time), che trasforma rapidamente il codice javascript in linguaggio macchina.
Ma la cosa che, almeno a parere personale, mi ha maggiormente colpito, e’ stato quello che possiamo chiamare come “Modello non bloccante” , questo si basa sul concetto degli eventi, ma per meglio chiarire dovremmo spiegare un minimo la differenza tra modello bloccante e NON bloccante.
Immaginiamo di dover creare un programma che ci permetta di scaricare un file da internet e che alla fine dell’esecuzione del download ci mostri un messaggio.
Bene, con il modello classico (bloccante) basato sulla programmazione sincrona potremmo schematizzare il processo nel seguente modo:
Scarica il file
Mostra il messaggio
Fai qualcos’altro
Ci aspetteremmo quindi che le azione vengano eseguite in ordine, leggendo le operazioni da eseguire dall’alto verso il basso.
Nel sistema asincrono di NodeJS invece le operazioni verranno svolte nel seguente modo:
Scarica file
Fai qualcos’altro
Mostra il messaggio
Perche’ questa diversita’ nell’esecuzione rende il tutto piu’ veloce e performante? Beh perche’ mentre il sistema effettua il download del file, il programma non rimane in attesa che il processo venga portato a termine ma anzi nell’attesa il programma esegue altre operazioni.
console.log(“Mentre aspetto eseguo il resto del codice…”);
Quello appena descritto qui sopra e’ un’esempio di procedura di callback
Ok ma se non fosse ancora del tutto chiaro, proviamo ancora a spiegare perche’ le callback sono cosi importanti, procediamo con l’esempio di prima ed aggiungiamo una difficolta’; adesso i file da scaricare sono diventati due, dunque nel sistema sincrono il programma procederebbe nel seguente modo:
Scarico primo file
Attendo che finisca
Scarico secondo file
Attendo che finisca
Mando messaggio
La grande differenza in questo esempio sarebbe che con NodeJS verrebbero lanciati entrambi i download, nello stesso momento, permettendo gia cosi un piu’ veloce download e, nel frattempo il programma e’ in grado di svolgere eventuali altri compiti. Ma questo come dicevo e’ soltanto un esempio, invece di un download multiplo, potrebbero essere delle query ad un DB, o la richiesta di dati a servizi esterni tramite API (Facebook, Twitter).
Pensiamo quindi ad un sistema come Facebook, che riceve X richieste di Like ogni tot secondi e vengono cosi aperti N operatori che devono attendere il loro turno per fare la modifica (del like) consumando comunque energie anche mentre sono fermi in attesa; invece NodeJS nella stessa situazione di richiesta di “reaction” sul sisto di FB (like o altro) si comporterebbe nel seguente modo:
metterebbe tutte le richieste in ordine di arrivo, prenderebbe la prima e, vedendo che si tratta di una sfilza di input le inserirebbe all’interno del sistema e, una volta capito che si tratta di stesse azioni (ad esempio che aggiungono un Like) che devono contattare un DB, NodeJS contatta il DB e invece di attendere per effettuare ogni singola modifica, aggancia alla richiesta una callback, per ogni richiesta di modifica, tutti uno dietro l’altro. Quando il DB finisce la prima modifica scatta la callback e NodeJS restituisce all’utente l’avvenuta modifica della pagina e cosi via, gestendo quindi con un solo operatore le N richieste di modifica del Like invece di crearne uno per ogni richiesta e parcheggiandoli tutti in attesa della loro singola modifica. Quindi con un server (magari anche un container con Docker) e con poche risorse possiamo gestire un’enorme quantita’ di richieste al secondo.
Inoltre NodeJS usa come sistema di pacchetti e librerie l’NPM, ma di questo fantastico sistema di librerie parleremo in un’altro articolo.
Nel prossimo articolo su NodeJS parleremo anche di 5 nuovi framework ottimi per chi si occupa di sviluppare.
Ormai leggiamo, sentiamo, vediamo speciali alla TV, che hanno come tema l’esponenziale crescita del Cyber Risk da cui derivano attacchi di ogni genere che vanno dalla truffa online, alla compra vendita di carte di credito, all’uso di speciali software/scripts ai Ransomware, che “rapiscono” i nostri device, personali o aziendali per un vero e proprio riscatto, spesso in cripto valute, etc….. e la lista e’ varia come la fantasia delle persone che le studiano.
Oltre ai pericoli sopra citati dobbiamo aggiungerne uno che negli ultimi anni sta evidenziandosi alla stregua dei cosiddetti “attacchi hacker”, questo pericolo e’ il rischio del “dipendente infedele”.
Gia, perche’ se e’ ancora vero che piu’ dell’80% delle spese in ambito security delle aziende e’ ancora improntato verso la “sicurezza del perimetro esterno”, sono sempre piu’ in aumento i casi documentati di violazioni (spesso ad hoc) da parte o con la complicita’ di dipendenti infedeli.
Del resto sono sempre piu’ lontani, o confinati nella cinematografia, gli attacchi del singolo hacker che punta ostinatamente la grande preda (Banche o Assicurazioni, la NASA ed i soliti noti….), mentre nella realta’ ormai siamo tutti collegati a tutti tramite e-mail, social network e cosi anche chi punta “alla balena bianca” passa prima per quelli che, nella migliore delle ipotesi, possono diventare vittime collaterali, ma comunque vittime.
Chi entra nella nostra privacy per poter arrivare ad un bersaglio piu’ importante, colpisce comunque prima noi ed i nostri diritti; questo perche’ non venga mai sottovalutata l’importanza che ormai rivestiamo tutti nei confronti di tutti, un po’ come spiegato anche nel famoso concetto dei 6 gradi di separazione (Six Degrees of Separation).
Basta quindi con l’idea ormai assurda di credere di essere al sicuro, affermando semplicemente: “perche’ dovrebbero colpire proprio me, io non ho nulla da nascondere….” ;
e’ esattamente questo modo di pensare che aiuta chi usa con capacita’ le tecniche di ingegneria sociale e di phishing a perpretare i loro crimini.
In effetti possiamo elencare alcuni punti importanti che possiamo descrivere come sfavorevoli alla lotta al Cyber Risk:
apparente e diffusa sensazione di sicurezza – troppe persone pensano che avere un antivirus sul pc ed un Firewall da 2 euro al mese sul cellulare basti alla protezione;
sottostimiamo che i danni possono essere pesantissimi – per un privato puo’ essere il trovarsi con il conto bancario svuotato, oppure dover pagare un riscatto x riavere l’accesso alle proprie foto, mentre per le aziende molto spesso e’ la perdita della reputazione e molto altro ancora….
il campo di gioco/battaglia e’ il mondo intero – questo e’ uno degli aspetti meno considerati, oggi giorno si puo’ venire attaccati da chiunque, da ogni parte del mondo, ed i motivi che smuovono gli attacchi possono essere i piu’ diversi, non soltanto quelli economici o legati allo spionaggio industriale (che fa molto spy story)
il rischio dell’errore umano e’ dietro l’angolo – quotidianamente i nostri software e le nostre app vengono aggiornate, spesso in automatico, perche’ le aziende scoprono (spesso troppo in ritardo) bugs e malfunzionamenti di ogni genere, a volte sono errori di programmazione, altri sono modifiche richieste dal mercato, altri ancora iniettati da dipendenti fraudolenti, o pagati per farlo etc….etc….
Non a caso, anche il mercato assicurativo sta introducendo polizze per il “cyber risk”, studiate per garantire risposte certe e complete a questo rischio in forte ascesa.
Ma torniamo al tema portante di questo articolo e proviamo a definire chi e’ il “dipendente infedele”.
Il dipendente infedele è quel soggetto che essendo all’interno di una azienda, attraverso svariate tecniche tra cui il social engineering e, l’utilizzo dei sistemi e delle tecnologie informatiche, riesce a carpire/rubare informazioni sensibili circa l’azienda stessa e i colleghi di lavoro.
Sbagliamo se pensiamo che per arrivare ad avere informazioni tanto importanti o confidenziali si debba essere per forza parte dell’ingranaggio dei Manager (anch’essi spesso non esenti da questo rischio per via del ruolo chiave che rivestono) , invece tipicamente queste figure, qualora non abbiano privilegi particolari o amministrativi, punteranno ad acquisire informazioni in qualsiasi modo possibile, tipo rovistando tra le varie scrivanie in cerca di
post-it riportanti utenze e password, accedendo alle postazioni dei colleghi durante la loro assenza oppure introducendosi in aree con accesso restrittivo in cerca di documenti lasciati in vista, effettuando backup dalla rete aziendale interna o di database contenenti progetti in corso o qualsiasi altra informazione che potrebbe tornare utile, salvando il tutto su supporti esterni come chiavette USB e molto altro ancora……
Quali sono le cause
Generalizzando il concetto, potremmo dire che questa figura è solitamente caratterizzata da un forte senso di insoddisfazione verso l’azienda, i titolari o i colleghi.
I dati sottratti illecitamente solitamente vengono utilizzati per i seguenti scopi:
vendita delle informazioni ad una azienda concorrente in cambio di un compenso economico oppure di una offerta lavorativa migliore;
riutilizzo dei dati sottratti per aprire una società in parallelo spesso violando patti di non concorrenza;
estorsione di denaro verso i legittimi proprietari dei dati;
modifica/cancellazione di dati, oppure divulgazione senza scopo di lucro al fine di creare un danno economico e di immagine all’azienda.
Questo ci porta ad interrogarci circa la validita’ sul campo di molte delle piu’ comuni tecniche di policy aziendale, ma nel caso si verifichi una fuga di dati verso l’esterno ad opera di un dipendente infedele sara’ importante effettuare delle indagini per far luce sullo scenario accaduto e trattare nel modo più opportuno l’incidente verificatosi, e quale miglior sistema che adottare le tecniche della Digital Forensics ed i tencici specializzati in questa materia.
Questo fenomeno e’ in grande ascesa e le aziende che monitorano lo sviluppo del Cyber Crime, fanno notare come negli ultimi anni nel dark web, gli hacker stanno reclutando e preparando tecnicamanete degli insider con gli strumenti e le conoscenze necessarie a perpetrare attacchi, informatici e non, nei confronti delle loro aziende.
Il rischio del DarkWeb
Il dark web sta facendo leva principalmente su tre fattori predominanti, per creare la propria “armata” di dipendenti infedeli, quali:
insider trading: bastera’ dimostrare di poter accedere ad informazioni non disponibili al grande pubblico, per poter essere reclutati;
vendita di numeri di carte di credito da parte di insider che lavorano presso negozi di vendita al dettaglio;
installazione di malware all’interno delle aziende, eludendo così ogni sistema di sicurezza perimetrale.
Tutti motivi per i quali oggi giorno alle aziende non basta piu’ monitorare soltanto la parte fisica dei propri dati e device ma e’ costretta ad introdurre anche quelli che vengono definiti come “vigilanti del sentiment”, ossia personale preparato ed addestrato a riconoscere non soltanto gli abusi a livello tecnico ma principalmente i “segnali” della possibile infedelta’ , quindi del “sentiment negativo” dei dipendenti verso specifiche figure aziendali o dell’intera azienda, insomma dei veri e propri investigatori.
Anche in questo caso potremmo dettagliare con tre punti chiave, i motivi per cui un’azienda dovrebbe rivolgersi ad un’agenzia investigativa:
a tutela del patrimonio e della produttività aziendale;
a salvaguardia del know-how aziendale;
a sostegno del management
A coadiuvare questo articolo useremo le parole di due veri esperti del mondo digitale e della sicurezza, in grado di spiegare ancora meglio i concetti sopra descritti; eccovi dunque il video dell’ottima intervista fatta da Matteo Flora a Marianna Vintiadis
CyberWar, questo potrebbe essere il titolo di meta’ delle notizie che hanno a che fare con attacchi informatici di ogni genere, sia che siano diretti ad enti governativi o di Inteligence o che vadano a colpire grandi aziende.
Questo perche’ la CyberSecurity passa prima di tutto dalle aziende responsabili della creazione e dello sviluppo delle piattaforme informatiche/web che sempre piu’ quotidianemente usiamo ed useremo.
Pensando ai danni che potranno accadere con lo sviluppo delle tecnologie IoT, se non verranno ben gestite, il futuro digitale sembra vivere un momento di forte confusione. Ma veniamo alla notizia di qualche giorno fa.
L’attacco questa volte e’ avvenuto ai danni di Citrix, ed e’ di nuovo allarme sicurezza a livello mondiale, poiche’ questa volta la vittima è una di quelle aziende popolari, cosi come Facebook o Amazon, in quanto Citrix e’ un’ azienda d’importanza e di forte impatto nel mercato delle soluzioni per la virtualizzazione desktop e server.
L’attacco e’ cosi importante, non soltanto per la quantita’ di dati sottratti, ma perche’ molti, o la stragrande maggioranza di essi, sono documenti tecnici di progettazione, che potrebbero quindi essere usati per accedere ai sistemi dei clienti che utilizzano le piattaforme Citrix. Tanto importante, dicevamo, che a gestire le indagini e’ intervenuta direttamente l’FBI, cosi come riportato anche in un’articolo di Forbes: Why The Citrix Breach Matters And What To Do Next
Citrix ha immediatamente dichiarato di essere al lavoro per far rientrare l’allarme, ed ha aperto un’indagine interna, di tipo forense, per poter capire cosa e come sia successo.
Di per se a noi che non siamo direttamente coinvolti poco importa il COME, anche se lascia comunque basiti del fatto che, in pratica, non esiste alcune azienda che non sia attaccabile, sembra soltanto che sia piu’ una questione di tempo, di QUANDO questo succedera’.
In questo specifico caso, sembra che gli attaccanti avrebbero usato una tattica chiamata “password spraying”, in cui vengono sfruttate le password deboli per ottenere accesso al sistema, anche se limitato, per poi, successivamente, trovare il modo per aggirare i sistemi di sicurezza e fare escalation sul sistema vittima.
Quello che vorrei evidenziare, piu’ dell’attacco in se e piu’ ancora dell’azienda che e’ stata vittima, e’ che oggi giorno dovremmo tutti capire che Internet ( ossia il luogo in cui tutti noi ci scambiamo informazioni lavorative e/o personali ) e’ visto dagli altri “competitor” come un vero e proprio campo di battaglia, questo perche’ “la Rete” si e’ trasformata nel “Quinto Dominio Militare”, infatti il Cyberspazio è oramai da considerarsi la nuova frontiera della Guerra tra stati, un dominio in carenza di regolamentazione, dove i danni collaterali (le vittime ignare) siamo noi.
Consiglio a tutti la visione e l’ascolto di questo ottimo video che s’intitola per l’appunto GUERRA DIGITALE con Matteo Flora & Stefano Mele.