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 작동 방식
- 현재 타임스탬프 계산 (1582-10-15 이후 100ns 간격)
- 14비트 클럭 시퀀스 가져오기/증가 (클럭 역행 시 고유성 보장)
- 48비트 노드 ID 획득 (보통 MAC 주소에서)
- 버전 비트(0001) 및 변형 비트(10) 설정
- 하이픈 포함 8-4-4-4-12 형식의 32 16진수로 조립
장점 및 고려사항
Advantages | Considerations |
---|---|
|
|
UUID v1 구조
Bits | Content |
---|---|
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 v4 | Random | 보안 무작위 ID | ✅ 비공개 |
UUID v5 | 네임스페이스 + SHA-1 | 결정적 ID | ✅ 비공개 |
UUID v6 | 시간 (재정렬) | 정렬 가능한 ID | ⚠️ MAC 노출 |
UUID v7 | 시간 + 무작위 | 정렬 가능한 ID | ✅ 비공개 |
일반 사용 사례
- 데이터베이스 키: 분산 데이터베이스
- 감사 로그: 시간 순서 추적
- 트랜잭션 ID: 비즈니스 프로세스
- 세션 추적: 웹 애플리케이션
- 콘텐츠 주소 지정: CMS 시스템
- IoT 메시지: 장치 통신
자주 묻는 질문
UUID v1은 암호학적으로 안전한가요?
아니요. UUID v1은 타임스탬프와 MAC 주소가 알려져 있으면 예측 가능합니다. 보안을 위해서는 무작위 UUID v4를 사용하세요.
UUID v1 값이 충돌할 수 있나요?
타임스탬프 정밀도, 클럭 시퀀스 카운터, 노드 식별자 덕분에 실제로는 충돌 가능성이 매우 낮습니다.
UUID v1에서 생성 시간을 추출할 수 있나요?
예. 대부분의 UUID 라이브러리에서 제공하는 적절한 알고리즘으로 타임스탬프 구성 요소를 추출할 수 있습니다.
UUID v1은 생성 시간으로 정렬할 수 있나요?
예, 하지만 특수 정렬 함수가 필요합니다. 시간 비트가 순차적이지 않아 직접 문자열 비교는 작동하지 않습니다.
UUID v1이 내 MAC 주소를 노출하나요?
기본적으로 그렇습니다. 대부분 구현체는 노드 ID로 MAC 주소를 사용합니다. 개인정보 보호를 중시하는 구현체는 무작위 노드 ID를 사용할 수 있습니다.