เครื่องมือรหัสผ่าน กลับไปยังตัวสร้าง

ศูนย์ความน่าเชื่อถือ

วิธีการรักษาความปลอดภัยและการสร้างรหัสผ่าน

รายละเอียดทางเทคนิค ขอบเขตภัยคุกคาม การจัดการความสุ่ม และการตรวจสอบที่สามารถทำซ้ำได้สำหรับเครื่องมือสร้างรหัสผ่าน

แหล่งที่มาของความสุ่ม

เครื่องมือสร้างรหัสผ่านจะขอค่าที่มีความปลอดภัยเชิงเข้ารหัสจาก crypto.getRandomValues() โดยจะไม่ใช้ Math.random() ซึ่งเอาต์พุตไม่ได้ถูกระบุสำหรับการใช้งานเชิงเข้ารหัส ข้อกำหนด Web Crypto อธิบาย CSPRNG ที่ถูกป้อนด้วยเอนโทรปีคุณภาพสูง ซึ่งโดยทั่วไปมาจากระบบปฏิบัติการ เบราว์เซอร์และระบบปฏิบัติการจะเป็นผู้เลือกผู้ให้บริการพื้นฐาน PwdGen ไม่ได้อ้างว่าทุกการเรียกจะอ่านแหล่งเอนโทรปีฮาร์ดแวร์ของ CPU โดยตรง

ดัชนีสุ่มใช้การสุ่มตัวอย่างแบบปฏิเสธ ค่าที่สูงกว่าผลคูณเต็มที่มากที่สุดของขนาดตัวอักษรจะถูกทิ้งก่อนการดำเนินการ modulo เพื่อหลีกเลี่ยงความเอนเอียงที่การแมป randomValue % alphabetSize โดยตรงจะนำมา

ความครอบคลุมของตัวอักษรและการสับเปลี่ยน

เครื่องมือสร้างรหัสผ่านจะเลือกตัวอักษรหนึ่งตัวจากทุกแหล่งที่เปิดใช้งานก่อน จากนั้นจะเติมตำแหน่งที่เหลือจากกลุ่มรวม และทำการสับเปลี่ยนแบบ Fisher–Yates ที่ขับเคลื่อนด้วยการเข้ารหัส ตัวกรองสำหรับตัวอักษรที่คล้ายกันและคลุมเครือจะถูกนำไปใช้ก่อนการเลือก

การไหลของข้อมูล

ค่าที่สร้างขึ้นจะมีอยู่ในหน่วยความจำของหน้าเว็บปัจจุบันและโหนดผลลัพธ์ที่มองเห็นเท่านั้น ค่าเหล่านี้จะไม่ถูกเขียนไปยัง URL, คุกกี้, พื้นที่จัดเก็บในเครื่อง, พื้นที่จัดเก็บเซสชัน, บันทึกเซิร์ฟเวอร์ หรืออาร์ติแฟกต์ของการสร้าง การตั้งค่าภาษาเป็นเพียงการตั้งค่าแอปพลิเคชันเดียวที่ถูกจัดเก็บในพื้นที่จัดเก็บในเครื่องและคุกกี้ที่ใช้งานได้

แบบจำลองภัยคุกคามและข้อจำกัด

การออกแบบนี้ป้องกันไม่ให้เว็บไซต์รวบรวมรหัสผ่านที่สร้างขึ้นโดยเจตนา ไม่สามารถรับประกันความสมบูรณ์ของอุปกรณ์ผู้ใช้, ส่วนขยายเบราว์เซอร์, คลิปบอร์ด, ระบบปฏิบัติการ หรือบริการปลายทาง นอกจากนี้ยังไม่สามารถทำให้รหัสผ่านที่ใช้ซ้ำปลอดภัย หรือป้องกันไม่ให้ผู้ใช้ป้อนรหัสผ่านในหน้าเว็บฟิชชิ่ง

การตรวจสอบที่สามารถทำซ้ำได้

เบราว์เซอร์, API สาธารณะ, และ pwdgen-cli@1.0.0 ใช้แกนหลักการสุ่มตัวอย่างแบบปฏิเสธของ Web Crypto เดียวกัน การทดสอบอัตโนมัติจะตรวจสอบความครอบคลุมของตัวอักษรที่เปิดใช้งาน, ตัวอักษรที่ถูกยกเว้น, การกำหนดค่าที่ไม่ถูกต้อง, และการไม่มี Math.random() การทดสอบเบราว์เซอร์จะตรวจสอบว่าการสร้างใหม่และการคัดลอกไม่ส่งคำขอเครือข่ายที่มีรหัสผ่าน ซอร์สโค้ดสาธารณะและผลลัพธ์ CI ถูกเชื่อมโยงไว้ด้านบน นี่คือหลักฐานทางวิศวกรรมที่สามารถทำซ้ำได้ ไม่ใช่การอ้างสิทธิ์ในการตรวจสอบความปลอดภัยโดยอิสระ

สำหรับคำอธิบายเชิงโปรโตคอลที่ลึกซึ้งยิ่งขึ้น โปรดอ่าน เอกสารไวท์เปเปอร์การสร้างรหัสผ่านฝั่งไคลเอ็นต์

แหล่งที่มา