Ενότητα κρυπτο-gost-tls13 περιέχει την υλοποίηση TLS 1.3 (RFC 8446 + RFC 9367) με κρυπτογραφία GOST. Αυτή η έκδοση είναι η αρχική έκδοση της βιβλιοθήκης και είναι έτοιμη για εσωτερική χρήση.
Ένα μοναδικό χαρακτηριστικό της βιβλιοθήκης είναι η αμιγώς Java υλοποίηση. Όλες οι κρυπτογραφικές λειτουργίες εκτελούνται χρησιμοποιώντας τα ενσωματωμένα εργαλεία της βιβλιοθήκης, χωρίς εξωτερικές εξαρτήσεις.
Αυτή είναι μία από τις πρώτες υλοποιήσεις ανοιχτού κώδικα του 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-bit), CryptoPro-B (512-bit)
- Επαναδημιουργία κλειδιού 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), pathLen.
- Έλεγχος ονόματος κεντρικού υπολογιστή: dNSName + iPAddress (RFC 6125).
- Επαλήθευση απαντήσεων OCSP (RFC 6960).
4.Μεταφορές:
- TlsTransport - διεπαφή.
- InMemoryTlsTransport - για δοκιμές και σενάρια μίας διεργασίας (ουρά εντός μνήμης).
- SocketTlsTransport — μπλοκάρισμα εισόδου/εξόδου μέσω java.net.Socket.
- ChannelTlsTransport - NIO SocketΜεταφορά βασισμένη σε κανάλια (λειτουργία αποκλεισμού, δυνατότητα διακοπής).
- Χειραψία βήμα προς βήμα:
- Το TlsHandshakeEngine είναι μια μηχανή καταστάσεων για χειραψία (αποσυνδεδεμένη από την I/O). Χρησιμοποιεί το TlsSession ως ενορχηστρωτή και είναι κατάλληλο για ενσωμάτωση με JSSE (SSLEngine).
- API ByteBuffer:
- TlsRecord.protect/unprotect — Το ByteBuffer υπερφορτώνει για ενσωμάτωση μηδενικού αντιγράφου με το NIO. Φόρτωση κλειδιών:
- Pkcs12Loader — ανάγνωση PFX (PKCS#12) με PBKDF2-HMAC-SHA256 + AES-256-CBC.
- Τέλος συνεδρίας:
- close_notify - σωστό κλείσιμο σύμφωνα με το πρωτόκολλο.
- Σκούπισμα του υλικού του κλειδιού κατά το κλείσιμο ή κατά την πραγματοποίηση σφάλματος.
- Συναγερμός χειρισμού: θανατηφόρος - άμεσο κλείσιμο + διαγραφή.
- Ασφάλεια υλοποίησης:
- Συγκρίσεις σταθερού χρόνου για verify_data και PSK binders (προστασία από επιθέσεις χρονισμού)
- Σβήσιμο υλικού κλειδιού: destroy() σε όλα τα αντικείμενα με κλειδιά (TlsKeySchedule, TlsTrafficKeys, TlsRecord, HandshakeContext), σε κλείσιμο, μοιραία ειδοποίηση, εξαίρεση σε χειραψία
- Προστασία DoS: όρια στο μήκος της αλυσίδας πιστοποιητικών (10), μηνύματα μετά την χειραψία, μέγεθος εγγραφής.
- Μηδενική τιμή MGM: Το MSB του πρώτου byte διαγράφεται για 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).
- Δοκιμή:
- Η βιβλιοθήκη περιέχει δοκιμές γνωστών απαντήσεων από το RFC 9367 Παράρτημα A.1 (παραλλαγές L και S)—το πλήρες πρόγραμμα κλειδιών, TLSTREE, AEAD και ECDHE. Επίσης, περνάει με επιτυχία το πλήρες φάσμα των δοκιμών KAT.
- 4 δοκιμές ολοκλήρωσης (αυτοδιαλειτουργικότητα) μέσω πραγματικών υποδοχών TCP.
- Δοκιμές fuzz για αναλυτές: TlsMessageParser (8 μέθοδοι), TlsDerParser (3 μέθοδοι), TlsOcspVerifier (1 μέθοδος), για την εξασφάλιση της ασφάλειας και τη μείωση του διανύσματος επίθεσης στους αναλυτές.
- Αρχιτεκτονικές λύσεις:
- TlsHandshakeEngine - μηχανή καταστάσεων αποσυνδεδεμένη από την είσοδο/έξοδο (για μελλοντική ενότητα JSSE).
- Υπερφόρτωση ByteBuffer του TlsRecord.protect/unprotect για NIO/JSSE.
- Μνήμη cache TLSTREE (TlsTreeCache) - επανυπολογισμός μόνο των αλλαγμένων επιπέδων (RFC 9367).
- Το InMemoryTlsTransport.Pair είναι ένα αμφίδρομο ζεύγος για δοκιμές και επικοινωνία μίας διεργασίας.
Η βιβλιοθήκη διανέμεται με ελεύθερη άδεια χρήσης.
Πηγή: linux.org.ru
