/dev/random

upright=1.5|تصغير|تفريغ سداسي عشري لـ 256 بايت من /dev/urandom

في أنظمة التشغيل الشبيهة بـيونكس، يُعدّ ***' و***' ملفات خاصة تعمل كـمولد أرقام زائفة عشوائية آمن تشفيريًا (CSPRNG). يتم تزويدها بـالإنتروبيا (قيم عشوائية) الناتجة عن الضوضاء البيئية، التي يتم جمعها من برامج تشغيل الأجهزة ومصادر أخرى.

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

ظهر هذا الملف الخاص لأول مرة في نظام لينكس في عام 1994م، وتم اعتماده سريعًا من قِبل أنظمة التشغيل الأخرى الشبيهة بيونكس.

## لنيكس
upright=1.5|تصغير|اختبار Rngtest لتجمع /dev/random
توفر نواة لينكس ملفات الأجهزة المنفصلة  و. ومنذ إصدار النواة 5.6 في عام 2020م، أصبح  يحظر فقط إذا لم يتم تهيئة مولد الأرقام الآمن تشفيريًا (CSPRNG). وبمجرد التهيئة، يعمل كل من  و بنفس الطريقة.

في أكتوبر 2016، مع إصدار نسخة نواة لينكس 4.8، تم تبديل تنفيذ  في النواة إلى استخدام مولد أرقام زائفة عشوائية آمن تشفيريًا (CPRNG) تعتمد على ChaCha20، المطور بواسطة ثيودور تسو، استنادًا إلى الشيفرة المتدفقة ChaCha20 التي طورها دانيال ج. بيرنشتاين.

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

### الخوارزمية الأصلية
تم تنفيذ توليد الأرقام العشوائية في مساحة النواة للنظام لأول مرة لنظام لينكس في عام 1994 من قبل ثيودور تسو.
استخدم التنفيذ الدوال التجزئة المشفرة بدلاً من الشفرات، لتجنب قيود تصدير التشفير التي كانت سارية عند تصميم المولد. تم تصميم التنفيذ أيضًا مع افتراض أن أي دالة تجزئة أو شفرة قد تُكتشف ضعيفة في النهاية، وبالتالي فإن التصميم متين في مواجهة أي من هذه نقاط الضعف. لا يُعتبر التعافي السريع من اختراق البركة مطلبًا، لأن متطلبات اختراق البركة كافية لهجمات أسهل وأكثر مباشرة على أجزاء أخرى غير مرتبطة بنظام التشغيل.
في تنفيذ تسو، يحتفظ المولد بتقدير لعدد البتات من الضوضاء في بركة الانتروبيا. من هذه البركة يتم إنشاء الأرقام العشوائية. عند القراءة، سيعيد جهاز  فقط البايتات العشوائية ضمن عدد البتات المقدر من الضوضاء في بركة الانتروبيا. عندما تكون بركة الانتروبيا فارغة، ستتوقف القراءات من  حتى يتم جمع المزيد من الضوضاء البيئية. الهدف هو العمل كمولد أرقام عشوائية آمن تشفيرياً، مع تسليم مخرجات بأكبر قدر ممكن من الانتروبيا. يُقترح من قبل المؤلفين للاستخدام في إنشاء المفاتيح التشفيرية للحماية عالية القيمة أو طويلة المدى.
الجهاز المقابل لـ  هو  ("غير محدود"/مصدر عشوائي غير محجب) والذي يعيد استخدام البركة الداخلية لإنتاج المزيد من البتات شبه العشوائية. هذا يعني أن الاستدعاء لن يتوقف، ولكن المخرجات قد تحتوي على انتروبيا أقل من القراءة المقابلة من . بينما لا يزال  مصممًا كمولد أرقام عشوائية مناسب لمعظم الأغراض التشفيرية، يلاحظ مؤلفو صفحة المساعدة أنه من الناحية النظرية، قد يوجد هجوم غير منشور بعد على الخوارزمية المستخدمة بواسطة ، وأن المستخدمين المهتمين بمثل هذا الهجوم يجب أن يستخدموا  بدلاً من ذلك. ومع ذلك، من غير المرجح أن يظهر مثل هذا الهجوم، لأنه بمجرد أن تصبح بركة الانتروبيا غير قابلة للتوقع، فإنها لا تسرب الأمان بعدد أقل من البتات.
من الممكن أيضًا الكتابة إلى . هذا يسمح لأي مستخدم بدمج البيانات العشوائية في البركة. البيانات غير العشوائية غير ضارة، لأن المستخدم المميز فقط هو من يمكنه إصدار ioctl اللازم لزيادة تقدير الانتروبيا.
الكمية الحالية من الانتروبيا وحجم بركة الانتروبيا في نواة لينكس، والتي تقاس بالبتات، متاحة في  ويمكن عرضها بالأمر  و على التوالي.

## مراجع

تصنيف:تكنولوجيا نظام ملفات يونكس
تصنيف:توليد الأعداد العشوائية