프로그래밍/Python
[python] uuid 패키지의 uuid1()과 uuid4() 차이점
채윤아빠
2024. 8. 23. 13:34
uuid
패키지의 uuid1()
과 uuid4()
는 **UUID(범용 고유 식별자)**를 생성하는 여러 방법들중 두 가지 방법으로, 생성 방식과 보안 측면에서 차이가 있습니다.
uuid1()
– 시간 기반 UUID
uuid1()
함수는 시간 + 노드(일반적으로 MAC 주소)를 기반으로 UUID 생성하는 특성을 갖고 있습니다.
구성 요소
- 현재 시간 (100ns 단위)
- 컴퓨터의 MAC 주소 (또는 임의로 설정된 노드 값)
- 시계 순서(clock sequence)
장점: 생성된 UUID는 시간 순서 보장 가능 → 정렬이나 추적에 유리
단점: MAC 주소 기반 → 시스템 정보 노출 가능성 있음 → 보안에 취약
예제:
import uuid print(uuid.uuid1()) # 출력: 3d813cbb-47fb-11ee-be56-0242ac120002
uuid4()
– 난수 기반 UUID
uuid1()
함수는 **랜덤 값(random or pseudo-random number)**을 기반으로 UUID를 생성하는 특성을 갖고 있습니다.
구성 요소: 122비트의 난수 + 버전 정보
장점
- MAC 주소나 시간 정보 포함되지 않음 → 보안에 강함
- 충돌 가능성 거의 없음 (2122 개의 조합)
단점: 시간 순서가 보장되지 않음 → 정렬 불가
예제
import uuid print(uuid.uuid4()) # 출력: 6fa459ea-ee8a-4ca4-894e-db77e160355e
요약 비교
항목 | uuid1() |
uuid4() |
---|---|---|
생성 방식 | 시간 + MAC 주소 기반 | 난수 기반 |
보안성 | 낮음 (MAC 주소 노출 가능성 있음) |
높음 (완전한 랜덤) |
시간순 정렬 | 가능 | 불가능 |
충돌 가능성 | 매우 낮음 (시간과 MAC 기반) |
극히 희박 (난수 기반) |
상황에 따른 UUID 생성 추천
- 보안이 중요하거나 UUID를 외부에 노출할 경우 →
uuid4()
- 생성 시간 정보가 필요하거나 UUID 정렬이 중요한 시스템 →
uuid1()
맺는말
그 외에 uuid3()
(MD5 기반)이나 uuid5()
(SHA-1 기반)도 존재하지만, 일반적으로 uuid1()
과 uuid4()
가 가장 많이 사용됩니다.
728x90
반응형