FileSystem Decentralizzato – IPFS

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:

  1. Deterministico
  2. Non correlato
  3. Unico
  4. 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.

Alla prossima !!

IPFS – Filesystem distribuito

Le elezioni statunitensi e Bitcoin: in che modo le elezioni influenzeranno il mercato delle criptovalute?

Siamo arrivati a quelle che già da molti mesi sono tra le elezioni presidenziali più attese degli ultimi anni, ed i mercati finanziari sono stati, come sempre, ricchi di chiacchiere, di ogni genere, colpi bassi, gossip di cattivo gusto, insomma di tutto quanto ormai abbiamo imparato essere il circo mediatico dietro ad uno degli eventi più importanti al mondo, per via delle ripercussioni, positive e negative, sulla maggior parte delle nazioni. Ma da qualche anno le implicazioni non sono più soltanto a carattere geo-politico e finanziario ma anche sui vari asset strategici della economia digitale, tra cui Bitcoin.

E’ ormai assodato che la relazione tra il “cripto mondo” e questo grande evento statunitense richieda ulteriori indagini, vista la sua rilevanza storica.

Infatti dobbiamo tenere presente che Bitcoin ha chiuso il mese di Ottobre, per la seconda volta, nella sua intera storia, intorno ai 14.000 dollari, l’unico precedente lo possiamo ritrovare soltanto in quel periodo tra la fine del 2017 e l’iniio del 2018, in cui arrivò addirittura a 20.000 dollari.

Del resto anche prima del rialzo del 2017, si erano svolte le elezioni americane del 2016 tra la Clinton e Trump. Dunque potrebbe significare che le elezioni statunitensi hanno un’ impatto su Bitcoin in un modo o nell’altro?

Volendo cercare una correlazione, andando indietro a verificare, potremmo notare che, nell’ultimo ciclo elettorale, Standard & Poor 500 (l’indice della borsa statunitense) aveva registrato volatilità durante il periodo delle elezioni. In particolare, durante il mese di Ottobre e la prima settimana di novembre 2016, l’SPX era calato di oltre il 6%, mentre subito dopo le elezioni, le azioni erano rapidamente risalite, invertendo la tendenza verso quelli che sarebbero diventati i nuovi massimi storici.

Quindi, da un lato, abbiamo una situazione in cui si potrebbe tracciare una correlazione causale tra l’andamento di Bitcoin e le elezioni presidenziali statunitensi, d’altro canto, si potrebbe anche sostenere che questa correlazione sia semplicemente il risultato dell’aver stampato e pompato nei mercati una grande quantità di denaro, la stessa FED aveva dichiarato qualche settimana fa che, a causa degli aiuti all’economia per via del Covid, nel solo 2020, sono stati stampati l’equivalente del 22% di tutti i dollari in circolazione.

Gli eventi che si sono abbattuti sull’economia, all’arrivo del 2020, hanno però modificato la visione di molte persone ed aziende, circa quello che Bitcoin può diventare, infatti, mentre prima era visto principalmente come un’ asset speculativo con una capitalizzazione di mercato di poco più di $ 200 miliardi, oggi si è guadagnato un nuovo ruolo, ossia quello di una moneta per salvaguardare le nostre richezze diventando noi, in primis, degli “holder”, pensando quindi principalmente ad un accumulo come forma di prossima ricchezza, contro la visione speculativa dell’inizio.

Non a caso, proprio in questo anno alcune Big, società quotate in borsa di grande reputazione, come Square e MicroStrategy (per citarne solo alcune), hanno portato l’argomento della “riserva di valore” ad un livello successivo, avendo collocato sul mercato digitale, una grossa percentuale delle loro riserve aziendali investendo diversi milioni di dollari nell’acquisto di Bitcoin.

L’ascesa di Bitcoin come riserva di valore

Tutto ciò di cui abbiamo discusso fino ad ora, ci porta dunque a trattare Bitcoin come la nuova “riserva di valore”. In effetti, in un periodo di accresciuta incertezza, la necessità di una riserva assoluta di valore è diventata ancora più una necessità.

Tradizionalmente, l’oro è il bene di rifugio verso cui gli investitori si affollano in tempi di crisi. Ma Bitcoin sembra essere diventato decisamente più interessante per gli investitori tecnologici di oggi, con scarso interesse per le proprietà ingombranti dell’oro.

Dall’inizio della crisi economica da Covid, lo stimolo di ricerca della “riserva di valore” su cui investire è cresciuta parecchio, volendo analizzare i due protagonisti del mercato possiamo notare che, l’oro è aumentato del 40% (dal minimo al massimo), mentre Bitcoin è aumentato di oltre il 120%. Questa discrepanza nelle prestazioni diventa ancora più chiara se vista in un arco di tempo di 10 anni.

Conclusione

In conclusione, avendo osservato che, nonostante gli avvicendamenti dei presidenti americani, da quando Bitcoin è nato, possiamo affermare con una certa sicurezza che le elezioni statunitensi alla fine avranno poca influenza sulla traiettoria di crescita a lungo termine di Bitcoin.

Quello che possiamo immaginare è che certamente, il giorno stesso delle elezioni, fino anche ad una settimana dopo, sarà ragionevole prevedere una reazione del mercato legacy al candidato vincitore, che potrebbe andare in entrambi i modi, poichè, in genere, i mercati preferiscono mantenere lo status quo, il che significherebbe la vittoria di Trump, che sarebbe percepita dai mercati come “business as usual”, mentre, il rovescio della medaglia avverrebbe, se Biden dovesse vincere, per cui, le percezioni dei mercati dipenderebbero dal discorso inaugurale dello stesso neo presidente.

Concludo, ribadendo che questa è un’analisi totalmente pesonale e, che quindi a mio parere, a prescindere da chi verrà eletto, Bitcoin procederà come sempre per la sua strada, nel caso della rielezione di Trump, senza eventuali battute di pausa, ma proseguendo il trend di crescita del 2020 per tutto il 2021, tornando a puntare verso quella quota 20.000 che aveva già raggiunto nel Dicembre 2017.

Il miracoloso NodeJS

piattaforma Open Source event-driven

NodeJS – una piattaforma Open Source event-driven

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.

Il codice in oggetto avra’un aspetto tipo questo:

request(‘http://www.site.com/file.zip&#8217;, function (error, response, body) {
console.log(“Download completato!”);
});

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.

#NodeJS

 

Cyber Risk – il Dipendente infedele (la minaccia e’ in azienda)

il dipendente infedele

The Unfaithful Employee – #Cyber Risk

The unfaithful employee

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

Godetevi il video:

Progetto Mozilla per l’IoT

Mozilla Webthings per IoT

Mozilla Webthings per IoT

Su questo portale abbiamo iniziato a parlare di IoT gia alcuni anni fa, se interessati potete fare una pausa e leggervi prima l’articolo del 2015 dal titolo: Internet of Things , e poco tempo fa abbiamo iniziato a descrivere i nuovi scenari inerenti all’arrivo ed all’uso della tecnologia 5G .

Ed e’ proprio in questo anno che la tecnologia, grazie all’arrivo del 5G, subira’ una nuova impennata, non a caso su queste pagine parleremo a breve di diversi nuovi argomenti quali :

  • assistenti virtuali,
  • connessione ultraveloce 5G,
  • intelligenza artificiale per azioni legate alla vita quotidiana,
  • blockchain al di fuori delle aziende,
  • crescita degli eSport,
  • cloud,
  • i rischi della cybersecurity,
  • i furti informatici di dati biometrici,
  • la consapevolezza dell’importanza dell’etica nel mondo business

Come gia spiegato in precedenza, la tecnologia IoT sta avendo un rapidissimo sviluppo, ed ancor piu’ avra’ un’enorme diffusione in ogni campo della nostra vita, lavorativa e personale.
Il McKinsey Global Institute ha recentemente stimato che ogni secondo vengono connessi circa 127 nuovi devices IoT.
Seguendo questo andamento, le previsioni per il 2020, riguardo gli oggetti connessi alla rete, vanno dalla stima di 37 miliardi di device, calcolati da Cisco, fino ai 200 miliardi stimati da Intel.

Mozilla WebThings

In tutto questo fervore attorno al mondo IoT, il Mozilla IoT Team ha presentato recentemente un nuovo progetto denominato Mozilla WebThings, un progetto completamente open source sul quale è possibile contribuire direttamente al suo sviluppo dal repository pubblico di Github.
Il concetto alla base del progetto e’ quello di fornire una open platform pensata per il monitoraggio ed il controllo dei device IoT.

Sostanzialmente si tratta di una distribuzione Linux, da installare su una Raspberry Pi dove, al suo interno, sara’ possibile trovare vari tool che insieme generano un Hub dedicato alla gestione dei “device smart” connessi alla rete locale, come ad esempio le lampadine o i sensori di movimento e molto altro ancora……

I vari dispositivi potranno essere successivamente configurati tramite una pratica dashboard richiamabile dal Web browser.

Mozilla WebThings è animato dalle Web Thing API, grazie a questi set di librerie ad hoc, gli sviluppatori possono realizzare delle Web Things, ovvero le app dedicate alla gestione dei vari smart device supportati.

Sempre tramite l’utilizzo di queste API, gli sviluppatori potranno anche creare degli add-on in modo da abilitare funzionalità connesse ad un determinato Cloud provider e connettervi i molti device gestiti.

Il Mozilla WebThings è suddiviso in due componenti principali:

  • WebThings Gateway
  • WebThings Framework

Con Mozilla WebThings sara’ possibile tenere sotto controllo tutti i dettagli della propria rete di device IoT. Si potra’, ad esempio, monitorare il numero di utilizzi di un determinato dispositivo o i consumi energetici durante uno specifico arco temporale.

Tramite Mozilla WebThings l’utente potrà anche centralizzare la gestione di molti allarmi, quali, allarmi dei sensori di fumo, umidità e movimento da un’ unico pannello, impostando le varie regole e la quantità di notifiche da generare in caso di un evento o trigger.

Mozilla Webthings gestione consumi

Mozilla Webthings gestione consumi

Il team di Mozilla è anche al lavoro su una versione personalizzata di OpenWrt, famosa distribuzione Linux dedicata ai device embedded.

Seguiremo gli sviluppi del progetto, per tutti gli altri aggiornamenti potete andare a vedere direttamente sul repository di Github.