Intro
La “Self-Sovereign Identity” (SSI), si basa come detto sull’utilizzo di un distributed ledger e sull’impiego di tecniche più tradizionali per l’implementazione di un sistema ove l’utente divenga completamente “padrone” dei propri dati e dove sia garantito il rispetto della privacy.
Come vedremo uno degli strumenti cardine del nuovo sistema di identità è il cd. wallet crittografico – inteso come programma software, piattaforma online o dispositivo hardware – ove conservare le chiavi necessarie per essere come vedremo identificabile.
I Decentralized Identifier (DID)
Tra gli standard necessari per il funzionamento del modello SSI il primo è rappresentato dai decentralized identifiers (DID), un nuovo tipo di “identificatore”. Un DID è un elemento costitutivo di un nuovo livello di identità decentralizzata che gode di 4 proprietà:
- Persistenza
- Risolvibilità
- Crittografia
- Decentralizzazione
In accordo con la definizione del W3C1, un DID è un nuovo tipo di identificatore: ovvero nient’altro che una stringa alfanumerica che identifica una risorsa.
Per risorsa intendiamo qualsiasi oggetto che può essere identificato, da una pagina Web a una persona, a un pianeta. Questa stringa assomiglia molto a qualsiasi altro indirizzo Web, che inizia però per “did:” e non per “https:” o “http:”.
Su un piano strettamente tecnico, un DID è una tipologia di URI2 (Uniform Resource Identifier), ovvero una stringa di caratteri che identifica una risorsa astratta o concreta in un formato specifico ed unico.
All’interno dell’insieme degli URI vi sono gli URL3 (Uniform Resource Locator) e gli URN4 (Uniform Resource Name).
Un URL è una sottoclasse di URI che viene utilizzato per individuare una risorsa tramite la sua locazione nel Web. Ogni pagina Web, file, immagine, video, ha un proprio URL. Gli indirizzi visualizzati nella barra degli indirizzi del browser sono generalmente URL. Il fattore importante è che questi identificatori possono cambiare.
La seconda sottoclasse di identificatori sono definiti come URN e vengono utilizzati per individuare una risorsa tramite il suo “nome”. Un esempio di URN è il codice ISBN: questo identifica univocamente un libro, ma non ci dà alcuna informazione sulla locazione dello stesso o dove esso sia collocato in rete. Il fattore importante è che tale identificatore non può cambiare nel tempo.
In buona sostanza un DID è un URN che può essere “cercato-risolto” per ottenere un insieme standardizzato e persistente di informazioni sulla risorsa che è identificata dal DID. Per risorsa, possiamo pensare ad una persona, ad una associazione/enti collettivi o ad un oggetto. Quindi le informazioni relative al DID sono informazioni relative a persone, associazioni/enti collettivi o oggetti.
Una ulteriore caratteristica dei DID è quella relativa alla crittografia. Un DID è associato ad una coppia di chiavi crittografiche (chiave pubblica e chiave privata) ed il possessore della chiave privata (conservata nel proprio wallet) può dimostrare di essere il controllore del DID.
Queste chiavi private e pubbliche utilizzano la blockchain come “fonte di verità condivisa” per dimostrare a terzi il proprio controllo sui dati, senza appoggiarsi in registri centralizzati.
Un DID non è nient’altro che un codice alfanumerico che rappresenta una risorsa generica. Io avrò un DID e tu avrai un DID diverso dal mio. Questo codice ha uno schema ben preciso ed è formato da 3 parti, quali “Method”, “DID Method” e “Method Specific-Identifier”.
- La prima parte si chiama Scheme-Method e non è nient’altro che il prefisso “did:”
- La seconda parte viene definito come DID Method ed è molto importante perché identifica il registro decentralizzato o la blockchain sulla quale tale DID è stato risolto. Per esempio, se viene risolto sulla blockchain di Bitcoin sarà così espresso “did:btcr”.
- La terza parte viene definita come Method Specific-Identifier ed è l’estensione (stringa) che caratterizza il DID per la specifica risorsa (il mio DID, il tuo DID). Per esempio, il mio specifico DID per bitcoin potrebbe essere il seguente did:btcr:13n29cn30cn3ncr84dc.
Un DID completamente generico viene riportato come: did:example:123456789abcdefghi
Ogni DID viene registrato in modo autonomo, direttamente dal proprietario all’interno di blockchain permissionless e/o permissioned. Non ci sono intermediari, ed è per questo che viene definita Self-Sovereign Identity. Ogni utente è completamente sovrano di se stesso e della propria identità.
La SSI si basa sull’idea che un individuo possa aprire diversi canali di comunicazioni privati con terze parti quali persone, enti collettivi ed oggetti. E’ opportuno specificare che esistono diverse tipologie di DID, proprio perché, come abbiamo visto in precedenza, quest’ultimo è un identificatore generico.
Per esempio, esiste un DID che viene definito come “DID Subject” e un DID che viene definito “DID Controller”. Un esempio che permette di spiegarne la differenza potrebbe essere il seguente: quando un genitore controlla un DID che identifica come proprio figlio. Il “DID Subject” è il figlio ma il “DID Controller” (almeno fino a quando il figlio ha raggiunto la maggiore età) è il genitore.
Tuttavia, quando il figlio diventa maggiorenne diventerà contemporaneamente “DID Subject” e “DID Controller”.
Inoltre, queste informazioni (ovvero chi controlla o chi è il soggetto) vengono inserite all’interno di un particolare documento che viene definito “DID Document”. Ogni DID ha un proprio “DID Document” dove all’interno vi è una struttura di dati standardizzata che fornisce le specifiche ed i metadati (quali informazioni necessarie affinchè il documento informatico possa essere correttamente formato, gestito e conservato nel tempo) associati al DID. I DID Document possiamo immaginarli come dei libretti di istruzioni che accompagnano i DID, all’interno dei quali vi sono come detto metadati che aiutano le controparti ad identificare la controparte durante una connessione.
Un ruolo fondamentale nel nuovo modello di identità qui in esame è svolto dalle Verifiable Credentials (VCs). Le VCs possono essere definite come delle dichiarazioni, effettuate da una terza parte certificatrice, su un’identità e caratterizzate da una prova crittografica. Una volta creato un DID ad esso possono essere collegate un numero potenzialmente infinito di credenziali.
Le Verifiable Credentials “certificano” alcuni attributi di un soggetto o altre tipologie di informazioni a lui relative (ad esempio il possesso della patente di guida, il possesso di un diploma scolastico, un brevetto da pilota, un certificato di nascita, etc.).
Le Verifiable Credentials
Le Verifiables Credentials sono un modo di rappresentare gli attributi che tutti noi associamo alla nostra identità. In generale, gli attributi possono essere di qualunque tipo: un certificato di salute, che ad esempio certifica il fatto che io abbia o meno una patologia, o anche semplicemente un certificato rilasciato da un qualsiasi ente.
Ecco, questi attributi, nell’ambito dell’identità vengono chiamati “Credenziali”. Nell’ambito invece della Self Sovereign Identity, le Credenziali sono denominate Verifiable Credentials.
Pensiamo alle credenziali “fisiche” che noi tutti possediamo ed utilizziamo oggi: la nostra carta d’identità, la patente, il nostro certificato di nascita, piuttosto che la nostra laurea appesa alla parete. Noi tutti siamo abituati a detenere tali credenziali in maniera fisica: all’interno del nostro portafoglio, piuttosto che in un cassetto. Quando ci vengono richieste (ad esempio il passaporto in aeroporto), possiamo presentarle a colui che secondo la legge è in grado di verificarne la veridicità (ad esempio verificando che il passaporto sia stato emesso da un’autorità competente).
Le Verifiables Credentials sono dunque un modo per rappresentare i certificati che siamo abituati a conoscere come “fisici” in una maniera totalmente digitale. Le Verifiables Credentials sono per la loro natura una radicale innovazione: un cittadino è in grado di detenere qualunque attributo che lo riguardi all’interno del suo smartphone, in maniera totalmente digitale. È pur vero che i certificati digitali esistono da ormai diversi anni: le Verifiables Credentials sono strutturate in maniera diversa, grazie a delle caratteristiche che le rendono sicure, non modificabili, e sono verificabili in maniera indipendente.
Le Verifiables Credentials possono essere pensate alla stregua di “oggetti” che un utente riceve da un emettitore, che le firma in maniera digitale. Proprio come nel caso di un certificato fisico, una volta che un utente ha ricevuto una Verifiable Credential, è in grado in maniera totalmente indipendente di gestirla e mostrarla quando meglio crede (proprio come una tessera all’interno dei nostri portafogli, firmata dall’emettitore e successivamente in nostro unico possesso).
Le Verifiables Credentials possono essere detenute direttamente all’interno ad esempio degli smartphone, e possono essere mostrate per la verifica delle stesse, ricreando il modello “fisico” all’interno del mondo digitale.
In questo modo, tramite le Verifiables Credentials i cittadini e gli utenti sono in grado di interagire con il mondo digitale: è possibile, inoltre, creare un sistema di trust decentralizzato all’interno di un mondo dove fino ad oggi i dati digitali non sono mai riusciti veramente a tornare in totale possesso degli utenti.
Lo schema seguito per l’emissione e la gestione delle Verifiable Credentials permette agli utenti di essere completamente indipendenti nella gestione delle stesse: questo abilita la self-sovereignity dei dati che sono detenuti dai cittadini.
Esistono principalmente tre ruoli nell’emissione, gestione e scambio di Verifiables Credentials:
- Un emettitore (Issuer) di credenziali: un emettitore può essere qualunque entità, da un ministero ad esempio, fino ad un familiare. Le credenziali che possono venire emesse sono di qualunque tipo, e offrono diversi livelli di sicurezza a seconda di chi è l’emettitore di tale credenziale. L’emettitore invia direttamente le credenziali all’utente, anche chiamato Holder.
- Un utente (Holder) riceve credenziali firmate digitalmente da uno o più Issuer. Una volta che la credenziale viene inviata all’Holder, quest’ultimo è in grado di gestire tale credenziale in maniera del tutto autonoma: può difatti presentarla a coloro che glielo richiedono, senza che l’ente che ha emesso la credenziale sia mai coinvolto. Ed è per questo motivo che le Verifiable Credentials ricalcano il mondo delle credenziali fisiche, in un ambito digitale!
- Un verificatore (Verifier) può essere qualunque entità che si occupi di “verificare” delle Credentials che gli sono mostrate da parte di un utente. La Credential contiene tutti i dati necessari alla verifica della stessa, come ad esempio chi è l’Issuer, a chi è intestata la Credenziale, ed il fatto che essa sia o meno stata modificata nel tempo. La tecnologia Blockchain (o il Verifiable Data Registry) viene utilizzata per controllare la validità della credenziale in possesso all’Holder.
Una credenziale che la maggior parte di noi si trova giornalmente ad utilizzare (detenendola e mostrandola) è la patente.
Il funzionamento del sistema relativo al concetto di patente potrebbe essere il seguente:
- Un cittadino sostiene l’esame di guida, ed è in possesso di un portafoglio digitale (i.e. crypto wallet) che si basa sugli standard di Self Sovereign Identity.
- Una volta superato l’esame di guida, la Motorizzazione rilascerà, tramite il proprio sistema, una Verifiable Credential che rappresenta la patente. All’interno della Verifiable Credential sarà definito il nome del possessore, la validità della patente, ed altre informazioni utili.
- Il cittadino a questo punto riceve la patente e la detiene sotto forma di Verifiable Credential all’interno del proprio portafoglio digitale.
- Un poliziotto ferma il cittadino per un controllo: il cittadino può mostrare la sua patente sotto forma di Verifiable Credential. Il poliziotto, tramite le proprietà crittografiche della Credential, può verificarne il possessore, e facendo un controllo sulla Blockchain può controllare che quest’ultima sia ancora valida.
Nell’esempio sopra esposto della patente, il cittadino è stato in grado di mostrare un proprio attributo ad un Verificatore, in maniera totalmente privacy preserving.
Le Verifiables Credentials sono difatti in grado di abilitare quella che viene definita come selective disclosure: è possibile per un Holder mostrare solamente i dati necessari al Verificatore, senza dovere mostrare tutti i dati contenuti nella Verifiable Credential.
Un esempio? Il cittadino che viene fermato dal poliziotto è potenzialmente in grado di dimostrare al Verificatore di essere in possesso di una licenza di guida senza nemmeno mostrargli il proprio nome. Tutto ciò grazie alle proprietà crittografiche delle Verifiables Credential.
Tra i meccanismi che contribuiscono a ridurre l’esposizione delle informazioni personali degli individui vi sono dunque i concetti cd Zero-Knowledge Proof e Selective Disclosure, entrambi incentrati sul principio di minimizzazione dei dati.
Secondo il primo, grazie ad un avanzato sistema di crittografia privacy-oriented, è possibile attestare l’esistenza di determinati attributi riguardo un’entità (persona, organizzazione oppure oggetto) senza il bisogno di esporre identificatori correlabili riguardo la sua identità. In altre parole, il meccanismo Zero-Knowledge Proof permette di dimostrare un’affermazione senza il bisogno di divulgarla.
Similmente, attraverso il concetto di Selective Disclosure, l’utente, nel momento in cui desidera presentare un’informazione (claim) che è parte di una Verifiable Credential, può divulgare solo alcune informazioni anziché esporre l’intero documento.
La possibilità di non rivelare identificatori correlabili, sommata ai concetti di Zero-Knowledge Proof e Selective Disclosure, rappresenta indubbiamente un progresso rilevante nel garantire il diritto degli utenti alla tutela dei propri dati personali.
1 W3C – Organizzazione non governativa che ha quale principale attività lo stabilire standard tecnici per il World Wide Web inerenti sia i linguaggi di markup che i protocolli di comunicazione
2 URI – sequenza di caratteristiche che identifica universalmente ed univocamente una risorsa. Sono esempi di URI: un indirizzo web (URL), un documento, un’immagine, un file, un servizio, un indirizzo di posta elettronica, il codice ISBN di un libro, un numero di telefono.
3 URL – una sequenza di caratteri che identifica univocamente l’indirizzodi una risorsasu una rete di computer, come ad esempio un documento, un’immagine, un video, tipicamente presente su un hostserver e resa accessibile a un client.
4 URN – una sequenza di caratteri che identifica una risorsa mediante un “name” (nome) in un particolare dominio di nomi che viene detto “namespace”. Un URN può essere utilizzato per descrivere una risorsa senza lasciare intendere la sua ubicazione o su come ottenerne una rappresentazione










