ฉันเขียนเว็บไซต์สร้างรหัสผ่านแบบสุ่มhttp://passwordcreator.org นี่คือสิ่งที่ฉันเรียนรู้ในกระบวนการสร้างไซต์นั้นเกี่ยวกับการสร้างรหัสผ่านแบบสุ่มที่ปลอดภัย:
แหล่งที่มาแบบสุ่ม
ตัวสร้างตัวเลขสุ่มส่วนใหญ่ในคอมพิวเตอร์เป็นแบบสุ่ม พวกเขาจะขึ้นอยู่กับอัลกอริทึมและไม่เหมาะสำหรับการสร้างรหัสผ่าน พวกเขามักจะ seeded กับเวลาปัจจุบัน หากทราบว่ามีข้อมูลหนึ่งชิ้น (หรือสามารถคาดเดาได้) ก็เป็นไปได้ที่จะทำซ้ำเอาต์พุตของพวกเขาและดูรหัสผ่านที่จะถูกสร้างขึ้น
ในการสร้างรหัสผ่านควรใช้เครื่องสร้างตัวเลขสุ่ม (CPRNG)แบบเข้ารหัสลับที่ปลอดภัย จาก Wikipedia ข้อกำหนดสองประการของตัวสร้างตัวเลขสุ่มประเภทนี้คือ:
- จากการสุ่มลำดับ k บิตแรกไม่มีอัลกอริธึมเวลาพหุนามที่สามารถทำนายบิต (k + 1) th ด้วยความน่าจะเป็นของความสำเร็จที่ดีกว่า 50%
- ในกรณีที่มีการเปิดเผยบางส่วนหรือทั้งหมดของรัฐ (หรือเดาถูกต้อง) ไม่ควรสร้างกระแสสุ่มตัวเลขก่อนการเปิดเผย นอกจากนี้หากมีการป้อนข้อมูลแบบเอนโทรปีในขณะที่ใช้งานมันเป็นไปไม่ได้ที่จะใช้ความรู้เกี่ยวกับสถานะของอินพุตเพื่อทำนายสภาวะในอนาคตของสถานะ CSPRNG
เว็บเบราเซอร์สมัยใหม่ (ด้วยความทึ่งยกเว้นของ Internet Explorer) ตอนนี้มีAPI การเข้ารหัสลับที่สามารถใช้ได้กับ JavaScript ที่มีเครื่องกำเนิดไฟฟ้าจำนวนสุ่มที่เชื่อถือได้เข้ารหัส สิ่งนี้ทำให้ง่ายสำหรับเว็บไซต์เช่นของฉันในการสร้างรหัสผ่านที่ไม่ซ้ำใครและไม่สามารถคาดเดาได้โดยขึ้นอยู่กับการรู้ว่าเมื่อใดและที่ไหน
ความยาวรหัสผ่าน
การโจมตีรหัสผ่านทั่วไปสำหรับผู้โจมตีเพื่อเข้าถึงฐานข้อมูลที่เก็บรหัสผ่านที่เข้ารหัส (แฮช) จากนั้นผู้โจมตีสามารถสร้างการทายแฮชทายด้วยอัลกอริทึมการแฮชเดียวกันและดูว่าพวกเขาได้รับการแข่งขันใด ๆ หรือไม่ นี่คือบทความที่แสดงจำนวนรหัสผ่านที่เสี่ยงต่อการถูกโจมตีดังกล่าว ตอนนี้คอมพิวเตอร์มีพลังมากพอที่ผู้โจมตีจะรู้รหัสผ่าน 100 พันล้านรหัสต่อวินาที คอมพิวเตอร์หน่วยทหารและหน่วยสืบราชการลับอาจสามารถทำตามคำสั่งของขนาดได้มากกว่า
จากมุมมองของภาคปฏิบัตินั่นหมายความว่าต้องเลือกรหัสผ่านจากกลุ่มของความเป็นไปได้ต่างๆ อักขระ 96 ตัวที่สามารถพิมพ์บนแป้นพิมพ์สามารถสร้างความเป็นไปได้สี่เท่าของความเป็นไปได้โดยใช้รหัสผ่านแปดตัวอักษร เพื่อความปลอดภัยรหัสผ่านจะต้องยาวขึ้นกว่าในอดีตที่ผ่านมา คอมพิวเตอร์จะมีประสิทธิภาพมากขึ้นในอนาคตและคุณอาจต้องการเลือกรหัสผ่านที่ยาวกว่าสิ่งที่คุณอาจต้องรู้สึกปลอดภัยในวันนี้เพื่อที่จะไม่สามารถถอดรหัสได้อย่างง่ายดายในอนาคตเช่นกัน ฉันขอแนะนำอย่างน้อยความยาว 10 สำหรับรหัสผ่านแบบสุ่มโดยใช้อักขระที่เป็นไปได้ 96 ตัว แต่การใช้ความยาว 12 หรือ 14 จะดีกว่ามากสำหรับการรักษาความปลอดภัยในอนาคต