True Random Number Generator، واختصاره TRNG، يحصل على مدخلات جديدة غير متوقعة عبر قياس عملية فيزيائية. وهو يختلف بذلك عن مولّد يكتفي بحساب القيم التالية من حالة مخزنة. ويمكن أن يعملا معًا عمليًا. لكن كلمة «true» ليست ضمانًا للجودة: فقد يكون المصدر الفيزيائي سيئ التصميم أو معطّلًا أيضًا.
يمكن لدائرة قياس تقلبات كهربائية صغيرة وتحويلها إلى أرقام. المهم هو مقدار ما يعجز المهاجم عن توقعه من نتيجة القياس. لا يكفي إنتاج كثير من البيانات بسرعة. لذلك يقيّم معيار NIST SP 800-90B مصدر الضجيج المحدد، وطريقة أخذ العينات، وأي معالجة، وفحوص التشغيل. تسمية الظاهرة الفيزيائية لا تحل محل هذا التقييم. [1]
قد يعطي المصدر أصفارًا أكثر من الآحاد. تساعد المعالجة المسماة conditioning على تقليل هذا الانحياز وتجميع الإنتروبيا المتاحة، أي عدم اليقين من منظور المهاجم، في خرج أقصر. لكنها لا تخلق عدم يقين غير موجود. لذلك يربط معيار NIST SP 800-90B مقدار الإنتروبيا المحتسب في الخرج بالمدخلات وطريقة المعالجة. وحتى الهاش، وهو بصمة تُحسب من البيانات، لا يثبت أن القيم الأصلية كانت غير قابلة للتوقع: فمن يعرف المدخل يستطيع حساب البصمة نفسها مجددًا. [1]
إذا استمر المصدر في إعادة القيمة نفسها، يجب ألا يغفل الجهاز عن ذلك. يستخدم معيار NIST SP 800-90B اختبار Repetition Count Test لمراقبة التكرار واختبار Adaptive Proportion Test لمراقبة التواتر غير المعتاد. تبحث هذه الفحوص عن أعطال معينة، ولا تكشف تلقائيًا كل هجوم أو خلل. عند اكتشاف عطل مستمر، يجب ألا يواصل المصدر إخراج البيانات كما لو كان يعمل بصورة طبيعية. [1]
وجود TRNG وحده لا يثبت أمان المحفظة. تهم أيضًا طريقة استخدام الإصدار المحدد لبياناته والتعامل مع الأخطاء. لذلك ينظر معيار NIST SP 800-90C إلى المصادر مع المولّدات التي تليها. تقييم مكوّن واحد ليس تقييمًا للمحفظة بأكملها. وحتى مصدر عشوائية ممتاز لا يحمي نسخة احتياطية تكشفها لاحقًا. [4]
يكشف التسجيل الطويل لجهاز يعمل باستمرار عن جانب من سلوكه يختلف عما تكشفه إعادة إيقافه وتشغيله. لذلك يتضمن معيار NIST SP 800-90B اختبارات لإعادة التشغيل أيضًا. يجب أن يطابق التقييم المصدر المحدد وظروف تشغيله. ولا يمكن تعميم نتيجة عينة واحدة تلقائيًا على جميع الأجهزة أو البيئات. وقد يستلزم تغيير البرنامج الثابت، أي البرنامج داخل الجهاز، تقييمًا جديدًا كذلك. [1]
ستجد في الوثائق التقنية تعليمتَي RDRAND وRDSEED. تشرحهما Intel في دليل DRNG، مولّد الأرقام العشوائية العتادي. تعطي RDRAND نتائج مولّد حتمي يحسب قيمًا لاحقة انطلاقًا من حالة داخلية. أما RDSEED فتوفر إنتروبيا معالجة للتهيئة، أي لإنشاء الحالة الابتدائية للمولّد. قد يبدأ المساران بمصدر فيزيائي، لكن ذلك لا يعني أن أيًا منهما يتيح قراءة الضجيج غير المعالج مباشرة. [2]
قد لا تكون لدى المعالج نتيجة جاهزة لكل طلب. لذلك تطلب Intel فحص علم الحالة CF مع RDRAND وRDSEED: القيمة 1 تعني أن النتيجة متاحة، والقيمة 0 تعني أنها غير متاحة. ولا يكفي النظر إلى وجود صفر عددي في سجل الوجهة، وهو موضع تخزين صغير داخل المعالج. يجب قراءة علم النجاح. فدعم المعالج لتعليمة لا يعني نجاح طلب معين. [2]
في Linux تتيح واجهة hw_random قراءة بيانات مصدر عتادي عبر /dev/hwrng بطريقة تشبه قراءة ملف. لكن وثائقها تنبه بوضوح إلى أن الواجهة نفسها لا تُجري اختبارات جودة على البيانات. لذلك قد تعيد أجهزة معطلة أو معدلة بيانات غير صالحة، ويتمكن التطبيق مع ذلك من قراءتها. نجاح القراءة لا يثبت كفاية الإنتروبيا. يجب تقييم المصدر وطريقة تعامل البرنامج مع مخرجاته معًا. [3]
للحصول على صورة أوضح، اقرأ هذا المدخل مع Cryptographic Entropy, Random Number Generator, CSPRNG, Entropy Mixing. تشير إلى هذا المدخل أيضًا Entropy Mixing.