UUID バージョン 1 ジェネレーター (タイムスタンプ)

MAC アドレスを使用して一意の時間順識別子を生成するタイムスタンプベースの UUID を生成します

これらの例を試してください:

UUID v1とは?

UUIDバージョン1 はRFC 4122に基づく時間ベースの128ビット識別子(36文字の文字列)です。以下を組み合わせています:

  • Timestamp: 60ビット値(1582-10-15以降の100ナノ秒単位の精度)
  • クロックシーケンス: クロック調整用の14ビットカウンター
  • ノードID: 48ビット値(通常はMACアドレス)

フォーマット例: 2ed6657d-e927-11eb-9a03-0242ac130003

UUID v1の動作方法

  1. 現在のタイムスタンプを計算(1582-10-15以降の100ナノ秒間隔)
  2. 14ビットのクロックシーケンスを取得/インクリメント(クロックが戻った場合の一意性のため)
  3. 48ビットのノードIDを取得(通常はMACアドレスから)
  4. バージョンビット(0001)とバリアントビット(10)を設定
  5. 8-4-4-4-12形式のハイフン付き32桁の16進数として組み立てる

利点と考慮点

AdvantagesConsiderations
  • 時系列順(ソート可能)
  • 高性能生成
  • 分散生成
  • 埋め込み作成時間
  • MACアドレスのプライバシー懸念
  • クロック同期の問題
  • ランダムUUIDより予測可能性が高い
  • 暗号的に安全ではない

UUID v1の構造

BitsContent
0-31タイムスタンプの下位32ビット
32-47タイムスタンプの中間16ビット
48-59タイムスタンプの上位12ビット
60-63バージョン(v1の場合は0001)
64-65バリアント(RFC4122の場合は10)
66-79クロックシーケンス(14ビット)
80-127ノードID(48ビット)

UUID v1と他のバージョンの比較

Versionに基づくユースケースPrivacy
UUID v1時間 + MAC時系列順ID⚠️ MACを公開する
UUID v3名前空間 + MD5決定的ID✅ プライベート
UUID v4Random安全なランダムID✅ プライベート
UUID v5名前空間 + SHA-1決定的ID✅ プライベート
UUID v6時間(再配置)ソート可能ID⚠️ MACを公開する
UUID v7時間 + ランダムソート可能ID✅ プライベート

一般的な使用例

  • データベースキー: 分散データベース
  • 監査ログ: 時系列追跡
  • トランザクションID: ビジネスプロセス
  • セッショントラッキング: Webアプリケーション
  • コンテンツアドレッシング: CMSシステム
  • IoTメッセージ: デバイス通信

よくある質問

UUID v1は暗号的に安全ですか?

いいえ。UUID v1はタイムスタンプとMACアドレスが知られている場合、予測可能です。セキュリティのためにはランダムなUUID v4を使用してください。

UUID v1の値が衝突することはありますか?

タイムスタンプの精度、クロックシーケンスカウンター、ノード識別子により、実際には衝突は非常に起こりにくいです。

UUID v1から作成時間を抽出できますか?

はい。タイムスタンプの部分は、ほとんどのUUIDライブラリで利用可能な適切なアルゴリズムで抽出できます。

UUID v1は作成時間でソート可能ですか?

はい、ただし特別なソート関数が必要です。時間ビットが連続していないため、直接の文字列比較は機能しません。

UUID v1は私のMACアドレスを公開しますか?

デフォルトでは公開します。ほとんどの実装はノードIDにMACアドレスを使用します。プライバシー重視の実装ではランダムなノードIDを使用する場合があります。

Resources