Jeder Delphi-Entwickler, der schon TLS ausgeliefert hat, kennt die Routine. Welche OpenSSL-Version diese Maschine hat. Warum der Server des Kunden 1.1 hat und die Build-Maschine 3.0. Welche zwei DLLs neben die ausführbare Datei gehören, und was passiert, wenn ein Antivirenprogramm eine davon entfernt. sgcWebSockets 2026.10 bietet einen Ausweg: eine in Object Pascal geschriebene TLS-1.3-Engine, innerhalb der Bibliothek, ganz ohne DLL.
Es ist eine echte Implementierung, kein Wrapper: der Handshake, die Record-Schicht, der Key Schedule und die Zertifikatsprüfung sind alle in Pascal. Ein Client oder ein Server spricht TLS, ohne dass irgendetwas installiert ist.
Eine einzige Eigenschaft
oClient := TsgcWebSocketClient.Create(nil);
oClient.URL := 'wss://www.esegece.com:2053';
oClient.TLSOptions.IOHandler := iohNativeTLS;
oClient.Active := True;
Auf einem Server ist es derselbe Schalter bei SSLOptions:
oServer.SSLOptions.IOHandler := iohNativeTLS;
oServer.SSLOptions.CertFile := 'server.pem';
oServer.SSLOptions.KeyFile := 'server.key';
oServer.SSL := True;
ALPN, S N I und Client-Zertifikate sind vorhanden, im Indy-Handler und in den I O C P- und E P O L L-Servern. Sonst ändert sich an Ihrem Code nichts.
Vertrauen auf das, was die Maschine schon vertraut
Ein TLS-Client ist nur so gut wie seine Vertrauensanker, und eine cacert.pem auszuliefern, die schlecht altert, ist ein eigenes Wartungsproblem. Die Engine kann die Root-Zertifikate verwenden, denen das Betriebssystem bereits vertraut:
oClient.TLSOptions.NativeTLS_Options.UseSystemRoots := True;
Unter Windows kommen sie aus dem ROOT-Systemspeicher, unter Linux und Android aus dem ersten Zertifikatsbündel, das an den üblichen Orten gefunden wird. Standardmäßig ist das ausgeschaltet, was die Vertrauensanker exakt bei dem belässt, was RootCertFile vorgibt.
Post-Quanten, heute, wegen morgen
Ein Angreifer, der Ihre TLS-Sitzung heute nicht brechen kann, kann sie trotzdem aufzeichnen und aufbewahren. Die interessante Frage ist nicht, ob es jetzt schon einen Quantencomputer gibt, sondern wie lange Ihr Datenverkehr sensibel bleibt. Deshalb bewegt sich TLS in Richtung hybriden Schlüsselaustauschs, bei dem das gemeinsame Geheimnis sicher bleibt, solange eine der beiden Hälften hält.
Die Engine handelt die hybriden Gruppen aus RFC 10024 aus, und die Standard-Gruppenliste beginnt bereits mit der hybriden:
oClient.TLSOptions.NativeTLS_Options.Groups :=
'X25519MLKEM768:SecP256r1MLKEM768:X25519';
Die drei Hybride sind X25519MLKEM768, SecP256r1MLKEM768 und SecP384r1MLKEM1024. Beide Listen verwenden durch Doppelpunkte getrennte Namen im OpenSSL-Stil, und ein leerer Wert behält die Engine-Standardwerte bei.
Die Kryptographie dahinter
Dieselbe Version fügt dem sgcCrypto-Pack die Post-Quanten-Primitive selbst hinzu, in Object Pascal, ohne externe Bibliothek:
- ML-KEM (FIPS 203), ML-DSA (FIPS 204) und SLH-DSA (FIPS 205), mit Schlüsseln, die als SubjectPublicKeyInfo, als PKCS#8 in der Seed-, der Expanded- und der Both-Form sowie als PEM gelesen und geschrieben werden, gemäß RFC 9935, RFC 9881 und RFC 9909.
- X-Wing, die hybride Schlüsselkapselung, die X25519 mit ML-KEM-768 paart.
- X.509-Zertifikate und Zertifikatsanträge mit Post-Quanten-Schlüsseln, einschließlich der Ausstellung durch eine Post-Quanten-Zertifizierungsstelle.
- JWT, signiert und verifiziert mit ML-DSA-44, ML-DSA-65 und ML-DSA-87, den Algorithmen aus RFC 9964.
Sie werden gegen die bekannten NIST-Antwortvektoren validiert, die der Bibliothek als Testsatz beiliegen und nicht nur als Behauptung.
Härtung, um die Sie nicht bitten müssen
Derselbe Durchgang härtete die klassische Seite gegen Timing-Angriffe. Operationen mit dem privaten RSA-Schlüssel verwenden Blinding und eine zeitkonstante Exponentiation mit Prüfung des Ergebnisses, die Skalarmultiplikation auf elliptischen Kurven und die Ed25519-Signierung laufen zeitkonstant ab, und AES und GHASH indizieren keine Tabelle mehr mit geheimen Bytes. Private Schlüssel werden beim Import geprüft, sodass ein Schlüssel, der nicht zu seinem Zertifikat gehört, abgelehnt wird, statt Signaturen zu erzeugen, die niemand verifizieren kann, und eine Signatur, deren ASN.1-Kodierung kein minimales DER ist, wird jetzt abgelehnt statt akzeptiert.
Wann welches verwenden
OpenSSL und SChannel verschwinden nirgendwohin, und für viele Anwendungen bleiben sie die richtige Antwort: OpenSSL, wenn Sie TLS-1.2-Interoperabilität mit etwas Altem brauchen, SChannel, wenn die Richtlinie des Kunden besagt, dass Windows die Kryptographie besitzt. Die native Engine ist für den Fall gedacht, in dem die Bereitstellung das Problem ist: eine einzige ausführbare Datei, keine DLL daneben, dasselbe Verhalten unter Windows und unter Linux, und Post-Quanten-Schlüsselaustausch, ohne darauf zu warten, dass die Plattform nachzieht.
Aktualisierung
Die Engine ist Teil des sgcCrypto-Pakets und wird pro Komponente ausgewählt, sodass sich nichts ändert, bis Sie IOHandler setzen. Ein Build ohne die Krypto-Units löst eine klare Meldung aus, statt beim Handshake auf unklare Weise zu scheitern.
Weiterlesen
- Eine Delphi-Web-CRUD-Seite in fünf Minuten
- Stellen Sie Ihrem Delphi-Grid eine Frage in einfachem Englisch
- sgcWebSockets 2026.10, alles andere in dieser Version
Video ansehen
Dazu gibt es ein kurzes Video auf dem eSeGeCe-Kanal.
Fragen, Feedback oder Hilfe bei der Migration? Kontaktieren Sie uns — Sie erhalten eine Antwort von den Leuten, die den Code geschrieben haben.
