UUID
Genera identificatori casuali della versione 4 nella scrittura che ti serve.
Identificatori
Il caso viene dalla sorgente crittografica del browser, e niente viene spedito altrove.
Come funziona
Un UUID è un identificatore da 128 bit, scritto come 32 caratteri esadecimali in cinque gruppi separati da trattini.
La versione 4 è fatta di bit casuali, tranne sei bit che indicano versione e variante. Fa 122 bit di caso, cioè poco più di cinque sestilioni di valori possibili, cioè 5,3 × 10³⁶.
Con tante possibilità non serve un ente centrale che distribuisca gli identificatori. Due sistemi possono generarne uno ciascuno senza accordarsi, e il rischio di collisione è trascurabile.
Il caso viene dalla sorgente crittografica del browser, che esiste proprio per i valori che non devono essere indovinabili.
La scrittura con le maiuscole o con le parentesi graffe viene dal mondo Windows. È lo stesso identificatore, scritto in un altro modo.
Come vengono creati gli identificatori
Lo strumento chiama crypto.randomUUID del browser, che secondo la Web Cryptography API del W3C crea un UUID di versione 4 da byte casuali crittograficamente sicuri. Nei browser più vecchi che non hanno quella funzione, lo strumento riempie da sé 16 byte con crypto.getRandomValues e poi sovrascrive sei bit: la metà alta del settimo byte diventa 0100, cioè versione 4, e i due bit più alti del nono byte diventano 10, che indicano la variante. Si creano fino a 100 identificatori per volta. Le opzioni per maiuscole, parentesi graffe e trattini cambiano solo il modo in cui i valori sono scritti, non i valori.
Come riconoscere la versione 4
I bit fissi si vedono nel testo. Il primo carattere del terzo gruppo è sempre 4. Il primo carattere del quarto gruppo è 8, 9, a oppure b, perché dei suoi quattro bit solo due sono fissi. In 81a2ce1c-c11f-4289-b285-6c2894ab9c5e, creato con il codice dello strumento, quei caratteri sono 4 e b. Se in quei punti c’è altro, l’identificatore non è di versione 4. La RFC 9562 ammette lettere maiuscole, minuscole o miste.
Casi limite
Un UUID è un identificatore, non un segreto. La RFC 9562 dice che le implementazioni non dovrebbero dare per scontato che gli UUID siano difficili da indovinare, e che non devono usarli come capacità di sicurezza, cioè identificatori il cui solo possesso dà accesso. Un link per reimpostare la password ha bisogno di un token fatto apposta.
Come chiave di un database la versione 4 ha uno svantaggio che lo standard stesso segnala: valori creati uno dopo l’altro finiscono lontani nell’indice, quindi ogni nuova riga viene inserita in una posizione casuale. La versione 7 comincia con un’indicazione temporale e si ordina quindi nell’ordine di creazione. Lo strumento crea solo la versione 4.
Due valori hanno un nome proprio nello standard: l’UUID nil, tutto zeri, e l’UUID max, tutto f. Nessuno dei due può uscire dallo strumento, perché i bit di versione e di variante sono sempre impostati.