UUID 버전 1 생성기 (타임스탬프)

고유한 시간 순서 식별을 위해 MAC 주소가 포함된 타임스탬프 기반 UUID 생성

다음 예시를 시도해보세요:

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 작동 방식

  1. 현재 타임스탬프 계산 (1582-10-15 이후 100ns 간격)
  2. 14비트 클럭 시퀀스 가져오기/증가 (클럭 역행 시 고유성 보장)
  3. 48비트 노드 ID 획득 (보통 MAC 주소에서)
  4. 버전 비트(0001) 및 변형 비트(10) 설정
  5. 하이픈 포함 8-4-4-4-12 형식의 32 16진수로 조립

장점 및 고려사항

AdvantagesConsiderations
  • 시간 순서대로 정렬 가능
  • 고성능 생성
  • 분산 생성
  • 내장 생성 시간
  • MAC 주소 개인정보 문제
  • 클럭 동기화 문제
  • 무작위 UUID보다 예측 가능
  • 암호학적으로 안전하지 않음

UUID v1 구조

BitsContent
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 v4Random보안 무작위 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를 사용할 수 있습니다.

Resources