arc-convert-01

Home : Archivio

Protocollo Gemini: l'uscita di sicurezza da un web ipertrofico [39.25 - 26.01.2022]

Prima di diventare nome proprio del servizio dominante su Internet, WorldWideWeb è stato anzitutto un browser. Anzi, meglio, è stato il browser di riferimento da cui ha preso vita una prolifica discendenza che arriva fino ai giorni nostri. Nell'idea originale di Tim Berners-Lee tuttavia, WorldWideWeb non era solo un semplice visualizzatore di pagine multimediali ma anche un editor con cui costruire e modificare quelle medesime pagine. La netta distinzione tra gli strumenti di lettura e quelli di scrittura è in realtà molto più recente e potremmo approssimativamente collocarla agli inizi degli anni duemila.

La duplice natura del browser pensato al CERN era resa possibile dalla semplicità del primo HTML che disponeva di un numero esiguo di marcatori facilmente implementabili in un semplice editor di testo così come in una più ridondante interfaccia WYSIWYG. Se ne può trovare ancora traccia in una suite vecchia maniera come Seamonkey in cui un modulo denominato Composer permette di realizzare semplici pagine web. La linea prevalente però è stata un'altra e ha visto la progressiva scomparsa di qualsiasi funzione di editing. Un processo guidato a tappe forzate dalla progressiva e inflazionata ascesa commerciale del web che ha richiesto una continua espansione di protocolli, funzioni e linguaggi.

Il risultato di questo percorso ce lo abbiamo di fronte nella stragrande maggioranza delle pagine web. L'HTML come semplice linguaggio di marcatura è ormai una rarità ed ogni paginetta si porta dietro massicce dose di almeno altri due linguaggi: i fogli di stile CSS e l'immancabile Javascript. Il tutto abbinato ad una altrettanto prolifica ed articolata famiglia di linguaggi di programmazione lato server.

La complessità del web è semplicemente sfuggita di mano raggiungendo vette inaccessibili per la grande maggioranza degli utenti, persino di quelli che un po' di pratica con i linguaggi della rete se la sono guadagnata. Ciò che spesso non si dice è che gran parte dei codici che oggi popolano il web non sono più creati dalle persone ma da sistemi più o meno automatizzati che generano strutture altamente ridondanti ed inutilmente complesse. Costruire materialmente pezzi di web è diventata una prerogativa di pochi, mentre alle masse è stata regalata -bontà loro- l'illusione di poter riempire di contenuto quelle strutture. Oggi si installa un software come Wordpress e ci si sente padroni indiscussi di una nicchia di spazio web. Salvo scoprire amaramente che in caso di problemi non si sa letteralmente dove mettere le mani.

Era davvero questo il web a due vie nato sul NeXT Computer di Tim Berners-Lee? Probabilmente no, ma è decisamente tardi per tornare indietro.

Il protocollo Gemini://

Dunque? Beh c'è gente là fuori stoicamente convinta che non ci si debba arrendere al pensiero unico del web e che altri protocolli di comunicazione possano essere ancora attuali e per molti versi complementari al web nel fornire spazi e servizi. E a loro che pensavo in questo elogio spassionato della posta elettronica ed in questa riflessione eco-sostenibile su Gopher.

Di più; alcuni ritengono che non si tratti semplicemente di ripescare i protocolli ed i metodi della internet degli albori ma di costruirne di nuovi che tengano insieme principi di sicurezza, riservatezza, semplicità ed efficienza. Questo è lo scopo di Gemini, un protocollo di livello applicazione le cui basi sono state definite da un utente noto solo attraverso il nickname Solderpunk ed al cui sviluppo contribuiscono oggi molte persone. Gemini nasce nel giugno del 2019 fortemente ispirata da Gopher e con l'obiettivo di servire efficientemente documenti a prevalente contenuto testuale. Gemini si pone quale alternativa sia a Gopher che ad HTTP con l'obiettivo non tanto di sostituirli quanto di affiancarli.

Entrare nei dettagli di Gemini richiederebbe una trattazione molto più lunga di quella che posso permettermi oggi, ma vorrei però evidenziare alcuni tratti di questo protocollo che mi sembrano particolarmente interessanti.

Specifiche semplici. Gemini è costruito attorno a specifiche semplici e stabili in modo che sia i componenti server che i client possano essere sviluppati e mantenuti anche in forma hobbistica. Una contrapposizione netta rispetto al web attuale dove ormai solo pochissimi soggetti sono in grado di sviluppare browser completi.

Formato testuale. Gemini è pensato per servire file di testo puro che possono essere formattati secondo uno standard denominato Gemtext e vagamente ispirato al Markdown. Questo formato permette di organizzare il documento in maniera gerarchica con righe di lunghezza arbitraria e link su righe separate. In altre parole è possibile inserire collegamenti ad altre risorse attraverso schemi URI vincolati però dall'essere utilizzati su righe indipendenti. Un link in Gemtext è posto dunque su una nuova riga ed inizia con i caratteri => seguiti dall'URI ed eventualmente da un testo associato. Tra un attimo spiegherò il vantaggio computazionale di questa scelta. Intanto però vale la pena sottolineare che la semplicità dello standard Gemtext permette a tutti di creare pagine Gemini senza cadere nell'assurda complessità raggiunta dal terzetto HTML+CSS+Javascript ormai imperante nel web.

Interpretazione a righe. Mentre un browser nell'interpretare un codice HTML deve scansionare ogni singolo carattere alla ricerca di marcatori che ne indichino il tipo di rappresentazione, un client gemini deve analizzare solo i primi caratteri di ogni riga. Da questi comprende immediatamente se si tratta di un paragrafo di testo, di una intestazione, di un elenco o di un link. A livello computazionale l'efficienza di Gemini è evidente e paragonabile a quella di Gopher.

Niente fogli di stile. Gemtext non prevede marcatori di stile ne supporta l'uso di fogli di stile esterni. La rappresentazione grafica del file è affidata unicamente al client e quindi all'utente che è libero di visualizzare il documento con i caratteri ed i colori di suo gradimento. Uno stesso documento Gemtext può quindi essere visualizzato in maniera minimalista da un client testuale (caratteri standard del terminale, dimensione costante) oppure in maniera più ricca da un client evoluto. Quest'ultimo potrebbe ad esempio utilizzare caratteri diversi per le intestazioni e per gli elenchi, evidenziare a mo' di sommario il primo paragrafo di testo, evidenziare graficamente i link differenziati a seconda del protocollo a cui rimandano, offrire una anteprima grafica dei link che portano ad una immagine, e via di questo passo. Uno stesso documento può dunque essere visualizzato su hardware diversissimo per potenza di calcolo, caratteristiche video e dimensioni.

Non estensibile. L'abuso delle intestazioni in HTTP è alla base di tutta una serie di metodi di tracciamento dell'utente non previsti nell'idea originale ma resi possibili dall'estensibilità del protocollo (basti pensare alle intestazioni User-agent o Referer). Gemini nasce per essere difficilmente estensibile, utilizza una singola intestazione, e non prevede richieste di rete aggiuntive. Tutto l'armamentario che via via è stato aggiunto al web per forzarne l'uso commerciale (cookie, script, elementi inline, etc.) semplicemente non è implementabili.

TLS. Alle caratteristiche di privacy by design descritte sopra si aggiunge l'uso obbligatorio di TLS per cifrare le comunicazioni tra client e server. Si offre così un ulteriore livello di protezione delle informazioni non aggirabile che rende più difficile intercettare il contenuto di una comunicazione.

Tutto questo può interessarvi? Se la risposta è affermativa ecco alcuni link per approfondire:

Sì, c'è stato un lungo silenzio dallo scorso novembre. E potrebbe essere così anche nel prossimo futuro. Non sempre l'incombenza del quotidiano è così magnanima da lasciarci spazi sufficienti di libertà. E, ovviamente, un buon 2022 a voi.