UUID v5とは?
UUIDバージョン5 はRFC 4122で定義された名前空間ベースの128ビット識別子(36文字の文字列)です。以下を組み合わせています:
- 名前空間UUID: 生成のスコープを定義する事前定義またはカスタムUUID
- Name: 名前空間内のユーザー定義文字列値
- SHA-1ハッシュ: 結果を生成するために使用される暗号アルゴリズム
フォーマット例: 2ed6657d-e927-5eb1-9a03-0242ac130003
UUID v5の動作方法
- 名前空間UUIDを選択する(事前定義またはカスタム)
- 名前空間UUIDと名前文字列を連結する
- 連結された値のSHA-1ハッシュを計算する
- バージョンビット(0101)とバリアントビット(10)を設定する
- 32桁の16進数をハイフンで区切って組み立てる:8-4-4-4-12形式
利点と考慮事項
Advantages | Considerations |
---|---|
|
|
UUID v5の構造
Bits | Content |
---|---|
0-47 | SHA-1ハッシュの最初の48ビット |
48-51 | バージョン(v5の場合は0101) |
52-63 | SHA-1ハッシュの次の12ビット |
64-65 | バリアント(RFC4122の場合は10) |
66-127 | SHA-1ハッシュの残りの62ビット |
UUID v5と他のバージョンの比較
Version | ベースとなるもの | 使用例 | Privacy |
---|---|---|---|
UUID v1 | 時間 + MAC | 時間順ID | ⚠️ MACを公開 |
UUID v3 | 名前空間 + MD5 | 決定論的ID | ✅ プライベート |
UUID v4 | Random | 安全なランダムID | ✅ プライベート |
UUID v5 | 名前空間 + SHA-1 | 決定論的ID | ✅ プライベート |
UUID v6 | 時間(再配置) | ソート可能なID | ⚠️ MACを公開 |
UUID v7 | 時間 + ランダム | ソート可能なID | ✅ プライベート |
事前定義された名前空間
Namespace | UUID | Purpose |
---|---|---|
DNS | 6ba7b810-9dad-11d1-80b4-00c04fd430c8 | ドメイン名用 |
URL | 6ba7b811-9dad-11d1-80b4-00c04fd430c8 | URL用 |
OID | 6ba7b812-9dad-11d1-80b4-00c04fd430c8 | ISO OID用 |
X.500 DN | 6ba7b814-9dad-11d1-80b4-00c04fd430c8 | X.500識別名用 |
一般的な使用例
- コンテンツアドレッシング: 同一コンテンツに対して一貫したID
- 分散システム: システム間の名前付きリソース
- URLマッピング: URLを安定した識別子に変換
- 構成管理: 名前付き構成アイテムの追跡
- データ重複排除: 同一レコードの識別
- Federation: システム間で一貫した識別子
よくある質問
UUID v5はUUID v3より優れているか?
はい、ほとんどの使用例でそうです。UUID v5はSHA-1を使用しており、UUID v3で使用されるMD5アルゴリズムより暗号的に強力です。ただし、両者とも決定論的生成を提供します。
UUID v5の値が衝突することはありますか?
理論的には衝突の可能性はありますが、SHA-1の特性により実際には極めて稀です。異なる名前空間や名前文字列を使用することで、衝突リスクはほぼ排除されます。
UUID v5に対してSHA-1は十分に安全ですか?
UUIDの目的では、SHA-1は暗号的弱点があっても適切です。UUID v5はセキュリティ目的ではなく、一貫した識別子を生成するためのものです。
UUID v5用に独自の名前空間を作成できますか?
はい。RFC 4122は標準名前空間(DNS、URL、OID、X.500)を定義していますが、有効なUUID(通常はv4のランダムUUID)を使用してカスタム名前空間を作成できます。
同じ名前は常に同じUUID v5を生成しますか?
はい、ただし同じ名前空間内でのみです。異なる名前空間では同じ名前でも異なるUUIDが生成され、識別子の整理に重要な特徴です。