RAND(7SSL)

الاسم
RAND - مولد الأرقام العشوائية في OpenSSL

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

يأتي OpenSSL مع تطبيق مبدئي لواجهة برمجة تطبيقات RAND والذي يعتمد على نموذج مولد البتات العشوائية الحتمي (DRBG) كما هو موصوف في [NIST SP 800-90A Rev. 1]. سيعمل المولد العشوائي المبدئي على تهيئة نفسه آليًا عند أول استخدام وسيكون وظيفيًا بالكامل دون الحاجة إلى تهيئته ('بذره') صراحة. يبذر ويعيد بذر نفسه آليًا باستخدام مصادر عشوائية موثوقة يوفرها نظام التشغيل.

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

بالنسبة للقيم التي يجب أن تظل سرية، يمكنك استخدام RAND_priv_bytes(3) بدلاً من ذلك. لا توفر هذه الطريقة عشوائية 'أفضل'، فهي تستخدم نفس النوع من CSPRNG. القصد من استخدام CSPRNG مخصص حصريًا للقيم الخاصة هو ألا يكون أي من مخرجاته مرئيًا للمهاجم (مثل استخدامه كقيمة ملح)، وذلك للكشف عن أقل قدر ممكن من المعلومات حول حالته الداخلية، وأن اختراق مثيل CSPRNG 'العام' لن يؤثر على سرية هذه القيم الخاصة.

في الحالة النادرة التي لا يفي فيها التطبيق المبدئي بمتطلباتك الخاصة، يمكن استبدال المكونات الداخلية المبدئية لـ RAND بكائنات EVP_RAND(3) الخاصة بك.

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

أخيرًا، من الممكن لمزود أن يتجاوز الإعداد المبدئي لـ RAND لـ RAND_bytes(3) والوظائف المرتبطة به. يمكن تحديد مزود كمصدر عشوائي واحد عبر دالة RAND_set1_random_provider(3) أو عبر التهيئة باستخدام خيار random_provider في config(5). بمجرد التحديد، سيُستخدم المزود المعين مباشرة عند استدعاء عائلة وظائف RAND_bytes(3).

الإعداد المبدئي
تعتمد طريقة RAND المبدئية في OpenSSL على فئات مولد البتات العشوائية الحتمي (DRBG) من EVP_RAND. DRBG هو نوع معين من مولد الأرقام شبه العشوائي الآمن تشفيريًا (CSPRNG)، والموصوف في [NIST SP 800-90A Rev. 1].

انظر أيضًا
RAND_bytes(3)، RAND_priv_bytes(3)، EVP_RAND(3)، RAND_get0_primary(3)، config(5)، EVP_RAND(7)، RAND_set1_random_provider(3).

حقوق النسخ
حقوق النشر 2018-2025 مؤلفو مشروع OpenSSL. جميع الحقوق محفوظة.

مرخص بموجب رخصة Apache 2.0 (المشار إليها فيما يلي بـ ”الرخصة“). لا يجوز لك استخدام هذا الملف إلا وفقًا لشروط الرخصة. يمكنك الحصول على نسخة منها في الملف LICENSE الموجود في حزمة التوزيع المصدرية أو على الرابط <https://www.openssl.org/source/license.html>.

ترجمة
تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>

هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 (https://www.gnu.org/licenses/gpl-3.0.html) أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.

إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.