สร้างรหัสผ่านและ UUID
สร้างรหัสผ่านแบบสุ่มและ UUID (v4 และ v7) ในเบราว์เซอร์ด้วย Web Crypto API และตรวจดูเวอร์ชันกับ timestamp ของ UUID
สร้างรหัสผ่าน
เอนโทรปี = ความยาว × log2(จำนวนอักขระที่เป็นไปได้) ค่าประมาณนี้ใช้ได้เฉพาะกับรหัสผ่านที่สร้างแบบสุ่ม เช่น รหัสผ่านด้านล่าง
รหัสผ่านที่สร้างขึ้น
สร้าง UUID
ตรวจสอบ UUID
หมายเหตุ
- รหัสผ่านและ UUID สร้างขึ้นในเบราว์เซอร์ของคุณด้วยตัวสร้างตัวเลขสุ่มของ Web Crypto โดยไม่ถูกส่งไปยังหรือจัดเก็บโดย LeedyBox ดังนั้น LeedyBox จึงกู้คืนให้ไม่ได้ โปรดบันทึกรหัสผ่านที่จะใช้ต่อไว้ในโปรแกรมจัดการรหัสผ่าน
- ใช้รหัสผ่านที่ต่างกันสำหรับแต่ละบัญชี และเปิดการยืนยันตัวตนแบบสองขั้นตอนเมื่อมีให้ใช้
- ระดับความแข็งแรงเป็นค่าประมาณ ไม่ได้คำนึงถึงวิธีที่บริการจัดเก็บรหัสผ่าน หรือรหัสผ่านนั้นเคยปรากฏในข้อมูลรั่วไหลหรือไม่
- UUID v7 มีเวลาที่สร้างอยู่ในตัว ผู้ที่เห็น UUID จึงรู้ได้ว่าสร้างขึ้นเมื่อใด หากเรื่องนี้สำคัญ ให้ใช้ v4
- UUID เป็นตัวระบุ อย่าใช้เป็นรหัสผ่านหรือโทเค็นลับ
วิธีใช้
- กำหนดความยาว (4 ถึง 128 ค่าเริ่มต้นคือ 16) ด้วยช่องตัวเลขหรือแถบเลื่อน และป้อนจำนวนรหัสผ่านที่ต้องการในช่อง “จำนวนรหัสผ่าน (1–50)” (ค่าเริ่มต้นคือ 5) รายการใหม่จะถูกสร้างทุกครั้งที่คุณเปลี่ยนตัวเลือก หากค่าอยู่นอกช่วงหรือใช้การตั้งค่าอักขระที่เลือกไม่ได้ จะมีข้อความบอกว่าต้องเปลี่ยนอะไรแทน
- ใน “ชุดอักขระ” ให้เลือกชุดที่จะใช้ และแก้ไข “ชุดสัญลักษณ์” หากจำเป็น เปิด “ไม่ใช้อักขระที่หน้าตาคล้ายกัน (I l 1 O 0 o)” หากรหัสผ่านจะถูกอ่านออกเสียงหรือพิมพ์ตามจากกระดาษ
- ตรวจดูเอนโทรปีโดยประมาณและระดับความแข็งแรง แล้วกด “คัดลอก” ข้างรหัสผ่าน หรือกด “คัดลอกทั้งหมด” เพื่อคัดลอกทั้งรายการโดยมีรหัสผ่านบรรทัดละหนึ่งรายการ ส่วน “สร้างใหม่” จะสร้างรายการใหม่ด้วยการตั้งค่าเดิม
- สำหรับตัวระบุ ให้ไปที่ส่วน “สร้าง UUID” เลือก v4 หรือ v7 ใน “เวอร์ชัน” ป้อนจำนวน UUID (1 ถึง 100 ค่าเริ่มต้นคือ 5) เปิด “ตัวพิมพ์ใหญ่” “ไม่มีขีดกลาง” หรือทั้งสองอย่างหากระบบของคุณต้องการรูปแบบนั้น แล้วกดปุ่ม “สร้าง UUID” การเปลี่ยนเวอร์ชันหรือช่องทำเครื่องหมายช่องใดช่องหนึ่งจะสร้างรายการ UUID ชุดใหม่ที่ต่างจากเดิม ไม่ได้เปลี่ยนรูปแบบของ UUID ชุดปัจจุบัน ปุ่ม “คัดลอกทั้งหมด” ที่อยู่ข้างปุ่ม “สร้าง UUID” จะคัดลอกรายการโดยมี UUID บรรทัดละหนึ่งรายการ
- หากต้องการตรวจ UUID ที่มีอยู่ ให้วางลงในช่อง “วาง UUID” ในส่วน “ตรวจสอบ UUID” ผลลัพธ์จะอัปเดตขณะที่คุณพิมพ์ เครื่องมือรับ UUID ได้ทั้งแบบมีหรือไม่มีขีดกลาง ตัวพิมพ์ใหญ่หรือเล็ก แบบอยู่ในวงเล็บปีกกา หรือแบบมีคำนำหน้า urn:uuid: ผลลัพธ์จะบอกว่า UUID ถูกต้องหรือไม่ และแสดงรูปแบบมาตรฐาน (ตัวพิมพ์เล็กพร้อมขีดกลาง) variant เวอร์ชัน และ timestamp หาก UUID นั้นเก็บเวลาไว้ ส่วน Nil UUID และ Max UUID จะแสดงประเภทแทน variant และเวอร์ชัน
คำถามที่พบบ่อย
รหัสผ่านสุ่มได้ดีเพียงใด และคัดลอกไปใช้ได้อย่างปลอดภัยหรือไม่
อักขระแต่ละตัวถูกเลือกด้วย crypto.getRandomValues ซึ่งเป็นตัวสร้างตัวเลขสุ่มที่ปลอดภัยในเชิงการเข้ารหัสที่มีอยู่ในเบราว์เซอร์ของคุณ โดยใช้ rejection sampling เพื่อหลีกเลี่ยงความเอนเอียงที่เกิดจากการหารเอาเศษแบบธรรมดา จากนั้นจึงสลับลำดับอักขระ รายการนี้มีอยู่เฉพาะในหน้าที่เปิดอยู่ และจะถูกแทนที่เมื่อคุณโหลดหน้าใหม่ กด “สร้างใหม่” หรือเปลี่ยนตัวเลือก รหัสผ่านที่คัดลอกจะอยู่ในคลิปบอร์ดจนกว่าจะมีสิ่งอื่นมาแทนที่ และฟีเจอร์ประวัติคลิปบอร์ดหรือการซิงค์อาจเก็บสำเนาไว้หรือส่งต่อไปยังอุปกรณ์อื่นของคุณ หลังจากวางรหัสผ่านลงในโปรแกรมจัดการรหัสผ่านแล้ว จึงควรคัดลอกสิ่งอื่นทับ และลบรายการนั้นออกจากประวัติคลิปบอร์ด
“อ่อน” “พอใช้” “แข็งแรง” และ “แข็งแรงมาก” หมายถึงอะไร และรหัสผ่านควรยาวเท่าใด
เป็นช่วงของเอนโทรปีโดยประมาณ ต่ำกว่า 40 บิตคือ “อ่อน” ตั้งแต่ 40 แต่ต่ำกว่า 60 บิตคือ “พอใช้” ตั้งแต่ 60 แต่ต่ำกว่า 80 บิตคือ “แข็งแรง” และตั้งแต่ 80 บิตขึ้นไปคือ “แข็งแรงมาก” อักขระแต่ละตัวเพิ่มเอนโทรปีเท่ากับ log2 ของจำนวนอักขระที่เป็นไปได้ ซึ่งประมาณ 6.4 บิตเมื่อใช้อักขระเริ่มต้น 85 ตัว (ทั้งสี่ชุดพร้อมสัญลักษณ์เริ่มต้น) ความยาวเริ่มต้น 16 อักขระจึงให้ประมาณ 102.6 บิต ซึ่งอยู่ในระดับ “แข็งแรงมาก” สำหรับรหัสผ่านแบบสุ่มที่เก็บไว้ในโปรแกรมจัดการรหัสผ่าน ความยาวที่อยู่ในระดับ “แข็งแรงมาก” เป็นเป้าหมายที่สมเหตุสมผลหากเว็บไซต์ยอมรับ หากเว็บไซต์อนุญาตเฉพาะตัวอักษรและตัวเลข ให้ชดเชยสัญลักษณ์ที่ขาดไปด้วยความยาว โดย 20 อักขระจาก 62 ตัวนั้นให้ประมาณ 119 บิต
ทำไมความแข็งแรงจริงจึงอาจต่ำกว่าค่าประมาณ
เมื่อเปิด “มีอักขระจากทุกชุดที่เลือกอย่างน้อยชุดละหนึ่งตัว” รหัสผ่านที่ขาดชุดใดชุดหนึ่งจะไม่ถูกสร้าง และเมื่อรหัสผ่านมีจำนวนอักขระมากกว่าจำนวนชุดที่เลือก อักขระส่วนที่เหลือจะไม่ได้มีโอกาสออกเท่ากันทุกตัว เอนโทรปีที่แท้จริงจึงต่ำกว่าที่สูตร ความยาว × log2(จำนวนอักขระที่เป็นไปได้) บอกไว้ ความต่างนี้เห็นได้ชัดในรหัสผ่านสั้น แต่มีน้อยในรหัสผ่านยาว รหัสผ่าน 4 อักขระจากสี่ชุดเริ่มต้นจะแสดงประมาณ 25.6 บิต ขณะที่ค่าที่แท้จริงอยู่ที่ประมาณ 21.8 บิต ส่วนที่ความยาวเริ่มต้น 16 อักขระ ส่วนต่างน้อยกว่าครึ่งบิต เมื่อปิดตัวเลือกนั้น อักขระแต่ละตัวจะถูกสุ่มแยกกันจากอักขระที่เป็นไปได้ทั้งหมด และค่าประมาณจะตรงกับวิธีที่ใช้สร้างรหัสผ่าน
เว็บไซต์ไม่รับสัญลักษณ์บางตัว ควรทำอย่างไร
ลบสัญลักษณ์ที่เว็บไซต์ไม่รับออกจากช่อง “ชุดสัญลักษณ์” หรือพิมพ์เฉพาะสัญลักษณ์ที่อนุญาต รายการจะถูกสร้างใหม่ขณะที่คุณพิมพ์ ช่องว่างจะถูกละเว้น และอักขระที่ป้อนซ้ำจะนับเพียงครั้งเดียว หากเว็บไซต์กำหนดให้ต้องมีสัญลักษณ์ ให้เปิด “มีอักขระจากทุกชุดที่เลือกอย่างน้อยชุดละหนึ่งตัว” ไว้ หากเว็บไซต์ไม่รับสัญลักษณ์เลย ให้ยกเลิกการเลือกช่อง “สัญลักษณ์” และเพิ่มความยาวเพื่อชดเชยชุดอักขระที่เล็กลง
ควรใช้ UUID v4 หรือ v7
ใช้ v4 เมื่อลำดับไม่สำคัญ หรือเมื่อไม่ต้องการให้อ่านเวลาที่สร้างได้จาก ID UUID v7 ขึ้นต้นด้วย Unix timestamp หน่วยมิลลิวินาทีขนาด 48 บิต และนอกจากบิตเวอร์ชันและบิต variant แล้ว อีก 74 บิตที่เหลือเป็นค่าสุ่ม แม้ตัวสร้างบางตัวจะใช้บางส่วนเป็นตัวนับหรือเวลาที่ละเอียดขึ้น ผลคือ UUID v7 จะเรียงตามเวลาที่สร้างโดยประมาณ และเมื่อใช้เป็นคีย์ฐานข้อมูล มักทำให้รายการใหม่อยู่ใกล้กันในดัชนี ในหน้านี้ UUID v7 ตัวแรกของแต่ละมิลลิวินาทีจะได้บิตสุ่ม 73 บิต โดยบิตบนสุดของ 74 บิตนั้นเป็น 0 เมื่อสร้าง UUID v7 ตัวถัดไปในมิลลิวินาทีเดียวกัน หรือเมื่อนาฬิกาของอุปกรณ์ย้อนกลับ ค่าก่อนหน้าจะถูกเพิ่มขึ้นด้วยจำนวนสุ่มแทนการสุ่มใหม่ UUID จึงยังคงเรียงตามลำดับ
UUID สองตัวที่สร้างขึ้นซ้ำกันได้หรือไม่
ในทางทฤษฎีเป็นไปได้ แต่ในทางปฏิบัติโอกาสน้อยจนแทบไม่ต้องคำนึงถึง ตราบใดที่ตัวสร้างตัวเลขสุ่มของเบราว์เซอร์ทำงานตามที่ออกแบบไว้ UUID v4 มีบิตสุ่ม 122 บิต ต้องสร้างประมาณ 2.7 × 10^18 ตัว จึงจะมีโอกาส 50% ที่จะมี UUID สองตัวใดก็ตามซ้ำกัน UUID v7 แต่ละตัวที่สร้างในหน้านี้มีค่ามากกว่าตัวก่อนหน้า จึงไม่ซ้ำกันตราบใดที่ยังเปิดหน้านี้อยู่ และ UUID v7 ที่สร้างจากที่อื่นจะซ้ำกับตัวใดตัวหนึ่งได้ก็ต่อเมื่อมีมิลลิวินาทีเดียวกันและบิตสุ่มเหมือนกันทุกบิต
ทำไม “ตรวจสอบ UUID” จึงแสดง timestamp ของ UUID บางตัว แต่ไม่แสดงของบางตัว
เครื่องมืออ่านเวลาได้เฉพาะจากเวอร์ชัน 1, 6 และ 7 ของ variant RFC 9562 ซึ่งเก็บเวลาไว้ในตำแหน่งที่กำหนด เวอร์ชัน 1 และ 6 นับเป็นช่วงละ 100 นาโนวินาทีนับตั้งแต่ 15 ตุลาคม ค.ศ. 1582 และเวอร์ชัน 7 นับเป็นมิลลิวินาทีนับตั้งแต่ 1970-01-01 UTC เวลาจะแสดงเป็น UTC ละเอียดถึงระดับมิลลิวินาที เวลานี้มาจากนาฬิกาของอุปกรณ์ที่สร้าง UUID และตัวสร้างบางตัวเลื่อนหรือปัดเวลา จึงควรถือเป็นเวลาที่สร้างโดยประมาณ เวอร์ชัน 2 ใช้ข้อมูลอื่นแทนที่ timestamp บางส่วน เวอร์ชัน 8 มีโครงสร้างตามที่ผู้สร้างกำหนดเอง และเวอร์ชัน 3, 4 และ 5 ไม่มีข้อมูลเวลา