นี่เป็นคำถามที่ดีมาก ฉันไม่เชื่อว่ามันได้รับการพิจารณาอย่างเพียงพอในการเร่งใช้ UUID ทุกที่ ฉันไม่พบงานวิจัยที่แข็งแกร่ง
คำแนะนำ: เดินอย่างระมัดระวังที่นี่และรู้จักการเข้ารหัสของคุณดี หากคุณใช้ 128 บิต UUID 'ที่มีผลบังคับใช้วันเกิด' บอกเราว่าการปะทะกันมีแนวโน้มหลังจากที่คุณได้สร้างขึ้นประมาณ 2 ^ 64 คีย์ให้คุณมี 128 บิตเอนโทรปีในแต่ละคีย์
เป็นจริงค่อนข้างยากที่จะตรวจสอบให้แน่ใจว่าเป็นกรณีนี้ การสุ่มอย่างแท้จริงสามารถเกิดขึ้นได้จาก (ก) การสลายตัวของกัมมันตภาพรังสี (b) เสียงรบกวนจากพื้นหลังแบบสุ่มซึ่งมักจะมีการปนเปื้อนเว้นแต่คุณจะระมัดระวัง (c) เลือกเสียงอิเล็กทรอนิกส์ที่เหมาะสมเช่นนำมาจากไดโอดซีเนอร์แบบย้อนกลับ (ฉันเล่นกับเกมสุดท้ายแล้วมันก็ใช้งานได้เหมือน BTW)
ฉันจะไม่เชื่อถือการออกเสียงเช่น "ฉันไม่ได้เห็นสิ่งนี้ในหนึ่งปีของการใช้งาน" ยกเว้นว่าผู้ใช้สร้างบางสิ่งบางอย่างที่กำลังจะมาถึงคีย์ 2 ^ 64 (เช่นประมาณ 10 ^ 19) และตรวจสอบพวกเขาทั้งหมดกับ a การออกกำลังกายที่ไม่น่ารำคาญ
ปัญหาคือสิ่งนี้ สมมติว่าคุณมีเอนโทรปี 100 บิตเมื่อเปรียบเทียบคีย์ของคุณกับคีย์อื่น ๆ ที่ทุกคนกำลังสร้างในพื้นที่คีย์ทั่วไป คุณจะเริ่มเห็นการชนกันในประมาณ 2 ^ 50 เช่น ประมาณ 10 ^ 15 ปุ่ม โอกาสที่คุณจะพบการชนถ้าคุณเติมฐานข้อมูลของคุณด้วยปุ่มเพียง 1,000 ล้านปุ่มก็ยังไม่สำคัญ และถ้าคุณไม่ตรวจสอบคุณจะได้รับข้อผิดพลาดที่ไม่คาดคิดที่คืบคลานเข้าไปในฐานข้อมูลขนาดแถวของคุณ นี่อาจกัดยาก
ความจริงที่ว่ามีหลายวิธีในการสร้าง UUID ดังกล่าวควรทำให้เกิดอาการกระตุกชั่วขณะของความกังวล เมื่อคุณรู้ว่ามีผู้สร้างไม่กี่รายที่ใช้กระบวนการ 'สุ่มอย่างแท้จริง' ด้วยเอนโทรปีที่เพียงพอสำหรับ UUID ประเภท 4 คุณควรกังวลมากเกินไปจนกว่าคุณจะตรวจสอบเนื้อหาของเอนโทรปีอย่างระมัดระวัง (คนส่วนใหญ่จะไม่ทำสิ่งนี้หรือรู้วิธีคุณอาจเริ่มด้วยชุด DieHarder) อย่าสับสนการสร้างหมายเลขเทียมโดยใช้การสร้างตัวเลขสุ่มจริง
มันสำคัญมากที่คุณจะต้องตระหนักว่าเอนโทรปีที่คุณใส่เข้าไปนั้นเป็นเอนโทรปีที่คุณมีอยู่ อาจไม่ชัดเจนว่าถ้าพื้นที่ทั้งหมดของฉันประกอบด้วยตัวเลข 0 และ 1 เนื้อหาของเอนโทรปีจะเหมือนกับของสองสายต่อไปนี้หากพวกมันเป็นเพียงสองตัวเลือก: "นี่เป็นสตริงที่ซับซ้อนจริงๆ 293290729382832 * ! @@ # & ^% $$),. m} "และ" และตอนนี้สำหรับบางสิ่งบางอย่างโดยสิ้นเชิง " ยังคงมีเพียงสองตัวเลือก
การสุ่มเป็นเรื่องยากที่จะทำให้ถูกต้องและเพียงแค่เชื่อว่า "ผู้เชี่ยวชาญได้ตรวจสอบแล้วมันก็โอเค" อาจไม่พอเพียง ผู้เชี่ยวชาญ cryptographers (และมีไม่กี่คนที่มีความเชี่ยวชาญจริง ๆ ) เป็นคนแรกที่ยอมรับว่าพวกเขามักจะทำผิด เราเชื่อมั่นในหัวใจที่แตกต่าง DigiNotar ฯลฯ
ฉันคิดว่า Paul Tomblin ใช้ความระมัดระวังอย่างเหมาะสม 2c ของฉัน