484 / 736TRNG

True Random Number Generator

مولّد فيزيائي للأعداد العشوائية

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

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.

DOC · 001NIST SP 800-90B — Entropy sources, conditioning and health testsمواصفة DOC · 002Intel DRNG guide — RDRAND, RDSEED and CFتوثيق DOC · 003Linux kernel — Hardware random number generator interfaceتوثيق DOC · 004NIST SP 800-90C — Complete RBG constructionsمواصفة
تمت المراجعة: المصادر أولًا · ليست نصيحة استثمارية