UUID v5란 무엇인가?
UUID 버전 5 RFC 4122에 정의된 네임스페이스 기반 128비트 식별자(36자 문자열)입니다. 다음을 결합합니다:
- 네임스페이스 UUID: 생성 범위를 지정하는 사전 정의 또는 사용자 지정 UUID
- Name: 네임스페이스 내 사용자 정의 문자열 값
- SHA-1 해시: 결과를 생성하는 데 사용되는 암호화 알고리즘
형식 예: 2ed6657d-e927-5eb1-9a03-0242ac130003
UUID v5 작동 방식
- 네임스페이스 UUID 선택(사전 정의 또는 사용자 지정)
- 네임스페이스 UUID와 이름 문자열 연결
- 연결된 값의 SHA-1 해시 계산
- 버전 비트(0101) 및 변형 비트(10) 설정
- 하이픈이 포함된 32자리 16진수로 조립: 8-4-4-4-12 형식
장점 및 고려사항
Advantages | Considerations |
---|---|
|
|
UUID v5 구조
Bits | Content |
---|---|
0-47 | SHA-1 해시의 처음 48비트 |
48-51 | 버전(버전 5의 경우 0101) |
52-63 | SHA-1 해시의 다음 12비트 |
64-65 | 변형(RFC4122의 경우 10) |
66-127 | SHA-1 해시의 나머지 62비트 |
UUID v5와 다른 버전 비교
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 | ✅ 개인 정보 보호 |
사전 정의된 네임스페이스
Namespace | UUID | Purpose |
---|---|---|
DNS | 6ba7b810-9dad-11d1-80b4-00c04fd430c8 | 도메인 이름용 |
URL | 6ba7b811-9dad-11d1-80b4-00c04fd430c8 | URL용 |
OID | 6ba7b812-9dad-11d1-80b4-00c04fd430c8 | ISO OID용 |
X.500 DN | 6ba7b814-9dad-11d1-80b4-00c04fd430c8 | X.500 구별 이름용 |
일반적인 사용 사례
- 콘텐츠 주소 지정: 동일한 콘텐츠에 대해 일관된 ID
- 분산 시스템: 시스템 간 명명된 리소스
- URL 매핑: URL을 안정적인 식별자로 변환
- 구성 관리: 명명된 구성 항목 추적
- 데이터 중복 제거: 동일한 레코드 식별
- Federation: 시스템 간 일관된 식별자
자주 묻는 질문
UUID v5가 UUID v3보다 나은가요?
대부분의 사용 사례에서 그렇습니다. UUID v5는 UUID v3에서 사용되는 MD5 알고리즘보다 암호학적으로 강력한 SHA-1을 사용합니다. 그러나 두 버전 모두 결정적 생성을 제공합니다.
UUID v5 값이 충돌할 수 있나요?
충돌은 이론적으로 가능하지만 SHA-1의 특성 때문에 실제로는 극히 드뭅니다. 다른 네임스페이스나 이름 문자열을 사용하면 충돌 위험이 사실상 제거됩니다.
UUID v5에 SHA-1이 충분히 안전한가요?
UUID 목적상 SHA-1은 암호화 취약점에도 불구하고 적합합니다. UUID v5는 보안 목적이 아니라 일관된 식별자 생성을 위해 설계되었습니다.
UUID v5용 자체 네임스페이스를 만들 수 있나요?
예. RFC 4122는 표준 네임스페이스(DNS, URL, OID, X.500)를 정의하지만, 일반적으로 v4 무작위 UUID를 사용하여 유효한 UUID로 사용자 지정 네임스페이스를 만들 수 있습니다.
같은 이름이 항상 같은 UUID v5를 생성하나요?
예, 단 같은 네임스페이스 내에서만 그렇습니다. 다른 네임스페이스에서는 같은 이름이 다른 UUID를 생성하며, 이는 식별자 조직의 핵심 기능입니다.