SSL_CTX_USE_PSK_IDENTITY_HINT(3SSL)

الاسم
SSL_psk_server_cb_func, SSL_psk_find_session_cb_func, SSL_CTX_use_psk_identity_hint, SSL_use_psk_identity_hint, SSL_CTX_set_psk_server_callback, SSL_set_psk_server_callback, SSL_CTX_set_psk_find_session_callback, SSL_set_psk_find_session_callback \&- ضبط تلميح هوية PSK للاستخدام

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

 typedef int (*SSL_psk_find_session_cb_func)(SSL *ssl,
                                             const unsigned char *identity,
                                             size_t identity_len,
                                             SSL_SESSION **sess);

 void SSL_CTX_set_psk_find_session_callback(SSL_CTX *ctx,
                                            SSL_psk_find_session_cb_func cb);
 void SSL_set_psk_find_session_callback(SSL *s, SSL_psk_find_session_cb_func cb);

 typedef unsigned int (*SSL_psk_server_cb_func)(SSL *ssl,
                                                const char *identity,
                                                unsigned char *psk,
                                                unsigned int max_psk_len);

 int SSL_CTX_use_psk_identity_hint(SSL_CTX *ctx, const char *hint);
 int SSL_use_psk_identity_hint(SSL *ssl, const char *hint);

 void SSL_CTX_set_psk_server_callback(SSL_CTX *ctx, SSL_psk_server_cb_func cb);
 void SSL_set_psk_server_callback(SSL *ssl, SSL_psk_server_cb_func cb);

الوصف
تطبيق الخادم الراغب في استخدام PSKs لـ TLSv1.3 يجب أن يضبط استدعاءً راجعًا باستخدام إما SSL_CTX_set_psk_find_session_callback() أو \&SSL_set_psk_find_session_callback() حسب الاقتضاء.

تُعطى دالة الاستدعاء الراجع مؤشرًا لاتصال SSL في ssl وهوية في identity بطول identity_len. يجب على دالة الاستدعاء الراجع تحديد كائن SSL_SESSION الذي يوفر تفاصيل PSK وتخزينه في *sess. يجب على كائن SSL_SESSION، كحد أدنى، ضبط المفتاح الرئيسي، ومجموعة المُعمِّيات، وإصدار البروتوكول. انظر \&SSL_CTX_set_psk_use_session_callback\|(3) للتفاصيل.

من الممكن أيضًا أن تنجح دالة الاستدعاء الراجع ولكن لا تقدم PSK. في هذه الحالة، لن يُستخدم أي PSK ولكن ستستمر المصافحة. لفعل ذلك، يجب أن تعود دالة الاستدعاء الراجع بنجاح وتضمن أن *sess هو NULL.

تلميحات الهوية غير ذات صلة بـ TLSv1.3. تطبيق الخادم الراغب في استخدام مجموعات المُعمِّيات PSK لـ TLSv1.2 وما دونه قد يستدعي SSL_CTX_use_psk_identity_hint() لضبط تلميح هوية PSK المُعطى المنتهي بـ NUL hint لكائن سياق SSL ctx. يضبط SSL_use_psk_identity_hint() تلميح هوية PSK المُعطى المنتهي بـ NUL hint لكائن اتصال SSL ssl. إذا كان hint هو \&NULL، يُحذف التلميح الحالي من ctx أو ssl.

في حالة كان تلميح هوية PSK هو NULL، لا يُرسل الخادم رسالة ServerKeyExchange إلى العميل.

تطبيق الخادم الراغب في استخدام PSKs لـ TLSv1.2 وما دونه يجب أن يوفر دالة استدعاء راجع تُستدعى عندما يتلقى الخادم رسالة ClientKeyExchange من العميل. الغرض من دالة الاستدعاء الراجع هو التحقق من صحة هوية PSK المستلمة وجلب المفتاح المشترك مسبقًا المُستخدم خلال مرحلة إعداد الاتصال. يُضبط الاستدعاء الراجع باستخدام الدوال \&SSL_CTX_set_psk_server_callback() أو SSL_set_psk_server_callback(). تُعطى دالة الاستدعاء الراجع الاتصال في المعامل ssl، وهوية PSK المنتهية بـ NUL المُرسلة من العميل في المعامل identity، ومخزنًا مؤقتًا psk بطول max_psk_len بايت حيث يُخزن المفتاح المشترك مسبقًا.

الاستدعاء الراجع للاستخدام في TLSv1.2 سيعمل أيضًا في TLSv1.3 على الرغم من أنه يُوصى باستخدام SSL_CTX_set_psk_find_session_callback() أو SSL_set_psk_find_session_callback() لهذا الغرض بدلاً من ذلك. إذا تم التفاوض على TLSv1.3، سيتحقق OpenSSL أولاً لمعرفة ما إذا كان قد تم ضبط استدعاء راجع عبر SSL_CTX_set_psk_find_session_callback() أو SSL_set_psk_find_session_callback() وسيستخدم ذلك بشكل تفضيلي. إذا لم يكن هناك مثل هذا الاستدعاء الراجع، سيتحقق لمعرفة ما إذا كان قد تم ضبط استدعاء راجع عبر SSL_CTX_set_psk_server_callback() أو \&SSL_set_psk_server_callback() ويستخدم ذلك. في هذه الحالة، سيكون ملخص المصافحة مبدئيًا SHA-256 لأي PSK مُعاد. تبادلات البيانات المبكرة لـ TLSv1.3 ممكنة في اتصالات PSK فقط مع استدعاء SSL_psk_find_session_cb_func الراجع، وغير ممكنة مع استدعاء SSL_psk_server_cb_func الراجع.

سيظهر الاتصال المنشأ عبر TLSv1.3 PSK كما لو أن استئناف الجلسة قد حدث بحيث تُعيد SSL_session_reused(3) قيمة «صواب».

القيم المُرجعة
\&SSL_CTX_use_psk_identity_hint() و SSL_use_psk_identity_hint() تُرجعان 1 عند النجاح، 0 بخلاف ذلك.

قيم الإرجاع من استدعاء الخادم الراجع لـ TLSv1.2 وما دونه تُفسر كالتالي:

0   لم تُعثر على هوية PSK. سيُرسل رسالة تنبيه "unknown_psk_identity" ويفشل إعداد الاتصال.

>0  عُثر على هوية PSK وقد قدم استدعاء الخادم الراجع PSK بنجاح في المعامل psk. قيمة الإرجاع هي طول \&psk بالبايت. من الخطأ إرجاع قيمة أكبر من \&max_psk_len.

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

يجب أن يُرجع استدعاء SSL_psk_find_session_cb_func الراجع 1 عند النجاح أو 0 عند الفشل. في حالة الفشل، يفشل إعداد الاتصال.

ملاحظات
لا توجد مشكلات أمنية معروفة عند مشاركة نفس PSK بين TLSv1.2 (أو أقل) و TLSv1.3. ومع ذلك، تحتوي RFC على هذه الملحوظة التحذيرية:

"على الرغم من عدم وجود طريقة معروفة يمكن من خلالها لنفس PSK إنتاج مخرجات مرتبطة في كلا الإصدارين، إلا أنه لم يُجرَ إلا تحليل محدود. يمكن للمنفذين ضمان السلامة من المخرجات المرتبطة عبر البروتوكولات بعدم إعادة استخدام مفاتيح PSK بين TLS 1.3 و TLS 1.2."

انظر أيضًا
\&ssl\|(7)، \&SSL_CTX_set_psk_use_session_callback\|(3)، \&SSL_set_psk_use_session_callback\|(3)

التاريخ
\&SSL_CTX_set_psk_find_session_callback() و SSL_set_psk_find_session_callback() أُضيفتا في OpenSSL 1.1.1.

حقوق النسخ
حقوق النشر 2006-2020 لمؤلفي مشروع 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.