پروژه OpenSSL نسخه 4.1.0 را منتشر کرد که ویژگی اصلی آن اضافه شدن پشتیبانی از پروتکل DTLS 1.3 است. با این حال، این نسخه شامل چهار باگ شناختهشده در کدهای مربوط به DTLS است که میتواند بر پایداری و عملکرد برنامهها تأثیر بگذارد.
جزئیات باگهای DTLS 1.3
این باگها عمدتاً بر توسعهدهندگانی که از DTLS 1.3 یا API جدید SSL listener استفاده میکنند، تأثیر میگذارند:
- خطای تفسیر وضعیت اتصال: دو مورد از باگها ممکن است باعث شوند اپلیکیشن وضعیت اتصال (Connection State) را اشتباه تفسیر کند. برای مثال، یک شکست دائمی در دریافت داده میتواند به اشتباه به عنوان SSL_ERROR_WANT_READ گزارش شود که باعث میشود برنامه منتظر دادههای بیشتری بماند در حالی که اتصال در واقع از کار افتاده است.
- خطای نوشتن در اتصالهای Non-blocking: یک شکست در نوشتن (Write Failure) در یک اتصال پذیرفتهشده میتواند به عنوان SSL_ERROR_SYSCALL ظاهر شود؛ اگر اپلیکیشن این خطا را بحرانی (Fatal) تلقی کند، ممکن است اتصالی را که همچنان سالم است، قطع کند.
- قطع ناگهانی Handshake: در برخی شرایط پس از از دست رفتن بستهها (Packet Loss)، سرور ممکن است با پیام unexpected_message فرآیند Handshake را متوقف کند.
- مشکل KeyUpdate: هنگام دریافت پیام KeyUpdate برای تغییر کلیدهای رمزنگاری، OpenSSL ممکن است سایر رکوردهای باقیمانده در بافر بازگشتی (Retransmission Buffer) را حذف کند که این امر میتواند باعث از دست رفتن NewSessionTicket شود.
تغییرات در پیکربندی و زیرساخت
در این نسخه، گزینههای no-ecdsa و no-ecdh از بخش Configure حذف شدهاند، زیرا این گزینهها به درستی پیادهسازیهای مربوطه را غیرفعال نمیکردند. اکنون توصیه میشود برای غیرفعال کردن کامل پشتیبانی از منحنیهای بیضوی (Elliptic Curve)، از گزینه no-ec استفاده شود.
همچنین پشتیبانی از Windows-on-Itanium و Windows CE حذف شده است. ابزار tsget نیز اکنون به جای ماژول قدیمی، به ماژول Net::Curl::Easy در زبان Perl وابسته است.
بهینهسازیهای امنیتی و پساکوانتوم
این نسخه شامل بهبودهای عملکردی برای الگوریتمهای پساکوانتوم (Post-Quantum) مانند ML-KEM و ML-DSA است. همچنین بهینهسازیهایی برای رمزنگاری AES-CBC در معماری x86_64 و پشتیبانی از RFC 8701 GREASE برای شناسایی سرورهایی که با مقادیر رزرو شده در Handshake مشکل دارند، اضافه شده است.