• Cosa sono i Decentralized Identifier (DID)
  • Le particolaritĂ  dei Decentralized Identifier (DID)
  • Com’è formato un Decentralized Identifier (DID)
  • Introduzione all’architettura dei Decentralized Identifier (DID)

In questa terza guida, verrà spiegato il funzionamento di uno dei pilastri della Self-Sovereign Identity, ovvero i Decentralized Identifiers (i.e. DID). Facciamo giusto un recap di quello che abbiamo introdotto nelle scorse guide. 

Abbiamo visto che i modelli di Identity Management ad oggi esistenti sono tre. 

Il primo viene definito “Modello Silos”, il quale è completamente centralizzato e frammenta la nostra identità digitale tra le diverse organizzazioni con le quali interagiamo. Questo modello utilizza degli standard di sicurezza come ad esempio https, SSL e TSL. Il secondo modello viene definito “Federato o Third Party IDP”, il quale si basa appunto sugli Identity Providers, come Facebook o Twitter, i quali appunto garantiscono per l’identità per l’utente. Questo modello utilizza a sua volta degli standard di sicurezza quali SAML, OAuth e OpenID Connect.

Entrambi i modelli elencati abbiamo visto come portino a dei potenziali rischi e debolezze in termini di sicurezza, privacy e controllo.

Il terzo modello viene invece definito “Self-Sovereign Identity” (SSI), il quale si basa su distributed ledger (quindi la blockchain) ed altre tecniche più tradizionali per implementare un sistema nel quale un utente è completamente “padrone” dei propri dati. Rispetto ai due approcci sopra elencati, la SSI si basa sull’idea di connessione peer to peer e non account-based. Lo strumento che permette tali connessioni è il wallet crittografico. Anche questo modello ha degli standard per poter funzionare ed essere sicuro: il primo tra questi è appunto i decentralized identifiers (DID), un nuovo tipo di “identificatore”. 

Giusto per avere bene chiaro il quadro generale, gli altri standard utilizzati sono le Verifiable Credentials, i DKMS e DID Auth. Gli altri tre standard verranno affrontati nelle prossime guide. 

Che cosa sono i Decentralized Identifier?

Un DID è un elemento costitutivo di un nuovo livello di identità decentralizzata che gode di 4 proprietà: 

  • Persistenza
  • RisolvibilitĂ 
  • Crittografia
  • Decentralizzazione

Ma andiamo per ordine.

In accordo con la definizione del W3C, 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, solamente che inizia per “did:” e non per “https:” o “http.”

Se vogliamo essere più tecnici, un DID è una tipologia di URI (Uniform Resource Identifier) . 

Un URI è una stringa di caratteri che identifica una risorsa astratta o concreta in un formato specifico ed unico. Ogni risorsa ha uno e un solo URI, ogni URI ha una e una sola risorsa. Dentro l’insieme degli URI ci sono gli URL (Uniform Resource Locator) e gli URN (Uniform Resource Name). 

Un URL è una sottoclasse di URI che viene utilizzato per individuare una risorsa tramite la sua locazione nel Web. Per esempio, la pagina che stai leggendo in questo momento è una risorsa che è una specifica pagina del sito selfsovereignidentity.it. Ogni pagina Web, file, immagine, video, ha un proprio URL. Non è “sul Web”, se non ha un URL ed essa viene spesso definita come “rappresentazione”. Gli indirizzi visualizzati nella barra degli indirizzi del browser sono generalmente URL. Il fattore importante è che questi identificatori possono cambiare.

Mentre 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.

Dopo aver descritto URI, URL e URN, possiamo essere più precisi sulla definizione di DID. 

Un DID è un URN che può essere “cercato” (tecnicamente si definisce come risolto) per ottenere un insieme standardizzato 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. Chiaro, no?

La particolaritĂ  dei Decentralized Identifier

Tuttavia, questa definizione cattura solo due delle quattro proprietĂ  di un DID, ovvero quella persistenza e risolvibilitĂ . Per la terza proprietĂ  – crittografia -, un DID è associato ad una coppia di chiavi crittografiche (chiave pubblica e chiave privata) ed il possessore della chiave privata può dimostrare di essere il controllore del DID. Se hai giĂ  avuto qualche esperienza con i bitcoin o con i wallet di criptovalute, saprai bene che la chiave privata è il segreto che ti permette di spendere i tuoi bitcoins, mentre la chiave pubblica è quel codice alfanumerico che mostri a terzi per poter ricevere nuovi bitcoins.

Infine, queste chiavi private e pubbliche utilizzano la blockchain come libro mastro o fonte di verità condivisa per dimostrare a terzi del proprio controllo, senza appoggiarsi in registri centralizzati. Questo è lo stesso processo con cui vengono creati i borsellini per Bitcoin o altre criptovalute ed è cosi che rende il tutto funzionante senza una controparte centralizzata.

Come è formato un Decentralized Identifier?

A questo punto, abbiamo compreso che 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”.

  1. La prima parte si chiama Scheme ed non è nient’altro che il prefisso “did:”
  2. La seconda parte viene definito come DID Method. Questo seconda parte è molto importante perché identifica su quale registro decentralizzato o blockchain tale DID è stato risolto. Per esempio, se viene risolto sulla blockchain di Bitcoin sarà così espresso “did:btcr”.
  3. La terza parte viene definita come Method Specific-Identifier ed è l’estensione 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à.

L’architettura Decentralized Identifier

Abbiamo capito quindi che un DID ha una forma ben specifica e che il processo di creazione è completamente autonomo e non necessita di una controparte centralizzata. Ma realmente, come permette di abilitare il concetto di Self-Sovereign Identity?

Immaginiamo il DID come il codice identificativo della nostra patente. La grande differenza è che tale codice non lo fornisce la motorizzazione, ma saremo noi che diremo alla motorizzazione che il DID “esempio” apparterrà ad un determinato soggetto (me stesso). Questo ha proprio a che fare con il concetto di connessione e del poter decidere come connettersi. La SSI si basa sull’idea che un individuo può aprire diversi canali di comunicazioni privati con terze parti quali persone, enti collettivi ed oggetti. Questo è il meccanismo fondamentale da comprendere e portarci a casa. 

Infine, dobbiamo 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 proprio figli,: 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 specifiche e i metadati associati al DID.  Esiste anche il “DID Resolver” che è un componente software e / o hardware che prende un DID (e opzioni associate) come input e produce un “DID Document” conforme (e metadati associati) come output. Questo processo si chiama “DID Resolution”. Infine, esistono anche i “DID URL” i quali prendono la sintassi dei DID ed associano un URL nel “Method Specific Identifier”  dal quale si possono essere estrapolare informazioni dal Web relative al DID medesimo. 

Ricordiamo, inoltre, che potenzialmente un utente generico può possedere diversi DID in funzione dei numero e della riservatezza di collegamenti che vuole fare.

Concludiamo questa guida ricordando al lettore che quando si parla di DID si intende un identificatore univoco e persistente, il quale differentemente da un URI utilizza la crittografia e la decentralizzazione (tramite blockchain) per generarsi e per rendere il processo completamente autonomo e “sovrano”. Infine, ricordiamo che un DID può essere identificare anche oggetti, società o enti collettivi. Nella prossima guida, spiegheremo il secondo pilastro fondamentale della Self-Sovereign Identity, ovvero le Verifiable Credentials.