GN⁺: TIL: UUID 버전 및 사용 시기
(ntietz.com)-
UUID의 다양한 버전
- UUID Version 1 (v1): 타임스탬프, 단조 카운터, MAC 주소로 생성됨
- UUID Version 2 (v2): 보안 ID에 예약됨. 자세한 내용은 알려지지 않음
- UUID Version 3 (v3): 제공된 데이터의 MD5 해시로 생성됨. DNS와 URL이 후보 데이터로 제안됨
- UUID Version 4 (v4): 완전히 랜덤한 데이터로 생성됨. 대부분 사람들이 생각하는 UUID임
- UUID Version 5 (v5): 제공된 데이터의 SHA1 해시로 생성됨. v3와 마찬가지로 DNS와 URL이 후보 데이터로 제안됨
- UUID Version 6 (v6): 타임스탬프, 단조 카운터, MAC 주소로 생성됨. v1과 동일한 데이터지만 생성 시간 순으로 정렬되도록 순서가 변경됨
- UUID Version 7 (v7): 타임스탬프와 랜덤 데이터로 생성됨
- UUID Version 8 (v8): 완전히 사용자 정의 가능함 (필수 버전/변형 필드 제외)
-
사용 시기
- v4: 랜덤 ID가 필요할 때 사용. 기본 선택으로 좋음
- v7: 정렬이 필요한 경우 사용. 예를 들어, 데이터베이스 키로 사용할 때 적합함
- v5 또는 v8: 고유 데이터를 UUID에 포함하고 싶을 때 사용. 필요 시 알게 될 것임
-
다른 버전들에 대한 설명
- v7은 v1과 v6을 개선한 버전으로, 가능하면 v7을 사용하는 것이 좋음. 따라서 v1이나 v6은 보통 사용하지 않음
- v2는 보안 관련 용도로 예약되어 있음. 사용 중이라면 자세한 내용을 알 수 없을 가능성이 큼
- v3는 v5로 대체됨. v5는 더 강력한 해시를 사용함
GN⁺의 정리
- UUID는 다양한 버전이 있으며, 각 버전은 특정한 용도에 맞게 설계됨
- v4와 v7이 가장 일반적으로 사용되며, v5와 v8은 특정한 데이터 요구 사항이 있을 때 사용됨
- UUID의 버전 선택은 사용 목적에 따라 달라지며, 정렬이 필요한 경우 v7을, 랜덤 ID가 필요한 경우 v4를 사용하면 좋음
- UUID의 다양한 버전을 이해하면 프로젝트에 적합한 UUID를 선택하는 데 도움이 됨
Hacker News 의견
-
UUID Version 2 (v2)는 보안 ID를 위해 예약되어 있으며, 자세한 내용은 잘 알려져 있지 않음
- RFC 문서가 불명확하게 작성되었기 때문임
- Open Group의 문서를 참조하면 더 많은 정보를 얻을 수 있음
- "version 0" UUID도 존재하며, 이는 나중에 다른 버전들이 호환되도록 하는 데 기여했음
- 연구 결과는 GitHub에서 확인할 수 있음
-
UUID v2의 세부 사항은 RFC 9562 문서에서 쉽게 찾을 수 있음
- DCE의 일부로 정의되어 있으며, 관련 링크를 클릭하면 세부 사항을 확인할 수 있음
- 링크를 클릭하는 것이 중요함
-
UUID v7의 타임스탬프는 Databend에서 메타데이터 파일을 빠르게 찾는 데 유용함
- AWS S3에서의 작업 속도를 크게 향상시킴
- 관련 PR은 GitHub에서 확인할 수 있음
-
짧은 UUID에 대한 표준이 있었으면 좋겠음
- 예:
73WakrfVbNJBaAmhQtEeDv
또는bK7nP9xM
- 짧고 기억하기 쉬운 ID가 필요함
- 예:
-
UUID2의 목적을 이해하기 어려움
- Xandr에서 개인 데이터를 삭제 요청할 때만 UUID2를 접했음
- Wikipedia 페이지를 읽어도 왜 다양한 유형의 UUID가 필요한지 이해하기 어려움
- Mac 코드와의 혼합이 UUID2의 무작위성을 높이는 이유인지, 아니면 다른 이유가 있는지 궁금함
- 프라이버시를 위해 매우 긴 식별자를 사용하면 중복되지 않는 UUID를 사용할 수 있음
-
UUID v4는 단순히 무작위 바이트 생성기임
- 하이픈, 버전 정보 등을 생략하고 무작위 바이트를 생성하는 것이 더 효율적임
-
MAC 기반 버전은 사용하지 않는 것이 좋음
- 이론적으로 v4와 v7을 제외한 모든 버전이 해당됨
- 특히 v1은 최악이며, v3의 MD5도 매우 취약함
-
SHA256 데이터와 카운터를 사용하는 UUID가 유용할 수 있음
- PBKDF2와 유사한 방식으로 프라이버시를 보호하는 식별자로 사용할 수 있음
-
v7을 사용하는 것이 좋음
- 보안 전문가들이 반대할 수도 있음
-
흥미로운 읽을거리였음
- 매일 새로운 것을 배울 수 있음