Generator UUID Wersji 1 (Znacznik czasu)

Generuj UUID oparte na znaczniku czasu z adresem MAC dla unikalnej, uporządkowanej czasowo identyfikacji

Wypróbuj te przykłady:

Co to jest UUID v1?

Wersja UUID 1 jest 128-bitowym identyfikatorem opartym na czasie (ciąg 36 znaków) z RFC 4122. Łączy:

  • Timestamp: 60-bitowa wartość (precyzja 100 nanosekund od 1582-10-15)
  • Sekwencja zegara: 14-bitowy licznik do korekty zegara
  • Identyfikator węzła: 48-bitowa wartość (zwykle adres MAC)

Przykład formatu: 2ed6657d-e927-11eb-9a03-0242ac130003

Jak działa UUID v1

  1. Oblicz bieżący znacznik czasu (interwały 100ns od 1582-10-15)
  2. Pobierz/zwiększ 14-bitową sekwencję zegara (dla unikalności, jeśli zegar cofa się)
  3. Uzyskaj 48-bitowy identyfikator węzła (zwykle z adresu MAC)
  4. Ustaw bity wersji (0001) i wariantu (10)
  5. Złóż jako 32 cyfry szesnastkowe z myślnikami: format 8-4-4-4-12

Zalety i uwagi

AdvantagesConsiderations
  • Uporządkowane czasowo (możliwe do sortowania)
  • Wysoka wydajność generowania
  • Generowanie rozproszone
  • Osadzony czas utworzenia
  • Obawy dotyczące prywatności adresu MAC
  • Problemy z synchronizacją zegara
  • Bardziej przewidywalne niż losowe UUID
  • Nie jest kryptograficznie bezpieczne

Struktura UUID v1

BitsContent
0-31Niskie 32 bity znacznika czasu
32-47Środkowe 16 bitów znacznika czasu
48-59Wysokie 12 bitów znacznika czasu
60-63Wersja (0001 dla v1)
64-65Wariant (10 dla RFC4122)
66-79Sekwencja zegara (14 bitów)
80-127Identyfikator węzła (48 bitów)

UUID v1 a inne wersje

VersionNa podstawiePrzypadek użyciaPrivacy
UUID v1Czas + MACIdentyfikatory uporządkowane czasowo⚠️ Ujawnia MAC
UUID v3Namespace + MD5Deterministyczne identyfikatory✅ Prywatne
UUID v4RandomBezpieczne losowe identyfikatory✅ Prywatne
UUID v5Namespace + SHA-1Deterministyczne identyfikatory✅ Prywatne
UUID v6Czas (przearanżowany)Identyfikatory możliwe do sortowania⚠️ Ujawnia MAC
UUID v7Czas + losoweIdentyfikatory możliwe do sortowania✅ Prywatne

Typowe przypadki użycia

  • Klucze baz danych: bazy danych rozproszone
  • Dzienniki audytu: śledzenie uporządkowane czasowo
  • Identyfikatory transakcji: procesy biznesowe
  • Śledzenie sesji: aplikacje internetowe
  • Adresowanie treści: systemy CMS
  • Wiadomości IoT: komunikacja urządzeń

Najczęściej zadawane pytania

Czy UUID v1 jest kryptograficznie bezpieczny?

Nie. UUID v1 jest przewidywalny, jeśli znany jest znacznik czasu i adres MAC. Dla bezpieczeństwa używaj losowego UUID v4.

Czy wartości UUID v1 mogą się zderzyć?

Kolizje są w praktyce bardzo mało prawdopodobne ze względu na precyzję znacznika czasu, liczniki sekwencji zegara i identyfikatory węzłów.

Czy mogę wyodrębnić czas utworzenia z UUID v1?

Tak. Składnik znacznika czasu można wyodrębnić za pomocą odpowiednich algorytmów dostępnych w większości bibliotek UUID.

Czy UUID v1 można sortować według czasu utworzenia?

Tak, ale potrzebne są specjalne funkcje sortujące. Bezpośrednie porównanie ciągów nie zadziała, ponieważ bity czasu nie są sekwencyjne.

Czy UUID v1 ujawnia mój adres MAC?

Domyślnie tak. Większość implementacji używa adresu MAC jako identyfikatora węzła. Implementacje skoncentrowane na prywatności mogą używać losowych identyfikatorów węzłów.

Resources