العربية

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

PRNG مقابل CSPRNG: من أين تأتي الأرقام العشوائية لمتصفحك فعليًا

· خلفية

كلمات المرور تشفير الويب csprng

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

يشرح الفرق بين المولدات العشوائية الزائفة والمولدات الآمنة تشفيرًا، وكيف تجمع أنظمة التشغيل الإنتروبيا من أحداث الأجهزة، وكيف تصل هذه العشوائية إلى صفحة ويب من خلال Web Crypto API.

أجهزة الكمبيوتر حتمية، فمن أين تأتي العشوائية؟ - اللغز الأساسي وراء كل مولد

يبدأ تشغيل JavaScript في ToolAcre عند حدود API. يمكنه طلب بايت من `crypto.getRandomValues`، ومراقبة ما إذا كان هذا الاستدعاء ناجحًا واستخدام المصفوفة التي تم إرجاعها. لا يمكنه فحص كل حدث فعلي أو تجمع kernel أو مكون الأجهزة الذي قد يستخدمه نظام أساسي معين تحته. وبالتالي فإن قصة أصل العشوائية في المصنف تتجاوز الأدلة المحلية.

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

يبدأ المستودع في المتصفح API؛ ولا يقوم بتدقيق مصادر الإنتروبيا الفيزيائية

غالبًا ما يتم وصف المولدات العشوائية الزائفة بالبذور والحالة القابلة للتكرار، ولكن محركات JavaScript ليست مطلوبة بواسطة هذا المستودع لمشاركة تصميم Math.random واحد. ToolAcre يتجنب الغموض عن طريق منع API بالكامل في إنتاج بيانات الاعتماد. عمليات فحص المصدر تفرض هذا الضمان السلبي.

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

Math.random محظور هنا، دون المطالبة بتصميم عالمي PRNG

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

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

خاصية التشفير التي تم التحقق منها هي مصدر تشفير الويب المطلوب ومسار الرفض

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

إن هذا الإغفال يعزز المطالبة الحالية بدلا من إضعافها. يمكن لـ ToolAcre أن يقول بالضبط ما يطلب من المتصفح القيام به وكيف يتعامل مع وحدات البايت. ليس من الضروري التظاهر بأن JavaScript يمكنه تدقيق سلسلة الإنتروبيا الكاملة لتبرير رفض Math.random.

تفاصيل أحداث الأجهزة وتجمع نظام التشغيل هي مطالبات تنفيذية لم يثبتها هذا المصدر

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

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

من getRandomValues ​​إلى SecureRandomInt: المسار المرئي من المتصفح إلى الفهرس

بالنسبة لمجموعة 7,776 المكونة من كلمات، تحدد الدالة بايتات كافية لتمثيل كل فهرس صالح. فهو يشكل عددًا صحيحًا، ويرفض أي قيمة عند الحد المحسوب أو أعلى منه، ولا يُرجع الباقي إلا بعد القبول. يستخدم `secureRandomChoice` هذه النتيجة لقراءة كلمة واحدة من المصفوفة المؤهلة.

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

مثال عملي: تتبع البايتات من خلال أخذ عينات الرفض إلى فهرس قائمة واحد

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

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

الفكرة - يقوم مولد كلمات المرور بطلب مولد التشفير الخاص بالمتصفح، وهو المصدر الصحيح للسر

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

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