العربية

أدوات النص واليومية · مولد كلمة المرور

وأوضح تحيز Modulo: اختيار كلمة عشوائية من قائمة دون انحراف

· كيف يعمل

كلمات المرور العشوائية التشفير

دلاء مرقمة غير متساوية بجانب مجموعة زوجية يتم إنتاجها بعد رفض الذيل
الرسم التوضيحي المتجه الأصلي ToolAcre

يوضح سبب تفضيل "طول قائمة وحدات الأرقام العشوائية" لبعض الكلمات على غيرها عندما لا يتم تقسيم النطاق بالتساوي، ومدى حجم الانحراف، وكيف يزيله أخذ عينات الرفض.

نرد عادل واختصار غير عادل - لماذا لا يكون أخذ رقم عشوائي 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 للوظيفة الصحيحة ومساعد modulo الساذج، لذلك يعزل الاختبار استراتيجية التخفيض بدلاً من إلقاء اللوم على مصدر الإنتروبيا.

ToolAcre لا يحول عمليات التحقق من التوزيع هذه إلى تنبؤ بوقت الاختراق. يقلل التحيز من التماثل، لكن ترجمة هذا التخفيض إلى تكلفة يتحملها مهاجم معين تتطلب نموذج تهديد كامل. المتطلبات الهندسية أكثر وضوحًا: يجب أن يحتوي كل فهرس مؤهل على نفس العدد من القيم الأولية المقبولة، ويمكن للتعليمات البرمجية فرض ذلك تمامًا.

أمثلة الانحراف التي تم التحقق منها في تعليقات التنفيذ والاختبارات القطعية

`secureRandomInt` يعثر على أصغر عدد بايت كامل قادر على تمثيل أعلى فهرس صالح. فهو يحسب نطاق البايت، ويطرح الباقي بعد القسمة على الحد، ويستدعي النتيجة `limit`. تنتمي القيم الموجودة أسفل هذا الحد إلى مجموعات كاملة؛ يتم تجاهل القيم عندها أو أعلى منها قبل السماح بتشغيل عملية modulo.

سحب جديد يتبع كل رفض. تحتوي الحلقة على سقف ثابت مرتفع، لذا لا يمكن للمصدر المحقون المكسور أن يعلق علامة التبويب إلى الأبد؛ بعد تكرار القيم خارج النطاق، يتم طرحها بدلاً من إرجاع إجابة متحيزة. يعد مسار الفشل هذا جزءًا من الصحة: ​​رفض مصدر مشبوه يحافظ على الوعد بأن الفهرس الذي تم إرجاعه جاء من نافذة القبول الموحدة.

البدائل - رسم ما يكفي من البتات وتجاهل القيم خارج النطاق، أو استخدام وظيفة الأعداد الصحيحة الموحدة للمكتبة

هناك تصميمات أخرى ذات أعداد صحيحة موحدة ممكنة، ولكنها ليست سلوك هذه الحزمة وبالتالي لا يتم تقديمها كخيارات ToolAcre قابلة للتبديل. يعرض المحرك مسارًا واحدًا تم تدقيقه. `secureRandomChoice` يتحقق من أن مدخلاته عبارة عن مصفوفة غير فارغة ويفوض إلى `secureRandomInt(items.length)`، مما يجعل اختيار الكلمات مستهلكًا مباشرًا لعقد الأعداد الصحيحة المحددة.

يستخدم منشئ كلمة المرور العشوائية نفس المسار للأحرف، ثم يستدعي خلطًا عشوائيًا لـ Fisher-Yates مدفوعًا بمبادلات محددة آمنة. ولا يستخدم `sort` مع مقارنة عشوائية. إن الاحتفاظ بدائية واحدة تحت العديد من الميزات يجعل مراجعة المصدر سهلة المتابعة: قم بإصلاح أو اختبار تقليل الزي الموحد مرة واحدة، ثم اتبع المتصلين به.

التصاميم البديلة تقع خارج هذه الوحدة؛ يستخدم المسار المشحون أخذ عينات الرفض

يوفر اختبار الانحدار المنضم 100 كل بايت ذيل من 200 إلى 255 ثم 42 النهائي. يستهلك الرمز الصحيح كافة 56 البايتات والإجابات المرفوضة من 42. توفر الحالة الثانية المركزة 200 و7؛ نظرًا لأن 200 modulo 100 ستكون صفرًا، فإن إرجاع 7 يثبت أنه تم رفض البايت الأول بدلاً من تقليله بهدوء.

هذا المثال العملي حتمي حسب التصميم ولا يحتوي على بيانات اعتماد. تظل وحدات بايت الإنتاج خاصة بمكالمة المتصفح ولا يتم تسجيلها. مصدر الاختبار قابل للحقن فقط حتى يمكن فرض السلوك عند الحدود؛ لا تقدم الحزمة العامة أي وضع إنتاجي يمكن أن يعيد إنتاج عبارة مرور تم إنشاؤها.

مثال عملي: منضم 100 يرفض البايت 200 ويقبل ما يلي 7

يقع الاختزال العشوائي للفاصلة العائمة وواجهات برمجة التطبيقات الموحدة الخاصة بالمكتبة وخوارزميات الخلط غير ذات الصلة خارج هذا التنفيذ. وسيتطلب تقييمها مصدرها وعقودها. يعتمد كود ToolAcre على عدد صحيح ومحدود بشكل واضح، لذا فإن إضافة استطلاع للبدائل سيؤدي إلى طمس الادعاء الضيق الذي تثبته الاختبارات فعليًا.

ولا تستنتج المقالة أيضًا أن كلمة المرور التي تم إنشاؤها بشكل موحد مناسبة لكل سياسة أو جهاز. يعالج اختيار الفهرس الموحد آلية واحدة. تظل قيود التخزين وإعادة الاستخدام والتعامل مع الحافظة والبرامج الضارة والوجهة أسئلة منفصلة حتى عندما يكون لكل عنصر في القائمة فرصة متساوية للاختيار.

الوجبات الجاهزة - يجب على منشئ عبارة المرور اختيار الكلمات بشكل موحد؛ تحقق من الملاحظات الفنية للأداة لمعرفة كيفية قيام منشئ كلمات المرور بذلك

يجب ألا يفضل منشئ عبارة المرور الإدخالات المبكرة لمجرد أن نطاقه الأولي يترك باقيًا. ToolAcre يأخذ البايتات من Web Crypto، ويرفض الذيل غير المكتمل ويقلل فقط القيم الموجودة داخل مجموعات كاملة متساوية الحجم. تفرض الاختبارات حدود الرفض والقبول، لذا لا تعتمد المطالبة على الفحص البصري للمخرجات.

عند مراجعة تعليمات برمجية مشابهة، احسب النطاق الأولي لعرض البايت المختار، وقسمه على الحد المطلوب وابحث عن الباقي المهمل. إذا لم يتم رفض أي ذيل، فاطلب دليلاً آخر على التوحيد. يمكن أن تكون قائمة الكلمات عامة ومصدر التشفير بينما يؤدي التخفيض غير المبالي إلى حدوث انحراف يمكن تجنبه.