프로그래밍/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
반응형