UUID v3 là gì?
Một UUID v3 là băm MD5 của không gian tên ghép với tên, lấy 128 bit đầu và ghi số phiên bản 3 vào vị trí quy định. Vì MD5 tất định nên không cần lưu trữ: chỉ cần tính lại là có kết quả.
RFC 9562 vẫn giữ v3 để tương thích nhưng không khuyến nghị cho thiết kế mới, vì MD5 đã bị phá về khả năng chống va chạm. Nếu có thể chọn, hãy dùng v5.
Cách sử dụng
- Chọn không gian tên: DNS, URL, OID hoặc X.500.
- Nhập tên cần băm, ví dụ một tên miền.
- Bấm Tạo; cùng đầu vào luôn cho ra cùng UUID.
Dùng để làm gì
- Dẫn xuất định danh cố định từ tên miền hoặc tên tài khoản.
- Sinh giá trị mẫu ổn định cho kiểm thử.
- Tương thích với hệ thống đã lưu UUID v3 từ trước.
UUID v3 đứng ở đâu
| Lựa chọn | Khi nào dùng |
|---|---|
v3 | MD5: chỉ dùng khi cần tương thích |
v5 | Cùng logic nhưng dùng SHA-1 — lựa chọn nên dùng |
v4 | Ngẫu nhiên, không dẫn xuất từ tên |
Các phiên bản UUID trong một bảng
| Phiên bản | Sắp xếp được | Dựa trên | Dùng cho |
|---|---|---|---|
| v1 | Không | Dấu thời gian + địa chỉ MAC | Hệ thống cũ vẫn còn phụ thuộc v1 |
| v3 | Không | Băm MD5 của một tên | Định danh tất định khi buộc phải dùng MD5 |
| v4 | Không | 122 bit ngẫu nhiên | Hầu hết mọi định danh thông dụng |
| v5 | Không | Băm SHA-1 của một tên | Khi cùng một tên phải luôn ra cùng một định danh |
| v6 | Có | Dấu thời gian đã đảo thứ tự | Định danh sắp xếp được mà vẫn giữ độ ngẫu nhiên |
| v7 | Có | Thời gian Unix theo mili giây | Khóa chính trong cơ sở dữ liệu và định danh sự kiện |
| v8 | Không | Bố cục bit của riêng bạn | Định dạng tùy biến hoặc thử nghiệm |
Cả bảy phiên bản đều dài 128 bit và được viết theo cùng dạng 8-4-4-4-12. Điều khác nhau chỉ là ý nghĩa của các bit.
Câu hỏi thường gặp
Vì sao nên dùng v5 thay v3?
Vì MD5 đã có va chạm được tìm thấy, còn SHA-1 tuy cũng đã yếu nhưng vẫn kháng va chạm tốt hơn nhiều. Cả hai đều tất định, nên khi không ràng buộc tương thích thì v5 là lựa chọn an toàn hơn.
Từ UUID v3 có lấy lại được tên ban đầu không?
Không theo nghĩa đảo ngược hàm băm. Tuy nhiên nếu tên dễ đoán, kẻ tấn công có thể thử lần lượt để tìm ra. Vì vậy đừng dùng v3 để che giấu thông tin bí mật.
v3 có phù hợp sinh mã đặt lại mật khẩu không?
Không. Mã đặt lại mật khẩu cần ngẫu nhiên và không đoán được; hãy dùng nguồn ngẫu nhiên mật mã thay vì định danh dẫn xuất từ tên.