UUID 디코딩이란?
UUID 디코딩 UUID를 분석하여 다음에 대한 정보를 추출하는 과정입니다:
- Version: 위치 48-51의 4비트에 기반한 UUID 버전 (1-8)
- Variant: 비트 64-65에 기반한 UUID 변형 (보통 RFC 4122)
- Components: 버전에 따른 타임스탬프, 노드 ID 또는 기타 데이터 추출
- 생성 시간: 시간 기반 UUID (v1, v6, v7)용
Example: 123e4567-e89b-12d3-a456-426614174000
2018-10-03 09:45:32 UTC에 생성된 버전 1 UUID입니다.
UUID 구조 개요
Format | Description |
---|---|
8-4-4-4-12 | 하이픈으로 구분된 32자리 16진수 숫자 |
버전 비트 | 비트 48-51 (13번째 숫자) |
변형 비트 | 비트 64-65 (17번째 숫자) |
버전 번호는 세 번째 그룹의 첫 번째 16진수 숫자로 나타납니다 (예: 123e4567-e89b-12d3-a456-426614174000
버전 1의 경우).
UUID 버전에 따른 디코딩
Version | 디코딩 가능한 내용 |
---|---|
UUID v1 |
|
UUID v3/v5 |
|
UUID v4 |
|
UUID v6 |
|
UUID v7 |
|
ULID |
|
UUID에서 타임스탬프 추출
UUID 유형 | 시간 추출 방법 | Epoch |
---|---|---|
UUID v1 | 비트 0-31, 32-47, 48-59를 결합하여 타임스탬프 구성 요소 재정렬 | 1582년 10월 15일 |
UUID v6 | 비트 0-59 추출 (이미 올바른 순서) | 1582년 10월 15일 |
UUID v7 | 비트 0-47 추출 (유닉스 밀리초) | 1970년 1월 1일 |
ULID | 처음 10자리 Base32 문자를 디코딩하여 48비트 유닉스 밀리초 획득 | 1970년 1월 1일 |
UUID 유효성 검사 규칙
- 형식 검사: 하이픈으로 구분된 8-4-4-4-12 16진수 숫자
- 버전 검사: 13번째 문자는 1-8이어야 함
- 변형 검사: 17번째 문자는 8, 9, A, 또는 B 여야 합니다 (RFC 4122 기준)
기본 UUID 유효성 검사용 정규 표현식:
^[0-9a-f]8-[0-9a-f]4-[1-8][0-9a-f]3-[89ab][0-9a-f]3-[0-9a-f]12$
실용적 응용
- 포렌식 분석: ID 생성 시점 결정
- Debugging: ID 타임스탬프를 통한 시스템 동작 추적
- Auditing: 시간 순서 무결성 검증
- 보안 분석: 위조되거나 조작된 ID 감지
- 데이터 복구: 시간적 관계 재구성
- 시스템 마이그레이션: 레거시 UUID 구현 세부사항 이해
MAC 주소 추출 (v1/v6)
UUID v1 및 v6의 경우, 생성 시 무작위화되지 않았다면 노드 식별자(MAC 주소)를 추출할 수 있습니다:
- UUID에서 마지막 12자리 16진수 (48비트) 추출
- XX:XX:XX:XX:XX:XX 형식의 콜론 구분
- 멀티캐스트 비트를 검사하여 MAC 주소가 실제인지 무작위인지 확인
첫 번째 바이트에 0x01 비트가 설정되어 있으면 실제 MAC 주소가 아닌 무작위 노드 ID일 가능성이 높습니다.
자주 묻는 질문
UUID v4가 생성된 정확한 시간을 알 수 있나요?
아니요. UUID v4는 순수 무작위이며 타임스탬프 정보가 없습니다. UUID v4 값으로 생성 시간을 알 수 없습니다.
시간 기반 UUID의 타임스탬프 정확도는?
UUID v1/v6 타임스탬프는 100나노초 정밀도이며, UUID v7과 ULID는 밀리초 정밀도입니다. 다만 실제 시스템 시계 정확도는 다를 수 있습니다.
UUID 버전 간 변환이 가능한가요?
아니요, 동일한 식별자 값을 유지하면서 버전 간 직접 변환은 불가능합니다. 각 버전은 근본적으로 다른 구조를 가집니다.
UUID v1을 생성한 컴퓨터를 식별할 수 있나요?
노드 ID가 무작위화되지 않았다면 UUID v1에 생성 시스템의 MAC 주소가 포함될 수 있습니다. 하지만 많은 최신 구현체는 개인정보 보호를 위해 이를 무작위화합니다.
UUID가 유효한지 어떻게 알 수 있나요?
형식 확인 (8-4-4-4-12 16진수 숫자), 버전 숫자 확인 (13번째 문자는 1-8), 변형 비트 확인 (RFC 4122 UUID의 경우 17번째 문자는 8, 9, A, 또는 B)