O que é UUID v1?
Versão 1 do UUID é um identificador de 128 bits baseado no tempo (string de 36 caracteres) da RFC 4122. Combina:
- Timestamp: valor de 60 bits (precisão de 100 nanossegundos desde 15-10-1582)
- Sequência do relógio: contador de 14 bits para ajustes do relógio
- ID do nó: valor de 48 bits (tipicamente endereço MAC)
Exemplo de formato: 2ed6657d-e927-11eb-9a03-0242ac130003
Como o UUID v1 funciona
- Calcular timestamp atual (intervalos de 100ns desde 15-10-1582)
- Obter/incrementar sequência do relógio de 14 bits (para unicidade se o relógio retroceder)
- Obter ID do nó de 48 bits (geralmente do endereço MAC)
- Definir bits de versão (0001) e bits de variante (10)
- Montar como 32 dígitos hexadecimais com hífens: formato 8-4-4-4-12
Vantagens e Considerações
Advantages | Considerations |
---|---|
|
|
Estrutura do UUID v1
Bits | Content |
---|---|
0-31 | 32 bits baixos do timestamp |
32-47 | 16 bits médios do timestamp |
48-59 | 12 bits altos do timestamp |
60-63 | Versão (0001 para v1) |
64-65 | Variante (10 para RFC4122) |
66-79 | Sequência do relógio (14 bits) |
80-127 | ID do nó (48 bits) |
UUID v1 vs. outras versões
Version | Baseado em | Caso de uso | Privacy |
---|---|---|---|
UUID v1 | Tempo + MAC | IDs ordenados por tempo | ⚠️ Revela MAC |
UUID v3 | Namespace + MD5 | IDs determinísticos | ✅ Privado |
UUID v4 | Random | IDs aleatórios seguros | ✅ Privado |
UUID v5 | Namespace + SHA-1 | IDs determinísticos | ✅ Privado |
UUID v6 | Tempo (reordenado) | IDs ordenáveis | ⚠️ Revela MAC |
UUID v7 | Tempo + aleatório | IDs ordenáveis | ✅ Privado |
Casos de uso comuns
- Chaves de banco de dados: bancos de dados distribuídos
- Registros de auditoria: rastreamento ordenado por tempo
- IDs de Transação: processos de negócios
- Rastreamento de sessão: aplicações web
- Endereçamento de conteúdo: sistemas CMS
- Mensagens IoT: comunicação de dispositivos
Perguntas Frequentes
UUID v1 é seguro criptograficamente?
Não. UUID v1 é previsível se o timestamp e o endereço MAC forem conhecidos. Para segurança, use UUID v4 aleatório.
Valores UUID v1 podem colidir?
Colisões são extremamente improváveis na prática devido à precisão do timestamp, contadores de sequência do relógio e identificadores de nó.
Posso extrair o tempo de criação de um UUID v1?
Sim. O componente timestamp pode ser extraído com algoritmos apropriados disponíveis na maioria das bibliotecas UUID.
UUIDs v1 são ordenáveis por tempo de criação?
Sim, mas funções especiais de ordenação são necessárias. Comparação direta de strings não funciona porque os bits de tempo não são sequenciais.
UUID v1 expõe meu endereço MAC?
Por padrão, sim. A maioria das implementações usa o endereço MAC para o ID do nó. Implementações focadas em privacidade podem usar IDs de nó aleatórios.