Trình tạo UUID Phiên bản 1 (Dấu thời gian)

Tạo UUID dựa trên dấu thời gian với địa chỉ MAC để nhận dạng duy nhất theo thứ tự thời gian

Thử các ví dụ này:

UUID v1 là gì?

Phiên bản UUID 1 là định danh 128-bit dựa trên thời gian (chuỗi 36 ký tự) theo RFC 4122. Nó kết hợp:

  • Timestamp: Giá trị 60 bit (độ chính xác 100 nanô giây kể từ 1582-10-15)
  • Chuỗi đồng hồ: Bộ đếm 14 bit cho điều chỉnh đồng hồ
  • ID nút: Giá trị 48 bit (thường là địa chỉ MAC)

Ví dụ định dạng: 2ed6657d-e927-11eb-9a03-0242ac130003

Cách hoạt động của UUID v1

  1. Tính toán dấu thời gian hiện tại (khoảng 100ns kể từ 1582-10-15)
  2. Lấy/tăng chuỗi đồng hồ 14 bit (để đảm bảo duy nhất nếu đồng hồ chạy ngược)
  3. Lấy ID nút 48 bit (thường từ địa chỉ MAC)
  4. Đặt bit phiên bản (0001) và bit biến thể (10)
  5. Tập hợp thành 32 chữ số hex với dấu gạch ngang: định dạng 8-4-4-4-12

Ưu điểm & Cân nhắc

AdvantagesConsiderations
  • Theo thứ tự thời gian (có thể sắp xếp)
  • Tạo hiệu suất cao
  • Tạo phân tán
  • Thời gian tạo nhúng
  • Lo ngại về quyền riêng tư địa chỉ MAC
  • Vấn đề đồng bộ hóa đồng hồ
  • Dự đoán hơn UUID ngẫu nhiên
  • Không an toàn về mặt mật mã

Cấu trúc UUID v1

BitsContent
0-3132 bit thấp của dấu thời gian
32-4716 bit giữa của dấu thời gian
48-5912 bit cao của dấu thời gian
60-63Phiên bản (0001 cho v1)
64-65Biến thể (10 cho RFC4122)
66-79Chuỗi đồng hồ (14 bit)
80-127ID nút (48 bit)

So sánh UUID v1 với các phiên bản khác

VersionDựa trênTrường hợp sử dụngPrivacy
UUID v1Thời gian + MACID theo thứ tự thời gian⚠️ Tiết lộ địa chỉ MAC
UUID v3Namespace + MD5ID xác định✅ Riêng tư
UUID v4RandomID ngẫu nhiên an toàn✅ Riêng tư
UUID v5Namespace + SHA-1ID xác định✅ Riêng tư
UUID v6Thời gian (được sắp xếp lại)ID có thể sắp xếp⚠️ Tiết lộ địa chỉ MAC
UUID v7Thời gian + ngẫu nhiênID có thể sắp xếp✅ Riêng tư

Các trường hợp sử dụng phổ biến

  • Khóa cơ sở dữ liệu: Cơ sở dữ liệu phân tán
  • Nhật ký kiểm toán: Theo dõi theo thứ tự thời gian
  • ID giao dịch: Quy trình kinh doanh
  • Theo dõi phiên làm việc: Ứng dụng web
  • Địa chỉ nội dung: Hệ thống CMS
  • Tin nhắn IoT: Giao tiếp thiết bị

Câu hỏi thường gặp

UUID v1 có an toàn về mặt mật mã không?

Không. UUID v1 có thể dự đoán nếu biết dấu thời gian và địa chỉ MAC. Để bảo mật, hãy sử dụng UUID v4 ngẫu nhiên.

Giá trị UUID v1 có thể trùng nhau không?

Trùng lặp rất hiếm xảy ra trong thực tế do độ chính xác dấu thời gian, bộ đếm chuỗi đồng hồ và định danh nút.

Tôi có thể trích xuất thời gian tạo từ UUID v1 không?

Có. Thành phần dấu thời gian có thể được trích xuất bằng các thuật toán phù hợp có trong hầu hết thư viện UUID.

UUID v1 có thể sắp xếp theo thời gian tạo không?

Có, nhưng cần các hàm sắp xếp đặc biệt. So sánh chuỗi trực tiếp không hiệu quả vì các bit thời gian không liên tiếp.

UUID v1 có tiết lộ địa chỉ MAC của tôi không?

Mặc định thì có. Hầu hết triển khai sử dụng địa chỉ MAC làm ID nút. Các triển khai tập trung vào quyền riêng tư có thể dùng ID nút ngẫu nhiên thay thế.

Resources