وحدة crypto-gost-tls13 يحتوي على التنفيذ TLS 1.3 (RFC 8446 + RFC 9367) باستخدام تشفير GOST. هذا الإصدار هو النسخة الأولية من المكتبة وهو جاهز للاستخدام الداخلي.
تتميز هذه المكتبة بتنفيذها الكامل بلغة جافا. تُجرى جميع عمليات التشفير باستخدام الأدوات المدمجة في المكتبة، دون أي تبعيات خارجية.
هذا أحد أوائل تطبيقات TLS 1.3 مفتوحة المصدر مع GOST في Java، لذلك تم إجراء اختبار التوافق إلى الحد الأدنى الممكن.
فيما يلي إمكانيات المكتبة.
- البروتوكولات:
- المصافحة: كاملة (العميل/الخادم)، قصيرة (PSK)، متبادلة (mTLS).
- ALPN (RFC 7301) - التفاوض على بروتوكول طبقة التطبيق (HTTP/2، HTTP/1.1).
- SNI (RFC 6066) - مؤشر الاسم الخادم للنشر متعدد المستأجرين.
- KeyUpdate (RFC 8446 §4.6.3) – تحديث مفاتيح تشفير حركة المرور.
- مجموعات التشفير: TLS_KUZNYECHIK_MGM_STREEBOG_256_L/S.
- ECDHE: CryptoPro-A (256 بت)، CryptoPro-B (512 بت)
- إعادة تشفير TLSTREE لكل سجل - تغيير مفتاح التشفير لكل سجل TLS.
- تجزئة وإعادة تجميع المصافحات والسجلات (RFC 8446 §5.1).
- استئناف الجلسة: PSK عبر NewSessionTicket (PskStore في الذاكرة، للاستخدام لمرة واحدة).
- تدبيس OCSP: الخادم يُلحق استجابة بروتوكول حالة الشهادة عبر الإنترنت (OCSP) بالشهادة.
- رسائل ما بعد المصافحة: NewSessionTicket (باستثناء PSK).
- التشفير:
- الجدول الزمني الرئيسي: HKDF-Streebog (RFC 5869) عبر TLS 1.3 (RFC 8446 §7.1).
- حماية التسجيل: MGM-AEAD (Kuznyechik) مع nonce وفقًا لـ RFC 8446 §5.3.
- تُمسح المفاتيح المؤقتة بعد استخدامها.
- الشهادات:
- تحليل X.509v3 (GOST R 34.10-2012) - محلل DER مدمج.
- سلسلة التحقق: التوقيعات، DN (المصدر → الموضوع)، القيود الأساسية، استخدام المفتاح، استخدام المفتاح الموسع * (serverAuth / clientAuth)، طول المسار.
- التحقق من اسم المضيف: dNSName + iPAddress (RFC 6125).
- التحقق من استجابات OCSP (RFC 6960).
4.النقل:
- TlsTransport - واجهة.
- InMemoryTlsTransport - للاختبارات وسيناريوهات العملية الواحدة (قائمة انتظار في الذاكرة).
- SocketTlsTransport — حظر عمليات الإدخال/الإخراج عبر java.net.Socket.
- ChannelTlsTransport - نقل قائم على NIO SocketChannel (وضع الحظر، قابل للمقاطعة).
- خطوات المصافحة بالتفصيل:
- محرك مصافحة TLS هو آلة حالة للمصافحة (منفصلة عن الإدخال/الإخراج). يستخدم TlsSession كمنسق وهو مناسب للتكامل مع JSSE (SSLEngine).
- واجهة برمجة تطبيقات ByteBuffer:
- TlsRecord.protect/unprotect — دوال ByteBuffer مُعدّلة للتكامل بدون نسخ مع NIO. جارٍ تحميل المفاتيح:
- Pkcs12Loader — قراءة PFX (PKCS#12) باستخدام PBKDF2-HMAC-SHA256 + AES-256-CBC.
- نهاية الجلسة:
- close_notify - إغلاق صحيح وفقًا للبروتوكول.
- مسح المواد الرئيسية عند الإغلاق أو عند ارتكاب خطأ.
- تنبيه المعالجة: خطأ فادح - إغلاق فوري + مسح.
- أمان التنفيذ:
- مقارنات ثابتة الوقت لـ verify_data و PSK binders (حماية من هجمات التوقيت)
- مسح بيانات المفاتيح: يتم تدمير جميع الكائنات التي تحتوي على مفاتيح (TlsKeySchedule، TlsTrafficKeys، TlsRecord، HandshakeContext) عند الإغلاق، تنبيه خطير، استثناء في عملية المصافحة.
- حماية من هجمات الحرمان من الخدمة: حدود على طول سلسلة الشهادات (10)، ورسائل ما بعد المصافحة، وحجم السجل.
- MGM nonce: يتم مسح MSB من البايت الأول لـ ICN (RFC 9058 §3، RFC 9367 §3.3).
- يتم تدمير المفتاح الخاص بـ ECDHE وسجل المصافحة بعد اكتمال المصافحة.
- يتم مسح مادة مفتاح HMAC بعد الاستخدام (HkdfStreebog, KdfGostR3411_2012_256).
- القيود:
- مفتاح PSK للاستئناف فقط (لا يتم دعم 0-RTT ومفتاح PSK الخارجي).
- psk_dhe_ke فقط (لا يتم دعم PSK النقي بدون ECDHE).
- لا يتم دعم HelloRetryRequest (RFC 8446 §4.1.4) - يتم استخدام مجموعة واحدة مسماة فقط (GC256A افتراضيًا).
- GOST فقط (لا يتم دعم مجموعات التشفير غير GOST).
- اختبارات:
- تحتوي المكتبة على اختبارات الإجابات المعروفة من الملحق أ.1 من RFC 9367 (النسختين L و S) - جدول المفاتيح الكامل، وTLSTREE، وAEAD، وECDHE. كما أنها تجتاز جميع اختبارات KAT.
- 4 اختبارات تكامل (التوافق الذاتي) عبر مقابس TCP حقيقية.
- اختبارات Fuzz للمحللات: TlsMessageParser (8 طرق)، TlsDerParser (3 طرق)، TlsOcspVerifier (طريقة واحدة)، لضمان الأمان وتقليل متجه الهجوم على المحللات.
- حلول معمارية:
- محرك مصافحة Tls - آلة حالة منفصلة عن الإدخال/الإخراج (لوحدة JSSE المستقبلية).
- تحميلات ByteBuffer الزائدة لـ TlsRecord.protect/unprotect لـ NIO/JSSE.
- ذاكرة التخزين المؤقت TLSTREE (TlsTreeCache) - إعادة حساب المستويات المتغيرة فقط (RFC 9367).
- InMemoryTlsTransport.Pair عبارة عن زوج ثنائي الاتجاه للاختبارات واتصال العملية الواحدة.
يتم توزيع المكتبة بموجب ترخيص مجاني.
المصدر: linux.org.ru
