SSL_CTX_SET_TMP_DH_CALLBACK(3SSL)

الاسم
SSL_CTX_set_dh_auto, SSL_set_dh_auto, SSL_CTX_set0_tmp_dh_pkey, SSL_set0_tmp_dh_pkey, SSL_CTX_set_tmp_dh_callback, SSL_CTX_set_tmp_dh, SSL_set_tmp_dh_callback, SSL_set_tmp_dh - معالجة مفاتيح DH لتبادل المفاتيح المؤقت

موجز
 #include <openssl/ssl.h>

 long SSL_CTX_set_dh_auto(SSL_CTX *ctx, int onoff);
 long SSL_set_dh_auto(SSL *s, int onoff);
 int SSL_CTX_set0_tmp_dh_pkey(SSL_CTX *ctx, EVP_PKEY *dhpkey);
 int SSL_set0_tmp_dh_pkey(SSL *s, EVP_PKEY *dhpkey);

الدوال التالية أصبحت مهجورة منذ OpenSSL 3.0، ويمكن إخفاؤها تماماً عن طريق تعريف OPENSSL_API_COMPAT بقيمة إصدار مناسبة، انظر openssl_user_macros(7):

 void SSL_CTX_set_tmp_dh_callback(SSL_CTX *ctx,
                                  DH *(*tmp_dh_callback)(SSL *ssl, int is_export,
                                                         int keylength));
 long SSL_CTX_set_tmp_dh(SSL_CTX *ctx, DH *dh);

 void SSL_set_tmp_dh_callback(SSL *ctx,
                              DH *(*tmp_dh_callback)(SSL *ssl, int is_export,
                                                     int keylength));
 long SSL_set_tmp_dh(SSL *ssl, DH *dh);

الوصف
الدوال الموصوفة في هذه الصفحة ذات صلة بالخوادم فقط.

قد تستخدم بعض مجموعات المُعمِّيات تبادل مفاتيح Diffie-Hellman (DH) المؤقت. في هذه الحالات، تُفاوض بيانات الجلسة باستخدام مفتاح DH المؤقت/الوقتي، ويُستخدم المفتاح المُقدم والمُصدق من سلسلة الشهادة فقط للتوقيع. تستخدم المُعمِّيات المجهولة (بدون مفتاح خادم دائم) أيضًا مفاتيح DH مؤقتة.

يُحقق استخدام تبادل مفاتيح DH المؤقت سرية أمامية حيث لا يمكن فك تعمية الاتصال إلا عند معرفة مفتاح DH. بتوليد مفتاح DH وقتي داخل تطبيق الخادم يُفقد عند مغادرة التطبيق، يصبح من المستحيل على المهاجم فك تعمية الجلسات السابقة، حتى لو حصل على المفتاح العادي (المُصدق)، لأن هذا المفتاح استُخدم فقط للتوقيع.

لأداء تبادل مفتاح DH، يجب على الخادم استخدام مجموعة DH (معاملات DH) وتوليد مفتاح DH. سيُولد الخادم دائمًا مفتاح DH جديد أثناء المفاوضة.

نظرًا لأن توليد معاملات DH مستهلك للوقت للغاية، لا ينبغي للتطبيق توليد المعاملات بشكل فوري. يمكن إعادة استخدام معاملات DH، حيث يُولد المفتاح الفعلي حديثًا أثناء المفاوضة.

عادةً، ينبغي للتطبيقات استخدام معاملات DH المعروفة التي لها دعم مدمج في OpenSSL. تُهيئ الكليّات SSL_CTX_set_dh_auto() و SSL_set_dh_auto() OpenSSL لاستخدام معاملات DH المدمجة المبدئية لكائنات SSL_CTX و SSL على التوالي. يُشغّل تمرير قيمة 2 أو 1 في المعامل onoff هذه الميزة. إذا ضُبط المعامل onoff على 2، فسيُجبر حجم مفتاح DH على 1024 إذا كان مستوى أمان SSL_CTX أو SSL SSL_CTX_set_security_level(3) هو 0 أو 1. يُطفئ تمرير قيمة 0 هذه الميزة. الإعداد المبدئي هو إيقاف التشغيل.

إذا شُغّلت معاملات DH "الآلية"، فستُختار المعاملات لتكون متسقة مع حجم المفتاح المرتبط بشهادة الخادم. إذا لم تكن هناك شهادة (مثلًا لمجموعات مُعمِّيات PSK)، فستكون متسقة مع حجم مفتاح المُعمِّي التناظري المُفاوَض.

قد تُوفر التطبيقات معاملات DH الخاصة بها بدلاً من استخدام القيم المدمجة. هذا الأسلوب غير مُشجَّع، وينبغي للتطبيقات تفضيل استخدام دعم المعاملات المدمج الموصوف أعلاه. ينبغي للتطبيقات الراغبة في توفير معاملات DH الخاصة بها استدعاء SSL_CTX_set0_tmp_dh_pkey() أو SSL_set0_tmp_dh_pkey() لتوفير المعاملات لكائن SSL_CTX أو SSL على التوالي. ينبغي توفير المعاملات في الوسيط dhpkey كـ EVP_PKEY يحتوي على معاملات DH. تُنقل ملكية قيمة dhpkey إلى كائن SSL_CTX أو SSL نتيجة لهذا الاستدعاء، ولذا لا ينبغي للمستدعي تحريرها إذا كان استدعاء الدالة ناجحًا.

تفعل الكليّات المُهملة SSL_CTX_set_tmp_dh() و SSL_set_tmp_dh() نفس الشيء مثل SSL_CTX_set0_tmp_dh_pkey() و SSL_set0_tmp_dh_pkey() باستثناء أن معاملات DH تُوفر في كائن DH بدلاً من ذلك في الوسيط dh، وتُحتفظ ملكية كائن DH من قبل التطبيق. ينبغي للتطبيقات استخدام المعاملات "الآلية" بدلاً من ذلك، أو استدعاء SSL_CTX_set0_tmp_dh_pkey() أو SSL_set0_tmp_dh_pkey() حسب الاقتضاء.

قد يُحدد التطبيق بدلاً من ذلك معاملات DH عبر دالة استدعاء باستخدام الدوال SSL_CTX_set_tmp_dh_callback() أو SSL_set_tmp_dh_callback() لتعيين الاستدعاء لكائن SSL_CTX أو SSL على التوالي. هذه الدوال مُهملة. ينبغي للتطبيقات بدلاً من ذلك استخدام المعاملات "الآلية"، أو تحديد المعاملات عبر SSL_CTX_set0_tmp_dh_pkey() أو SSL_set0_tmp_dh_pkey() حسب الاقتضاء.

ستُستدعى دالة الاستدعاء أثناء اتصال عندما تكون معاملات DH مطلوبة. يُقدم كائن SSL للاتصال الحالي كوسيط. استخدمت الإصدارات السابقة من OpenSSL الوسيطين is_export و keylength للتحكم في توليد المعاملات لمجموعات المُعمِّيات التصديرية وغير التصديرية. لا يدعم OpenSSL الحديث مجموعات المُعمِّيات التصديرية، ولذا فهذه الوسائط غير مستخدمة ويمكن تجاهلها من قبل دالة الاستدعاء. ينبغي لدالة الاستدعاء إرجاع المعاملات التي ستُستخدم في كائن DH. تُحتفظ ملكية كائن DH من قبل التطبيق ويجب تحريرها لاحقًا.

القيم المُرجعة
تُرجع كل هذه الدوال/الكليّات 1 للنجاح أو 0 عند الخطأ.

انظر أيضًا
ssl(7), SSL_CTX_set_cipher_list(3), SSL_CTX_set_options(3), openssl-ciphers(1), openssl-dhparam(1)

حقوق النسخ
حقوق النشر 2001-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.