SSL_CTX_SET1_CURVES(3SSL)

الاسم
SSL_CTX_set1_groups, SSL_CTX_set1_groups_list, SSL_set1_groups, SSL_set1_groups_list, SSL_get1_groups, SSL_get0_iana_groups, SSL_get_shared_group, SSL_get_negotiated_group, SSL_CTX_set1_curves, SSL_CTX_set1_curves_list, SSL_set1_curves, SSL_set1_curves_list, SSL_get1_curves, SSL_get_shared_curve, SSL_CTX_get0_implemented_groups - دوال المنحنيات المدعومة لـ EC

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

 int SSL_CTX_set1_groups(SSL_CTX *ctx, int *glist, int glistlen);
 int SSL_CTX_set1_groups_list(SSL_CTX *ctx, char *list);

 int SSL_set1_groups(SSL *ssl, int *glist, int glistlen);
 int SSL_set1_groups_list(SSL *ssl, char *list);

 int SSL_get1_groups(SSL *ssl, int *groups);
 int SSL_get0_iana_groups(SSL *ssl, uint16_t **out);
 int SSL_get_shared_group(SSL *s, int n);
 int SSL_get_negotiated_group(SSL *s);

 int SSL_CTX_set1_curves(SSL_CTX *ctx, int *clist, int clistlen);
 int SSL_CTX_set1_curves_list(SSL_CTX *ctx, char *list);

 int SSL_set1_curves(SSL *ssl, int *clist, int clistlen);
 int SSL_set1_curves_list(SSL *ssl, char *list);

 int SSL_get1_curves(SSL *ssl, int *curves);
 int SSL_get_shared_curve(SSL *s, int n);

 int SSL_CTX_get0_implemented_groups(SSL_CTX *ctx, int all,
                                     STACK_OF(OPENSSL_CSTRING) *names);

الوصف
لجميع الدوال أدناه التي تضبط المجموعات المدعومة، يجب وجود مجموعة واحدة على الأقل في القائمة. عدد من هذه الدوال يُعرِّف المجموعات عبر قيمة عددية فريدة NID. لكن، قد يُضاف دعم لبعض المجموعات بواسطة موفري خارجيين. في هذه الحالة، لن يُخصص NID للمجموعة. عند ضبط هذه المجموعات، ينبغي للتطبيقات استخدام صيغة "القائمة" لهذه الدوال (أي SSL_CTX_set1_groups_list() و SSL_set1_groups_list()).

SSL_CTX_set1_groups() تضبط المجموعات المدعومة لـ ctx إلى glistlen مجموعة في المصفوفة glist. تتكون المصفوفة من جميع NIDs للمجموعات المدعومة. المجموعات المدعومة لـ TLSv1.3 تشمل: NID_X9_62_prime256v1, NID_secp384r1, NID_secp521r1, NID_X25519, NID_X448, NID_brainpoolP256r1tls13, NID_brainpoolP384r1tls13, NID_brainpoolP512r1tls13, NID_ffdhe2048, NID_ffdhe3072, NID_ffdhe4096, NID_ffdhe6144, و NID_ffdhe8192. ستستخدم OpenSSL هذه المصفوفة بطرق مختلفة بناءً على إصدار TLS، وما إذا كانت المجموعات مستخدمة في عميل أو خادم.

بالنسبة لعميل TLS، تُستخدم المجموعات مباشرة في امتداد المجموعات المدعومة. ترتيب تفضيل الامتداد، الذي يُقيّمه الخادم، يُحدّد بترتيب العناصر في المصفوفة.

بالنسبة لخادم TLS 1.2، تُحدّد المجموعات المجموعة المختارة. إذا كان SSL_OP_SERVER_PREFERENCE مُعيَّنًا، فإن ترتيب العناصر في المصفوفة يُحدّد المجموعة المختارة. وإلا، يُتجاهل الترتيب ويُحدّد ترتيب العميل الاختيار.

بالنسبة لخادم TLS 1.3، تُحدّد المجموعات المجموعة المختارة، لكن الاختيار أكثر تعقيدًا. يرسل عميل TLS 1.3 كلاً من قائمة المجموعات ومشاركات المفاتيح المتوقعة لمجموعة فرعية من المجموعات. الخادم الذي يختار مجموعة خارج المجموعة الفرعية المتوقعة للعميل يتكبّد رحلة ذهاب وإياب إضافية. ومع ذلك، في بعض الحالات، قد لا تكون المجموعة الأكثر تفضيلاً متوقعة.

عند تحديد المجموعات عبر SSL_CTX_set1_groups() كقائمة من قيم NID، تعتبر OpenSSL جميع المجموعات المدعومة في clist قابلة للمقارنة من حيث الأمان وتُعطي أولوية لتجنب الرحلات ذهابًا وإيابًا فوق ترتيب تفضيل العميل أو الخادم. إذا استخدم تطبيق موفرًا خارجيًا لتوسيع OpenSSL بـ، مثلاً، خوارزمية ما بعد الكم، قد يسمح هذا السلوك لمهاجم شبكة بخفض الاتصالات إلى خوارزمية أضعف. لذلك يُوصى باستخدام SSL_CTX_set1_groups_list() بدلاً من ذلك، مما يجعل من الممكن تحديد مجموعات tuples كما هو موصوف أدناه.

SSL_CTX_set1_groups_list() تضبط المجموعات المدعومة لـ ctx إلى السلسلة list. على عكس SSL_CTX_set1_groups()، تُستخدم أسماء المجموعات بدلاً من NIDs الخاصة بها.

تسرد الأوامر أدناه المجموعات المتاحة لـ TLS 1.2 و TLS 1.3، على التوالي:

    $ openssl list -tls1_2 -tls-groups
    $ openssl list -tls1_3 -tls-groups

يمكن أن تكون كل مجموعة إما اسم NIST (مثل P-256)، أو اسم آخر شائع الاستخدام حيثما ينطبق (مثل X25519، ffdhe2048) أو اسم OID لـ OpenSSL (مثل prime256v1). أسماء المجموعات غير حساسة لحالة الأحرف في OpenSSL 3.5 والإصدارات الأحدث. أسماء المجموعات المفضلة هي تلك المعرفة بواسطة IANA <https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml#tls-parameters-8>.

يمكن استخدام list لتعريف عدة مجموعات tuples من مستويات أمان قابلة للمقارنة، ويمكنها تحديد أي مشاركات مفاتيح متوقعة يجب أن يرسلها العميل. تُستخدم مجموعات tuples بواسطة خوادم TLS في OpenSSL لتقرير ما إذا كان طلب مفتاح أقوى من تلك المتوقعة عبر إرسال طلب إعادة محاولة الترحيب (HRR) حتى لو كانت بعض المجموعات المتوقعة مدعومة. تتجاهل عملاء OpenSSL حدود tuples، وتنتبه فقط إلى الترتيب العام لعناصر list وأي المجموعات تُختار كمشاركات مفاتيح متوقعة كما هو موصوف أدناه.

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

في أبسط صيغة تقليدية، السلسلة list هي مجرد قائمة بأسماء المجموعات مفصولة بنقطتين، على سبيل المثال "P-521:P-384:P-256:X25519:ffdhe2048". المجموعة الأولى المدرجة ستُستخدم في هذه الحالة كمشاركة المفتاح المتوقعة الوحيدة key_share التي يرسلها عميل في TLSv1.3 ClientHello. يجب أن تكون القائمة بترتيب التفضيل مع المجموعة الأكثر تفضيلاً أولاً.

صيغة أكثر تعبيرًا تدعم تعريف مجموعات tuples من أمان قابل للمقارنة بفصلها عن بعضها بأحرف "/".

يمكن تحديد مشاركات المفاتيح المتوقعة التي سترسلها العملاء صراحةً بإضافة بادئة "*" إلى اسم المجموعة المرتبط. تُتجاهل هذه البادئات "*" بواسطة الخوادم.

إذا سُبِق اسم مجموعة بالحرف "?"، فسيُتجاهل إذا كان التنفيذ مفقودًا. وإلا، فإن سرد اسم مجموعة غير معروف سيؤدي إلى فشل تحليل القائمة. لاحظ أن معرفة المجموعة أو عدمها قد تعتمد على إصدار OpenSSL، وكيفية تجميع OpenSSL و/أو أي المزودين تم تحميلهم. تأكد من صحة تهجئة اسم المجموعة، وعند الشك، سَبِّقها بـ "?" للتعامل مع التهيئات التي قد تكون فيها غير معروفة على أي حال.

إذا سُبِق اسم مجموعة بالحرف "-"، فسيُحذف من قائمة المجموعات المحددة حتى تلك النقطة. يمكن إضافته مرة أخرى إذا حُدد لاحقًا. يُتجاهل حذف المجموعات التي لم تُدرج سابقًا في القائمة بصمت.

اسم المجموعة الزائف "DEFAULT" يمكن استخدامه لاختيار القائمة المبدئية المدمجة للمجموعات في OpenSSL. إضافة مجموعة أو أكثر قبل "DEFAULT" باستخدام فواصل ":" فقط يُضيف تلك المجموعات قبل أول مجموعة مزدوجة في القائمة المبدئية المدمجة. مجموعات مزدوجة إضافية يمكن إضافتها قبلها باستخدام الفاصل "/". إلحاق مجموعة من المجموعات بـ "DEFAULT" باستخدام فواصل ":" فقط يُلحق تلك المجموعات بآخر مجموعة مزدوجة في القائمة المبدئية المدمجة. مجموعات مزدوجة إضافية يمكن إلحاقها باستخدام الفاصل "/".

تحدد القائمة DEFAULT X25519MLKEM768 كأحد مفاتيح المشاركة المتوقعة. في حالات نادرة، قد يؤدي هذا إلى فشل أو انتهاء مهلة لأن رسالة TLS Client Hello الأكبر الناتجة قد لا تتناسب مع مقطع TCP واحد، وقد يعطل برنامج جدار الحماية مصافحة TLS بشكل خاطئ. إذا كانت هذه مشكلة أو مصدر قلق، فإن إضافة "?X25519MLKEM768:" بدون بادئة "*" يؤدي إلى تجاهل حدوثها في القائمة المبدئية كمكرر، ومع ذلك أيضًا تجاهل توقع مفتاح المشاركة. سيتم بعد ذلك اختيار المجموعة فقط بواسطة الخوادم التي تتوقعها تحديدًا، بعد طلب إعادة المحاولة (HRR). الخوادم التي تفضل X25519MLKEM768 تحديدًا، أقل عرضة للوجود خلف جدران حماية إشكالية.

السلسلة list التالية على سبيل المثال تعرّف ثلاث مجموعات عند استخدامها من جانب الخادم، وتُحفّز توليد ثلاث مفاتيح مشاركة عند استخدامها من جانب العميل: P-521:*P-256/*P-384/*X25519:P-384:ffdhe2048.

بالنسبة لعميل TLS 1.3، جميع المجموعات في سلسلة المحارف list تُضاف إلى امتداد المجموعات المدعومة لـ "ClientHello"، بالترتيب الذي هي مُدرجة به، وبالتالي تُفسّر فواصل المجموعات المزدوجة كفواصل مجموعات. ترتيب تفضيل الامتداد، الذي يُقيّمه الخادم، يُحدّد بترتيب العناصر في المصفوفة، انظر أدناه.

إذا سُبق اسم مجموعة بـ "*"، فسيُرسل مفتاح مشاركة لهذه المجموعة. عند تسبيق "DEFAULT" بـ "*"، سيُرسل مفتاح مشاركة للمجموعة الأولى من القائمة المبدئية المضمنة في OpenSSL للمجموعات. إذا لم يُستخدم "*" في أي مكان في القائمة، يُرسل مفتاح مشاركة واحد للمجموعة الصالحة في أقصى اليسار. يُدعم حد أقصى يبلغ 4 مفاتيح مشاركة. مثال: "P-521:*P-256/*P-384" سيضيف P-521 وP-256 وP-384 إلى امتداد المجموعات المدعومة في "ClientHello" وسيرسل مفاتيح مشاركة لـ P-256 وP-384.

بالنسبة لخادم TLS 1.3، ستُستخدم المجموعات في السلسلة list لتحديد المجموعة المستخدمة لاتفاق المفتاح. يُحدد ترتيب تفضيل مجموعات المجموعات بترتيب المجموعات في المصفوفة، ويُحدد ترتيب تفضيل المجموعات داخل مجموعة المجموعات بترتيب المجموعات في المجموعة. يمكن فرض تفضيل الخادم بتعيين SSL_OP_SERVER_PREFERENCE باستخدام SSL_set_options (مبدئي: تفضيل العميل).

سيختار الخادم المجموعة المستخدمة لاتفاق المفتاح باستخدام خوارزمية الشبه-كود التالية:

 لكل مجموعة بيانات
         إذا كانت تفضيلات العميل (= افتراضية)
              لكل مجموعة مشاركة مفاتيح العميل
                   إذا كانت مجموعة مشاركة المفاتيح الحالية جزءًا من مجموعة البيانات الحالية: SH، فأرجع نجاح العملية
              لكل مجموعة بيانات مدعومة من العميل
                    إذا كانت المجموعة المدعومة الحالية جزءًا من مجموعة البيانات الحالية: HRR، فأرجع نجاح العملية
       وإلا (= تفضيلات الخادم = مع تعيين خيار SSL_OP_SERVER_PREFERENCE)

             لكل مجموعة في الصف الحالي
                     إذا كانت المجموعة الحالية جزءًا من مجموعات مشاركة مفاتيح العميل: SH، فأرجع نجاح
            لكل مجموعة في الصف الحالي
                   إذا كانت المجموعة الحالية جزءًا من المجموعات المدعومة من العميل: HRR، فأرجع نجاح
 أرجع فشل

 مع : SH: رسالة ترحيب من الخادم مع المجموعة الحالية
 HRR: طلب إعادة محاولة من الخادم مع المجموعة الحالية

وبالتالي، إذا دعم العميل مجموعة في مجموعة مجموعات الخادم، لكنه لم يرسل مفتاح مشاركة لهذه المجموعة، يُحفّز طلب إعادة محاولة (HRR)، يطلب من العميل إرسال رسالة Hello جديدة بمفتاح مشاركة أكثر تفضيلاً. انظر الأمثلة أدناه.

يمكن اختياريًا تسبيق اسم مجموعة بأي من "*" أو "?" أو "-"، بأي ترتيب، مع استثناء أن "*" فقط مسموح له بتسبيق "DEFAULT". أحرف الفصل ":" و "/" مسموح بها فقط داخل list وليس في البداية أو النهاية.

SSL_set1_groups() و SSL_set1_groups_list() متشابهتان باستثناء أنهما تعيّنان المجموعات المدعومة لهيكل SSL ssl.

SSL_get1_groups() تُرجع مجموعة المجموعات المدعومة التي أرسلها عميل في امتداد المجموعات المدعومة. تُرجع العدد الإجمالي للمجموعات المدعومة. يمكن أن يكون المعامل groups هو NULL لإرجاع عدد المجموعات ببساطة لأغراض تخصيص الذاكرة. مصفوفة groups تكون على شكل مجموعة من NIDs المجموعات بترتيب التفضيل. يمكن أن تُرجع صفرًا إذا لم يرسل العميل امتداد مجموعات مدعومة. إذا كان NID مجموعة مدعومة غير معروف، فتُعيّن القيمة إلى OR المنطقي لـ TLSEXT_nid_unknown (0x1000000) ومعرف المجموعة.

SSL_get0_iana_groups() تسترجع قائمة المجموعات التي أرسلها العميل في امتداد supported_groups. مصفوفة البايت *out تُملأ بتمثيل ترتيب البايت للمضيف لمعرفات المجموعة uint16_t، كما عيّنتها IANA. تُرجع قائمة المجموعات بنفس الترتيب الذي استُلمت به في ClientHello. قيمة الإرجاع هي عدد المجموعات، وليس عدد البايتات المكتوبة.

SSL_get_shared_group() تُرجع NID للمجموعة المشتركة n لـ SSL ssl من جانب الخادم. إذا كان n هو -1، فسيُرجَع العدد الإجمالي للمجموعات المشتركة، والذي قد يكون صفرًا. بخلاف أغراض التشخيص، ستكون معظم التطبيقات مهتمة فقط بأول مجموعة مشتركة، لذا يُعيَّن n عادةً إلى صفر. إذا كانت القيمة n خارج النطاق، فتُرجَع NID_undef. إذا كان NID للمجموعة المشتركة غير معروف، فتُعيّن القيمة إلى OR المنطقي لـ TLSEXT_nid_unknown (0x1000000) ومعرف المجموعة.

SSL_get_negotiated_group() تُرجع NID للمجموعة المتفاوض عليها المستخدمة في عملية تبادل مفتاح المصافحة. بالنسبة لاتصالات TLSv1.3، يعكس هذا عادةً حالة الاتصال الحالي، على الرغم من أنه في حالة استئناف PSK فقط، ستكون القيمة المُرجَعة من اتصال سابق. بالنسبة لإصدارات TLS الأقدم، عندما يُستأنَف جلسة، يعكس دائمًا المجموعة المستخدمة لتبادل المفتاح أثناء المصافحة الأولية (وإلا فهي من الاتصال الحالي غير المستأنَف). يمكن استدعاء هذا بواسطة العميل أو الخادم. إذا كان NID للمجموعة المشتركة غير معروف، فتُعيّن القيمة إلى OR المنطقي لـ TLSEXT_nid_unknown (0x1000000) ومعرف المجموعة. انظر أيضًا SSL_get0_group_name(3) الذي يُرجع اسم المجموعة المتفاوض عليها مباشرةً ويُفضَّل عمومًا على SSL_get_negotiated_group().

SSL_CTX_get0_implemented_groups() تملأ رصة بأسماء مجموعات TLS المتوافقة مع إصدار TLS للوسيط ctx. الأسماء المُعادة هي مراجع لثوابت داخلية ويجب عدم تعديلها أو تحريرها. عندما يكون all غير صفري، تتضمن القائمة المُعادة ليس فقط أسماء IANA المفضلة للمجموعات، بل أيضًا أي أسماء مستعارة مرتبطة. إذا كان SSL_CTX مرن الإصدار، فستكون المجموعات تلك المتوافقة مع أي إصدارات بروتوكول دنيا وقصوى مُهيأة. يجب تخصيص رصة names بواسطة المُستدعي وتكون فارغة، وتُضاف أسماء المجموعات المطابقة إلى الرصة المُقدمة. خيارات -tls-groups و -all-tls-groups لأمر openssl list تُخرج هذه القوائم إما لـ TLS 1.2 أو TLS 1.3 (بشكل مبدئي).

جميع هذه الدوال مُنفذة ككليّات.

دوال المنحنيات هي مرادفات لدوال المجموعات المسماة بالمثل ومتطابقة في كل جانب. إنها موجودة لأنه، قبل TLS1.3، كان هناك فقط مفهوم المنحنيات المدعومة. في TLS1.3، أُعيدت تسمية هذا إلى المجموعات المدعومة، ووُسعت لتشمل مجموعات Diffie Hellman. يجب استخدام دوال المجموعات كأفضلية.

ملاحظات
إذا رغب تطبيق في استخدام العديد من هذه الدوال لأغراض التهيئة إما في سطر أوامر أو في ملف، فيجب عليه النظر في استخدام واجهة SSL_CONF بدلاً من تحليل الخيارات يدويًا.

القيم المُرجعة
SSL_CTX_set1_groups()، SSL_CTX_set1_groups_list()، SSL_set1_groups()، SSL_set1_groups_list()، و SSL_CTX_get0_implemented_groups() تُعيد 1 للنجاح و 0 للفشل.

SSL_get1_groups() تُعيد عدد المجموعات، والذي قد يكون صفرًا.

SSL_get0_iana_groups() تُرجع عدد المجموعات (uint16_t)، والذي قد يكون صفرًا.

SSL_get_shared_group() تُرجع NID للمجموعة المشتركة n أو NID_undef إذا لم تكن هناك مجموعة مشتركة n؛ أو العدد الإجمالي للمجموعات المشتركة إذا كان n يساوي -1.

عند استدعائها على عميل ssl، لا معنى لـ SSL_get_shared_group() وتُرجع -1.

SSL_get_negotiated_group() تُرجع NID للمجموعة المتفاوض عليها المستخدمة لتبادل المفاتيح، أو NID_undef إذا لم تكن هناك مجموعة متفاوض عليها.

أمثلة
افترض أن list الخادم هو "P-521:P-256/P-384/X25519:ffdhe2048" وlist العميل هو "P-521:*P-384" عند الاتصال بمثل هذا الخادم، مما يعني أن العميل يدعم "P-521" لكنه لا يُرسل مشاركة مفتاح لهذه المجموعة إلى الخادم، ويدعم العميل "P-384" بما في ذلك مشاركة مفتاح لهذه المجموعة. مع تفضيل كل من الخادم والعميل، سيتم تشغيل HRR لـ "P-521" على الرغم من توفر مشاركة مفتاح لـ P-384، والتي تتداخل مع مجموعة ثنائية ذات أولوية أقل من جانب الخادم.

كمثال منفصل، اعتبر list خادم "A:B/C:D/E:F". مُدرجة بترتيب من الأعلى تفضيلًا إلى الأقل، يتم إنشاء 3 مجموعات ثنائية: "A:B" و"C:D" و"E:F". فيما يلي بعض الأمثلة على list عميل حيث لن يُغير تعيين تفضيل الخادم/العميل النتيجة:

- "A:D:*F": كلاهما يُفضّل "A"، لكن الخادم لم يستلم مشاركة مفتاح للمجموعة المزدوجة الأكثر تفضيلاً التي فيها على الأقل مجموعة واحدة مدعومة من كليهما. لذلك، يتم تشغيل HRR لـ "A".

- "B:*C": كلاهما يُفضل "B" من المجموعة الثنائية الأولى "A:B"، لذلك يتم تشغيل HRR لـ "B".

- "C:*F": كلاهما يُفضل "C" من المجموعة الثنائية الثانية "C:D"، لذلك يتم تشغيل HRR لـ "C".

- "C:*D": على الرغم من أن كليهما يُفضل "C" على "D"، سيقبل الخادم مشاركة المفتاح لـ "D". داخل مجموعة ثنائية، تُغلب مشاركات المفاتيح الموجودة ترتيب التفضيل.

- "*C:*D": يقبل الخادم مشاركة المفتاح "C".

- "F": على الرغم من أنها غير مسبوقة بـ "*"، سيرسل العميل مشاركة مفتاح لـ "F". ثم سيقبل الخادم مشاركة المفتاح لـ "F".

- "*E:C:A": يُفضل الخادم "A" من المجموعة الثنائية "A:B"، لذلك يتم تشغيل HRR لـ "A".

- "*E:B:*A": يستخدم الخادم مشاركة المفتاح لـ "A".

فيما يلي بعض الأمثلة حيث سيُغير تعيين تفضيل الخادم/العميل النتيجة:

- "*D:*C"
 - تفضيل العميل: يستخدم الخادم مشاركة المفاتيح لـ "D".
 - تفضيل الخادم: يستخدم الخادم مشاركة المفاتيح لـ "C".

- "B:A:*C" - تفضيل العميل: يُفعّل الخادم طلب إعادة توجيه عالي المخاطر (HRR) للخيار "B". بالنسبة للخادم، يُعتبر الخياران "A" و"B" متقاربين في مستوى الأمان. ولكن لأن العميل يُفضّل الخيار "B"، سيُفعّل الخادم طلب إعادة توجيه عالي المخاطر
 (HRR) للخيار "B". - تفضيل الخادم: يُفعّل الخادم طلب إعادة توجيه عالي المخاطر (HRR) للخيار "A".

انظر أيضًا
ssl(7)، SSL_CTX_add_extra_chain_cert(3)، SSL_get0_group_name(3)

التاريخ
أُضيفت دوال المنحنيات في OpenSSL 1.0.2. أُضيفت دوال المجموعات المكافئة في OpenSSL 1.1.1. أُضيفت الدالة SSL_get_negotiated_group() في OpenSSL 3.0.0.

أُضيف دعم تجاهل المجموعات غير المعروفة في SSL_CTX_set1_groups_list() وSSL_set1_groups_list() في OpenSSL 3.3.

دعم ML-KEM أُضيف في OpenSSL 3.5.

OpenSSL 3.5 يُقدّم أيضًا دعمًا لثلاث مجموعات هجينة لتبادل المفاتيح ECDH PQ في TLS: X25519MLKEM768 و SecP256r1MLKEM768 و SecP384r1MLKEM1024. تُوفّر أداءً لوحدة المعالجة المركزية (CPU) مشابهًا لمجموعة ECDH المرتبطة، وإن كان ذلك على حساب رسائل تبادل مفاتيح أكبر بكثير. المجموعة الثالثة، SecP384r1MLKEM1024، أكثر استهلاكًا لوحدة المعالجة المركزية بشكل كبير، ويرجع ذلك إلى حد كبير إلى التكلفة العالية لوحدة المعالجة المركزية لـ ECDH للمجموعة الأساسية P-384. أيضًا، رسائل تبادل المفاتيح الخاصة بها والتي تقترب من 1700 بايت أكبر من الـ 1200 بايت تقريبًا للمجموعتين الأوليين.

بدءاً من OpenSSL 3.5، لا تتأثر أسماء مجموعات تبادل المفاتيح بحالة الحروف.

SSL_CTX_get0_implemented_groups نُفّذ لأول مرة في OpenSSL 3.5.

الإصدارات السابقة من هذا المستند وصفت القائمة كترتيب تفضيل. ومع ذلك، سلوك OpenSSL كخادم TLS 1.3 هو اعتبار جميع المجموعات المدعومة متكافئة في الأمان.

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