เครื่องมือข้อความและชีวิตประจำวัน · เครื่องมือสร้างรหัสผ่าน
อธิบายอคติแบบโมดูโล่: การเลือกคำแบบสุ่มจากรายการโดยไม่บิดเบือน
· มันทำงานอย่างไร
รหัสผ่าน ความบังเอิญ การเข้ารหัส
แสดงให้เห็นว่าเหตุใด 'ความยาวของรายการโมดูโลตัวเลขสุ่ม' จึงชอบคำบางคำมากกว่าคำอื่นๆ เมื่อช่วงไม่ได้แบ่งเท่าๆ กัน ความเบ้นั้นใหญ่แค่ไหน และวิธีที่การสุ่มตัวอย่างแบบปฏิเสธกำจัดคำเหล่านั้นออกไป
การตายที่ยุติธรรมและทางลัดที่ไม่ยุติธรรม — ทำไมการสุ่มตัวเลขแบบโมดูโล 7,776 จึงไม่เหมือนกับการทอยลูกเต๋า
แหล่งที่มาที่ยุติธรรมยังคงสามารถป้อนขั้นตอนการคัดเลือกที่ไม่ยุติธรรมได้ หากโปรแกรมอ่านจำนวนเต็มและนำเศษที่เหลือหลังหารด้วยความยาวรายการทันที ดัชนีบางตัวจะได้รับค่าแหล่งที่มามากขึ้นเมื่อใดก็ตามที่ช่วงแหล่งที่มาไม่สามารถหารด้วยความยาวนั้นได้อย่างแน่ชัด ข้อบกพร่องอยู่ในขั้นตอนการลดขนาด ไม่จำเป็นต้องเป็นไบต์ ToolAcre หลีกเลี่ยงทางลัดนั้นก่อนที่จะเลือกคำ EFF ใดๆ
ลูกเต๋าทางกายภาพจะให้การเปรียบเทียบตามสัญชาตญาณเฉพาะเมื่อกลุ่มผลลัพธ์ที่สมบูรณ์แมปเท่ากัน การใช้งานเบราว์เซอร์มีช่วงดิบที่แตกต่างกัน ดังนั้นจึงคำนวณหน้าต่างการยอมรับสำหรับขอบเขตที่ร้องขอ บทความนี้กล่าวถึงกลไกที่จัดส่งแทนที่จะอ้างว่าไบต์ของเบราว์เซอร์สร้างลูกเต๋าห้าลูกอย่างแท้จริง ทั้งสองสามารถเลือกดัชนีได้ แต่ขั้นตอนและหลักฐานการตรวจสอบจะแตกต่างกัน
ที่มาของความเอนเอียง — ค่า 32 บิตไม่ได้แบ่งเท่าๆ กันออกเป็น 7,776 ที่เก็บข้อมูล ดังนั้นคำสองสามคำแรกจะได้รับโอกาสพิเศษหนึ่งครั้ง
สำหรับหนึ่งไบต์และขอบเขตของ 100 ช่วงดิบจะมี 256 ค่าที่เป็นไปได้ 100 พอดีสองกลุ่ม โดยเหลือค่า 56 ไว้ การลดทุกไบต์แบบโมดูโล 100 ให้ดัชนีเป็นศูนย์ถึง 55 สามภาพล่วงหน้าแต่ละภาพ ในขณะที่ดัชนี 56 ถึง 99 ได้รับเพียงสองภาพเท่านั้น ไบต์อินพุตอาจสม่ำเสมอ แต่การกระจายบัคเก็ตที่เลือกไม่เท่ากัน
ความคิดเห็นในการใช้งานยังได้รับปัญหาช่วงจำกัดที่สอดคล้องกันสำหรับรายการ 7,776 เมื่อไบต์สองไบต์ลดลงโดยตรง ตัวเลขเหล่านั้นมาจากช่วงจริงที่ระบุในแหล่งที่มา ไม่ใช่จากอัตราการโจมตีที่สมมติขึ้น คำถามสำคัญในการทบทวนคือมีการใช้ค่าที่เหลือหรือไม่ ไม่ใช่ว่าความเบ้จะดูเล็กน้อยในวลีที่สร้างขึ้นจำนวนหนึ่งหรือไม่
ผลกระทบนั้นใหญ่แค่ไหน — เล็กน้อยสำหรับช่วงสุ่มขนาดใหญ่ แต่ไม่ใช่ศูนย์ และเหตุใดโค้ดเข้ารหัสจึงปฏิเสธที่จะยอมรับ
การทดสอบที่กำหนดทำให้สามารถสังเกตหางที่ไม่สม่ำเสมอได้ ขอบเขต 3, 5, 7, 100 และ 7,776 มีเจตนาที่น่าอึดอัดใจ ในขณะที่ขอบเขตยกกำลังสองแสดงให้เห็นถึงกรณีที่ไม่มีการปฏิเสธ การควบคุมทางสถิติอื่นใช้แหล่งที่มาของ Web Crypto เดียวกันสำหรับฟังก์ชันที่ถูกต้องและตัวช่วยแบบโมดูโลที่ไร้เดียงสา ดังนั้นการทดสอบจึงแยกกลยุทธ์การลดแทนที่จะโทษแหล่งที่มาของเอนโทรปี
ToolAcre จะไม่แปลงการตรวจสอบการกระจายเหล่านั้นเป็นการทำนายเวลาแคร็กไทม์ อคติลดความสม่ำเสมอ แต่การแปลความหมายว่าการลดต้นทุนของผู้โจมตีรายใดรายหนึ่งนั้นจำเป็นต้องมีโมเดลภัยคุกคามที่สมบูรณ์ ข้อกำหนดทางวิศวกรรมนั้นสะอาดกว่า: ดัชนีที่มีสิทธิ์ทุกรายการควรมีจำนวนค่าดิบที่ยอมรับเท่ากัน และโค้ดสามารถบังคับใช้ได้อย่างแน่นอน
ตัวอย่างที่บิดเบือนที่ได้รับการตรวจสอบแล้วในความคิดเห็นในการใช้งานและการทดสอบเชิงกำหนด
`secureRandomInt` ค้นหาจำนวนไบต์ทั้งหมดที่เล็กที่สุดที่สามารถแสดงดัชนีที่ถูกต้องสูงสุดได้ โดยจะคำนวณช่วงไบต์ ลบส่วนที่เหลือหลังการหารด้วยขอบเขต และเรียกผลลัพธ์ `limit` ค่าที่ต่ำกว่าขีดจำกัดนั้นเป็นของกลุ่มที่สมบูรณ์ ค่าที่สูงกว่าหรือสูงกว่าจะถูกละทิ้งก่อนที่การดำเนินการแบบโมดูโลจะได้รับอนุญาตให้ทำงาน
การจับรางวัลครั้งใหม่จะตามมาด้วยการปฏิเสธแต่ละครั้ง ห่วงมีเพดานคงที่สูง ดังนั้นแหล่งฉีดที่แตกหักจึงไม่สามารถแขวนแถบไว้ได้ตลอดไป หลังจากค่าที่อยู่นอกช่วงซ้ำแล้วซ้ำอีก มันจะพ่นแทนที่จะส่งกลับคำตอบเอนเอียง เส้นทางความล้มเหลวนี้เป็นส่วนหนึ่งของความถูกต้อง: การปฏิเสธแหล่งที่มาที่น่าสงสัยจะรักษาสัญญาที่ว่าดัชนีที่ส่งคืนมาจากหน้าต่างการยอมรับที่สม่ำเสมอ
ทางเลือกอื่น - การวาดบิตให้เพียงพอและละทิ้งค่าที่อยู่นอกช่วง หรือใช้ฟังก์ชันจำนวนเต็มสม่ำเสมอของไลบรารี
การออกแบบจำนวนเต็มสม่ำเสมออื่นๆ เป็นไปได้ แต่การออกแบบเหล่านั้นไม่ใช่ลักษณะการทำงานของแพ็คเกจนี้ และดังนั้นจึงไม่นำเสนอเป็นตัวเลือก ToolAcre ที่สามารถใช้แทนกันได้ เครื่องยนต์เปิดเผยเส้นทางที่ตรวจสอบแล้วหนึ่งเส้นทาง `secureRandomChoice` ตรวจสอบว่าอินพุตเป็นอาร์เรย์ที่ไม่ว่างเปล่าและมอบหมายให้ `secureRandomInt(items.length)` ทำให้การเลือกคำเป็นผู้บริโภคโดยตรงของสัญญาจำนวนเต็มที่มีขอบเขต
ตัวสร้างรหัสผ่านแบบสุ่มใช้เส้นทางเดียวกันสำหรับอักขระ จากนั้นเรียกใช้การสับเปลี่ยนของ Fisher–Yates ซึ่งขับเคลื่อนโดยการแลกเปลี่ยนที่มีขอบเขตที่ปลอดภัย มันไม่ได้ใช้ `sort` กับตัวเปรียบเทียบแบบสุ่ม การเก็บคุณสมบัติดั้งเดิมไว้ข้างใต้คุณสมบัติหลายอย่างทำให้การตรวจสอบแหล่งที่มาทำได้ง่าย: แก้ไขหรือลดขนาดชุดทดสอบหนึ่งครั้ง จากนั้นติดตามผู้เรียก
การออกแบบทางเลือกอยู่นอกโมดูลนี้ เส้นทางที่จัดส่งใช้การสุ่มตัวอย่างการปฏิเสธ
การทดสอบการถดถอยที่ถูกผูกไว้-100 จัดเตรียมทุกไบต์ส่วนท้ายตั้งแต่ 200 ถึง 255 และสุดท้าย 42 รหัสที่ถูกต้องใช้ 56 ไบต์และคำตอบที่ถูกปฏิเสธทั้งหมดจาก 42 กรณีโฟกัสที่สองให้ 200 และ 7; เนื่องจาก 200 modulo 100 จะเป็นศูนย์ การส่งคืน 7 พิสูจน์ว่าไบต์แรกถูกปฏิเสธแทนที่จะลดลงอย่างเงียบๆ
ตัวอย่างการทำงานนี้ถูกกำหนดโดยการออกแบบและไม่มีข้อมูลรับรอง ไบต์การผลิตยังคงเป็นส่วนตัวสำหรับการเรียกของเบราว์เซอร์และไม่ได้บันทึกไว้ แหล่งทดสอบสามารถฉีดได้เท่านั้น ดังนั้นพฤติกรรมจึงสามารถบังคับได้ที่ขอบเขต แพ็คเกจสาธารณะไม่มีโหมดเริ่มต้นที่ใช้งานจริงที่สามารถสร้างข้อความรหัสผ่านที่สร้างขึ้นใหม่ได้
ตัวอย่างการทำงาน: ขอบเขต 100 ปฏิเสธไบต์ 200 และยอมรับ 7 ต่อไปนี้
การลดลงแบบสุ่มจุดทศนิยม API แบบเดียวกันเฉพาะไลบรารี และอัลกอริธึมการสับเปลี่ยนที่ไม่เกี่ยวข้องอยู่นอกเหนือการใช้งานนี้ การประเมินจะต้องอาศัยแหล่งที่มาและสัญญา โค้ดของ ToolAcre เป็นแบบจำนวนเต็มและมีขอบเขตอย่างชัดเจน ดังนั้นการเพิ่มแบบสำรวจทางเลือกอื่นๆ อาจทำให้คำกล่าวอ้างแคบๆ ที่การทดสอบพิสูจน์ได้จริงไม่ชัดเจน
บทความนี้ไม่ได้สรุปว่ารหัสผ่านที่สร้างขึ้นอย่างสม่ำเสมอนั้นเหมาะสำหรับทุกนโยบายหรืออุปกรณ์ การเลือกดัชนีแบบเดียวกันระบุถึงกลไกเดียว การจัดเก็บ การใช้ซ้ำ การจัดการคลิปบอร์ด มัลแวร์ และข้อจำกัดด้านปลายทางยังคงเป็นคำถามที่แยกจากกัน แม้ว่าองค์ประกอบรายการทุกรายการจะมีโอกาสเลือกเท่ากันก็ตาม
Takeaway — เครื่องมือสร้างข้อความรหัสผ่านจะต้องเลือกคำที่สม่ำเสมอ ตรวจสอบบันทึกทางเทคนิคของเครื่องมือเพื่อดูว่าเครื่องมือสร้างรหัสผ่านทำงานอย่างไร
ตัวสร้างข้อความรหัสผ่านจะต้องไม่สนับสนุนการป้อนข้อมูลในช่วงต้นเพียงเพราะช่วงข้อมูลดิบเหลือเศษไว้ ToolAcre รับไบต์จาก Web Crypto ปฏิเสธส่วนท้ายที่ไม่สมบูรณ์ และลดเฉพาะค่าภายในกลุ่มที่มีขนาดเท่ากันทั้งหมด การทดสอบบังคับให้ทั้งขอบเขตการปฏิเสธและการยอมรับ ดังนั้นการกล่าวอ้างจึงไม่ขึ้นอยู่กับการตรวจสอบผลลัพธ์ด้วยสายตา
เมื่อตรวจสอบโค้ดที่คล้ายกัน ให้คำนวณช่วงดิบสำหรับความกว้างไบต์ที่เลือก หารด้วยขอบเขตที่ร้องขอ และมองหาส่วนที่เหลือที่ถูกละทิ้ง หากไม่มีหางใดถูกปฏิเสธ ให้ขอหลักฐานยืนยันความสม่ำเสมออีกครั้ง รายการคำศัพท์สามารถเปิดเผยต่อสาธารณะและเข้ารหัสแหล่งที่มาได้ ในขณะที่การลดลงอย่างไม่ระมัดระวังยังคงทำให้เกิดความเบ้ที่หลีกเลี่ยงได้