UUID 생성기
🔢 계산/생성UUID v4 형식의 고유 식별자를 즉석에서 생성합니다. 중복 가능성이 거의 없는 128비트 랜덤 값.
• UUID v4 (랜덤 UUID)를 생성합니다.
• 브라우저의 crypto.randomUUID() API를 사용합니다.
• 생성된 UUID는 전역적으로 고유합니다.
🔑 UUID 생성기란?
UUID(Universally Unique Identifier)는 전 세계적으로 고유한 128비트 식별자입니다. 이 도구는 UUID 버전 4(랜덤)를 생성하며, 충돌 확률이 천문학적으로 낮아 실질적으로 고유합니다.데이터베이스 기본키, API 토큰, 세션 ID, 파일명 등 중복이 허용되지 않는 곳에 사용합니다.Web Crypto API를 사용해 암호학적으로 안전한 난수를 기반으로 생성합니다.
💡 핵심 포인트
v4는 122비트 난수로 충돌 확률이 사실상 0이며, 가장 널리 쓰입니다.
📊 UUID 버전 비교
| 버전 | 생성 방식 | 특징 |
|---|---|---|
| v1 | 시간 + MAC 주소 | 생성 시간 추적 가능, 보안 우려 |
| v4 ✓ | 랜덤 (이 도구) | 가장 널리 사용, 추적 불가 |
| v5 | 네임스페이스 + SHA-1 | 동일 입력 시 동일 UUID |
| v7 | 시간 + 랜덤 | 정렬 가능, 최신 표준 |
💡 UUID 활용 팁
- DB 기본키: 자동 증가 ID 대신 UUID로 분산 시스템 지원
- 대문자/소문자: 스펙상 대소문자 구분 없음, 일관성 유지 권장
- 하이픈 제거: 32자 연속 문자열이 필요할 때 사용
- URL 안전: UUID는 URL에 안전하게 포함 가능
🔍 UUID 버전별 차이 자세히 보기
가장 자주 쓰이는 v1, v4, v7의 특성을 정리하면 선택 기준이 잡힙니다.
- v1 (시간 + MAC): 생성 시간이 안에 들어가 있어 타임스탬프 추출이 가능합니다. 다만 기기 MAC 주소 일부가 노출돼 보안에 민감한 환경에서는 권장되지 않습니다.
- v4 (랜덤): 122비트 난수 기반으로 가장 보편적입니다. 추적 불가능하고 구현이 단순해서 대부분의 언어와 라이브러리가 기본값으로 채택했습니다. 이 도구도 v4를 사용합니다.
- v7 (시간 + 랜덤): 2024년 RFC 9562로 공식화된 최신 버전입니다. 앞부분에 밀리초 단위 유닉스 타임스탬프가 들어가 정렬 가능하고, 데이터베이스 인덱스 효율이 v4보다 좋습니다. 분산 시스템의 기본키로 점점 채택이 늘고 있습니다.
- v5 (네임스페이스 해시): 같은 네임스페이스+이름 조합에서 항상 같은 UUID가 나옵니다. URL이나 DNS 같은 입력값에서 결정론적 ID가 필요할 때 씁니다.
🆚 UUID vs GUID vs ULID 비교
| 식별자 | 길이 | 정렬 | 특징 |
|---|---|---|---|
| UUID | 36자(하이픈 포함) | v7만 정렬 가능 | RFC 표준, 가장 폭넓게 사용 |
| GUID | 36자 | UUID와 동일 | Microsoft 생태계 용어, 기술적으로는 UUID |
| ULID | 26자(Crockford Base32) | 시간순 정렬 가능 | UUID v7 등장 전 인기, 짧고 URL 친화적 |
🛡️ 보안 고려사항
UUID는 "고유"하지만 "비밀스럽다"는 뜻은 아닙니다. 사용 위치에 따라 주의할 점이 다릅니다.
⚠️ 주의
UUID는 식별자이지 시크릿이 아닙니다. 인증 토큰으로 사용하지 마세요.
- 비밀 토큰으로 부적합: 인증 토큰, 비밀번호 재설정 링크 등은 UUID 대신 충분한 엔트로피의 무작위 문자열(예: 32바이트 랜덤)을 사용하세요. UUID v4의 무작위 비트는 122비트라 충분해 보이지만, 의미상 "ID"이지 "시크릿"이 아닙니다.
- 예측 가능성: v1은 타임스탬프와 MAC을 노출하므로 공개 API 응답에 그대로 쓰지 않는 편이 좋습니다. v4와 v7의 랜덤 부분은 예측 불가능합니다.
- 열거 공격 방지: 자동 증가 ID 대신 UUID를 쓰면 /users/1, /users/2 같이 순차 추측이 불가능해 IDOR 같은 취약점에서 한 단계 보호막이 됩니다. 다만 이것만으로 권한 검증을 대체하면 안 됩니다.
- 로그/URL 노출: UUID는 검색엔진과 로그에 그대로 남을 수 있으니, 민감한 리소스에 대한 접근 권한은 별도 검증해야 합니다.
- 난수 출처: 이 도구는 브라우저의
crypto.randomUUID()를 사용해 OS 수준의 암호학적 난수 생성기를 활용합니다.
자주 묻는 질문
UUID가 중복될 가능성이 있나요?▼
UUID v4의 충돌 확률은 2^122분의 1로, 1초에 10억 개씩 85년간 생성해야 50% 확률입니다. 실질적으로 중복은 발생하지 않습니다.
GUID와 UUID의 차이는 뭔가요?▼
GUID(Globally Unique Identifier)는 Microsoft의 용어로, UUID와 동일한 개념입니다. 형식과 생성 방식이 같습니다.
UUID 형식은 어떻게 되나요?▼
xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx 형식입니다. 4는 버전(v4)을 나타내고, y는 8, 9, a, b 중 하나입니다.
DB 기본키로 UUID를 쓰면 성능이 나빠지지 않나요?▼
v4처럼 무작위 UUID는 인덱스 페이지가 분산되어 쓰기 성능이 떨어질 수 있습니다. 대규모 테이블이 걱정된다면 시간순 정렬이 가능한 UUID v7이나 ULID를 검토해보세요. 인덱스 지역성이 자동 증가 ID에 가깝게 유지됩니다.
UUID를 인증 토큰으로 써도 되나요?▼
권장하지 않습니다. UUID v4의 122비트 난수는 무작위로 충분해 보이지만, "식별자"로 설계된 것이지 "비밀"로 설계된 것이 아닙니다. 세션 토큰이나 비밀번호 재설정 링크는 32바이트 이상의 별도 무작위 문자열을 만들어 쓰는 편이 안전합니다.