
Apache Camel के साथ Post-Quantum Cryptography (PQC) TLS 1.3 उदाहरण, JDK 21 (BouncyCastle) और JDK 27 (native) पर X25519MLKEM768 हाइब्रिड कुंजी विनिमय का उपयोग करते हुए
इस रिपॉजिटरी में Apache Camel के साथ पोस्ट-क्वांटम क्रिप्टोग्राफी (PQC) TLS 1.3 हैंडशेक प्रदर्शित करने वाले तीन उदाहरण हैं, जो X25519MLKEM768 हाइब्रिड कुंजी विनिमय का उपयोग करते हैं।
X25519MLKEM768 शास्त्रीय X25519 अण्डाकार वक्र Diffie-Hellman को ML-KEM-768 के साथ जोड़ता है, जो एक पोस्ट-क्वांटम लैटिस-आधारित कुंजी एनकैप्सुलेशन तंत्र है (NIST FIPS 203)। दोनों एल्गोरिदम एक साथ चलते हैं, इसलिए सुरक्षा बनी रहती है भले ही उनमें से एक टूट जाए।
| उदाहरण | JDK | TLS प्रदाता | दृष्टिकोण |
|---|---|---|---|
pqc-ssl-context | JDK 27 | SunJSSE (JDK मूल) | JEP 527, JDK के अंतर्निहित TLS स्टैक में PQC नामित समूह जोड़ता है |
pqc-kem-jdk24 | JDK 24 | BouncyCastle JSSE 1.83 | PQC TLS के लिए BCJSSE, JDK में JEP 496 के माध्यम से मूल ML-KEM प्राइमिटिव हैं |
pqc-ssl-context-jdk21 | JDK 21 | BouncyCastle JSSE 1.83 | BCJSSE, आज PQC TLS समर्थन प्रदान करने के लिए SunJSSE की जगह लेता है |
तीनों उदाहरण पूरी तरह से camel.ssl.* प्रॉपर्टीज़ के माध्यम से कॉन्फ़िगर किए गए हैं और X25519MLKEM768 का उपयोग करके पोस्ट-क्वांटम कुंजी विनिमय के लिए एक स्व-निहित TLS 1.3 हैंडशेक करते हैं, जो स्टार्टअप पर सत्यापित होता है और REST एंडपॉइंट्स के माध्यम से मांग पर उपलब्ध होता है।
pqc-ssl-context)JDK के अंतर्निहित SunJSSE प्रदाता का उपयोग करता है, जिसे JDK 27 में JEP 527 के माध्यम से PQC TLS समर्थन मिलता है।
camel.ssl.namedGroups=X25519MLKEM768,x25519 के माध्यम से कॉन्फ़िगर किया गयाcamel.ssl.selfSigned=true)SSLParameters.setNamedGroups() (मानक JDK API) के माध्यम से सेट किए जाते हैंpqc-kem-jdk24)JDK 24 में PQC TLS समर्थन लाने के लिए BouncyCastle के JSSE प्रदाता (BCJSSE) का उपयोग करता है। हालाँकि JDK 24 में स्टैंडअलोन क्रिप्टो प्राइमिटिव के रूप में मूल ML-KEM शामिल है (JEP 496), यह अपने TLS स्टैक में PQC नामित समूहों को उजागर नहीं करता है। BCJSSE इस अंतर को पाटता है।
camel.ssl.provider=BCJSSE और camel.ssl.namedGroups=X25519MLKEM768,secp256r1 के माध्यम से कॉन्फ़िगर किया गयाcamel.ssl.selfSigned=true)/api/verify-kem एंडपॉइंट क्रॉस-प्रोवाइडर इंटरऑप परीक्षणों के साथ JDK 24 के मूल javax.crypto.KEM API को प्रदर्शित करता हैpqc-ssl-context-jdk21)JDK 27 की प्रतीक्षा किए बिना, JDK 21 में PQC TLS समर्थन लाने के लिए BouncyCastle के JSSE प्रदाता (BCJSSE) का उपयोग करता है।
camel.ssl.provider=BCJSSE और camel.ssl.namedGroups=X25519MLKEM768,secp256r1 के माध्यम से कॉन्फ़िगर किया गयाcamel.ssl.selfSigned=true)jdk.tls.disabledAlgorithms से ECDH हटाने के लिए एक बूटस्ट्रैप क्लास की आवश्यकता होती हैcd pqc-ssl-context
sdk use java 27.ea.11-open
mvn clean compile exec:exec
curl -k https://localhost:8443/api/verify-pqc
cd pqc-kem-jdk24
sdk use java 24.0.1-tem
mvn clean compile exec:exec
curl -k https://localhost:8443/api/verify-pqc
curl -k https://localhost:8443/api/verify-kem
cd pqc-ssl-context-jdk21
sdk use java 21.0.10-tem
mvn clean compile exec:exec
curl -k https://localhost:8443/api/verify-pqc
PQC TLS हैंडशेक सफल होने पर तीनों "pqcVerified": true लौटाएँगे।
यदि आपको Camel का उपयोग करते समय कोई समस्या आती है या आपके पास कुछ प्रतिक्रिया है, तो कृपया हमें बताएं।
हम योगदानकर्ताओं का भी स्वागत करते हैं, इसलिए शामिल हों :-)
कैमल राइडर्स!
| पहलू | JDK 27 नेटिव | JDK 24 + BouncyCastle | JDK 21 + BouncyCastle |
|---|
| JDK आवश्यकता | JDK 27 EA | JDK 24+ | JDK 21+ |
| TLS प्रदाता | SunJSSE | BCJSSE 1.83 | BCJSSE 1.83 |
| PQC तंत्र | JEP 527 (अंतर्निहित) | BouncyCastle TLS लाइब्रेरी | BouncyCastle TLS लाइब्रेरी |
| नेटिव ML-KEM (KEM API) | हाँ | हाँ (JEP 496) | नहीं |
| कॉन्फ़िगरेशन | camel.ssl.* प्रॉपर्टीज़ | camel.ssl.* प्रॉपर्टीज़ | camel.ssl.* प्रॉपर्टीज़ |
| प्रमाणपत्र प्रबंधन | camel.ssl.selfSigned=true | camel.ssl.selfSigned=true | camel.ssl.selfSigned=true |
| REST पोर्ट | 8443 (HTTPS) | 8443 (HTTPS) | 8443 (HTTPS) |
| अतिरिक्त निर्भरताएँ | कोई नहीं (JDK नेटिव) | bcprov, bctls | bcprov, bctls |
| JDK संस्करण | ML-KEM KEM API | TLS में PQC | दृष्टिकोण |
|---|
| 21 | नहीं | हाँ (BouncyCastle के माध्यम से) | pqc-ssl-context-jdk21 - BCJSSE PQC TLS समर्थन प्रदान करता है |
| 24 | हाँ (JEP 496) | हाँ (BouncyCastle के माध्यम से) | pqc-kem-jdk24 - TLS के लिए BCJSSE, JDK के पास मूल ML-KEM प्राइमिटिव हैं |
| 27 | हाँ | हाँ (नेटिव) | pqc-ssl-context - JEP 527 SunJSSE में PQC जोड़ता है |