UUID
GUID (Global Unique IDentifier) とも呼ばれる。(Windows ではこちらの方がなじみ) 生成する度に完全にユニークになるように作られた128ビットの識別子
しかし、作り方によっては衝突する可能性は否定できない。
バージョン1 は時刻(+シリアル)とユニークなノードID(通常はネットワークカードのMACアドレス)で生成するので、基本的に衝突しない。
このため、バージョン1を使う方が妥当だが、MACアドレスが分かってしまうため、意図しないトラッキング(個人の特定)が発生する可能性がある。
仮想環境では、MACアドレスが乱数で発行されている。このため、24bit程度の分離度しかない。仮想環境が単純コピーされて利用されている場合はそのまま衝突する。
バージョン3/5はハッシュ(バージョン3はMD5、バージョン5はSHA-1)なので衝突する可能性がある。
MD5, SHA-1 自体は128bit以上だが、UUIDには設定できるビットが122bitしかないため、本質的にそれを越えることができない。
このため、積極的にバージョン5の方を使う理由はない。
バージョン4 は乱数(乱数部122bit)なので一定の確率で衝突する可能性がある。
疑似乱数を使うと122bitまでの分離ができていない可能性がある。
暗号用の乱数を使う必要がある。