# Universally unique identifier

Un identificativo univoco universale, meglio noto come universally unique identifier o con l'acronimo UUID, è un identificativo usato nelle infrastrutture software, standardizzato dalla Open Software Foundation (OSF) come parte di un ambiente distribuito di elaborazione.
Lo scopo dell'UUID è di abilitare un sistema distribuito all'identificazione di informazioni in assenza di un sistema centralizzato di coordinamento. In questo contesto la chiave univoca dovrebbe implicare “l'univocità” pratica senza “garantirla”. Il fatto che le chiavi siano in numero finito implica che due entità potrebbero avere la stessa chiave identificativa. In pratica, l'ampiezza dello spazio delle chiavi e il loro processo di generazione offrono sufficienti garanzie che la stessa chiave non venga assegnata a due entità differenti. Chiunque può creare un UUID e usarlo con ragionevole probabilità che non venga usato da nessun altro. Le informazioni associate all'uuid possono essere in seguito combinate in un singolo database senza necessità di dover risolvere eventuali conflitti.
Uno dei più diffusi usi di questo standard è nei GUID (globally unique identifiers) di Microsoft. Altri usi significativi includono i file system Linux ext2/ext3, LUKS (un sistema di crittografia delle partizioni), GNOME, KDE e macOS. Tutti questi sistemi implementano derivazioni della libreria uuid, disponibile nel pacchetto e2fsprogs (Ext2 Filesystems Utilities).
UUID è documentato come parte dell'ISO/IEC 11578:1996 "Information technology – Open Systems Interconnection – Remote Procedure Call (RPC)" e più recentemente in ITU-T Rec. X.667 | ISO/IEC 9834-8:2005. L'IETF ha pubblicato Standards Track RFC 4122 che è tecnicamente identico all'ITU-T Rec. X.667 | ISO/IEC 9834-8.

## Definizione

L'UUID è composto da 16 byte (128 bit). Nella sua forma canonica, l'UUID è rappresentato da 32 caratteri esadecimali, visualizzati in cinque gruppi separati da trattini, nella forma 8-4-4-4-12 per un totale di 36 caratteri (32 esadecimali e quattro trattini). Ad esempio: 550e8400-e29b-41d4-a716-446655440000
Ci sono 340 282 366 920 938 500 000 000 000 000 000 000 000 possibili UUID (16$^{32}$), o circa 3 × 10$^{38}$.

## Varianti e versioni

Le varianti indicano l'impostazione dell'UUID. Le specifiche dell'UUID coprono in particolare una variante. Le altre varianti sono riservate o esistono per ragioni di retrocompatibilità (es. per valori antecedenti alle specifiche).
Nella rappresentazione classica dell'UUID, xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx, i bit più significativi di N indicano la variante (dipende dalla variante, vengono utilizzati uno, due o tre bit). La variante coperta dalle specifiche UUID è indicata dai due bit più significativi di N che iniziano con 1 0 (ovvero, in esadecimale N sarà sempre uno dei seguenti valori: 8, 9, A o B).
Nella variante coperta dalle specifiche UUID, ci sono cinque versioni. Per queste varianti, i 4 bit di M indicano la versione UUID (e.s. in esadecimale M sarà uno di questi valori 1, 2, 3, 4, o 5).
Siccome l'UUID v1 è generato in base all'indirizzo MAC della macchina, l'uso di quella versione è considerato poco sicuro dal punto di vista della privacy.