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
- Oblicz bieżący znacznik czasu (interwały 100ns od 1582-10-15)
- Pobierz/zwiększ 14-bitową sekwencję zegara (dla unikalności, jeśli zegar cofa się)
- Uzyskaj 48-bitowy identyfikator węzła (zwykle z adresu MAC)
- Ustaw bity wersji (0001) i wariantu (10)
- Złóż jako 32 cyfry szesnastkowe z myślnikami: format 8-4-4-4-12
Zalety i uwagi
Advantages | Considerations |
---|---|
|
|
Struktura UUID v1
Bits | Content |
---|---|
0-31 | Niskie 32 bity znacznika czasu |
32-47 | Środkowe 16 bitów znacznika czasu |
48-59 | Wysokie 12 bitów znacznika czasu |
60-63 | Wersja (0001 dla v1) |
64-65 | Wariant (10 dla RFC4122) |
66-79 | Sekwencja zegara (14 bitów) |
80-127 | Identyfikator węzła (48 bitów) |
UUID v1 a inne wersje
Version | Na podstawie | Przypadek użycia | Privacy |
---|---|---|---|
UUID v1 | Czas + MAC | Identyfikatory uporządkowane czasowo | ⚠️ Ujawnia MAC |
UUID v3 | Namespace + MD5 | Deterministyczne identyfikatory | ✅ Prywatne |
UUID v4 | Random | Bezpieczne losowe identyfikatory | ✅ Prywatne |
UUID v5 | Namespace + SHA-1 | Deterministyczne identyfikatory | ✅ Prywatne |
UUID v6 | Czas (przearanżowany) | Identyfikatory możliwe do sortowania | ⚠️ Ujawnia MAC |
UUID v7 | Czas + losowe | Identyfikatory 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.