OpenSSL DLL'leri Olmadan Delphi TLS 1.3

· Bileşenler
OpenSSL DLL'leri Olmadan Delphi TLS 1.3

TLS dağıtmış her Delphi geliştiricisi bu rutini bilir. Bu makinede hangi OpenSSL sürümü var. Müşterinin sunucusunda neden 1.1 var da build makinesinde 3.0 var. Çalıştırılabilir dosyanın yanına hangi iki DLL'in konması gerektiği, ve bir antivirüs onlardan birini kaldırdığında ne olacağı. sgcWebSockets 2026.10 bir çıkış yolu ekliyor: kütüphanenin içinde, hiçbir tür DLL olmadan, Object Pascal ile yazılmış bir TLS 1.3 motoru.

Bu bir wrapper değil, gerçek bir uygulamadır: handshake, record katmanı, key schedule ve sertifika doğrulaması tamamen Pascal'dır. Bir istemci veya sunucu, hiçbir şey kurulu olmadan TLS konuşur.

Tek Bir Özellik

oClient := TsgcWebSocketClient.Create(nil);
oClient.URL := 'wss://www.esegece.com:2053';
oClient.TLSOptions.IOHandler := iohNativeTLS;
oClient.Active := True;

Bir sunucuda bu, SSLOptions üzerindeki aynı anahtardır:

oServer.SSLOptions.IOHandler := iohNativeTLS;
oServer.SSLOptions.CertFile := 'server.pem';
oServer.SSLOptions.KeyFile := 'server.key';
oServer.SSL := True;

ALPN, S N I ve istemci sertifikaları oradadır, hem Indy handler'ında hem de I O C P ve E P O L L sunucularında. Kodunuzla ilgili başka hiçbir şey değişmez.

Makinenin Zaten Güvendiğine Güvenmek

Bir TLS istemcisi, yalnızca güven çapaları kadar iyidir, ve kötü yaşlanan bir cacert.pem dağıtmak, kendi başına bir bakım sorunudur. Motor, işletim sisteminin zaten güvendiği kökleri kullanabilir:

oClient.TLSOptions.NativeTLS_Options.UseSystemRoots := True;

Windows'ta bunlar ROOT sistem deposundan gelir, Linux ve Android'de ise olağan konumlar arasında bulunan ilk sertifika paketinden gelir. Bu varsayılan olarak kapalıdır, bu da güven çapalarını tam olarak RootCertFile'ın söylediği şekilde tutar.

Yarın Yüzünden, Bugün Post-Kuantum

Bugün TLS oturumunuzu kıramayan bir saldırgan, yine de onu kaydedip saklayabilir. İlginç soru, şu anda bir kuantum bilgisayarının var olup olmadığı değil, trafiğinizin ne kadar süre hassas kalacağıdır. TLS'in hibrit anahtar değişimine geçmesinin nedeni de budur; burada paylaşılan sır, iki yarıdan herhangi biri ayakta kaldığı sürece güvendedir.

Motor, RFC 10024'ün hibrit gruplarını müzakere eder, ve varsayılan grup listesi zaten hibrit olanla başlar:

oClient.TLSOptions.NativeTLS_Options.Groups :=
  'X25519MLKEM768:SecP256r1MLKEM768:X25519';

Üç hibrit, X25519MLKEM768, SecP256r1MLKEM768 ve SecP384r1MLKEM1024'tür. Her iki liste de iki nokta üst üste ile ayrılmış OpenSSL tarzı isimler alır, ve boş bir değer motorun varsayılanlarını korur.

Altındaki Kriptografi

Aynı sürüm, post-kuantum ilkellerin kendisini, Object Pascal ile, hiçbir harici kütüphane olmadan sgcCrypto paketine ekliyor:

Bunlar, bir iddia olarak değil bir test seti olarak kütüphaneyle birlikte gelen NIST bilinen yanıt vektörlerine karşı doğrulanır.

İstemenize Gerek Kalmayan Sertleştirme

Aynı geçiş, klasik tarafı zamanlama saldırılarına karşı sertleştirdi. RSA özel anahtar işlemleri, blinding ve sonucun kontrolüyle birlikte sabit zamanlı bir üs alma kullanır, eliptik eğri skaler çarpımı ve Ed25519 imzalama sabit zamanda çalışır, ve AES ile GHASH artık gizli baytlarla bir tabloyu indekslemez. Özel anahtarlar içe aktarıldıklarında kontrol edilir, bu yüzden sertifikasına ait olmayan bir anahtar, kimsenin doğrulayamayacağı imzalar üretmek yerine reddedilir, ve ASN.1 kodlaması minimal DER olmayan bir imza artık kabul edilmek yerine reddedilir.

Ne Zaman Hangisi Kullanılmalı

OpenSSL ve SChannel hiçbir yere gitmiyor, ve birçok uygulama için doğru cevap olmaya devam ediyorlar: eski bir şeyle TLS 1.2 birlikte çalışabilirliğine ihtiyacınız varsa OpenSSL, müşterinin politikası Windows'un kriptografiye sahip olması yönündeyse SChannel. Yerel motor, dağıtımın kendisinin sorun olduğu durum içindir: tek bir çalıştırılabilir dosya, yanında DLL yok, Windows ve Linux'ta aynı davranış, ve platformun yetişmesini beklemeden post-kuantum anahtar değişimi.

Yükseltme

Motor, sgcCrypto paketinin bir parçasıdır ve bileşen başına seçilir, bu yüzden siz IOHandler'ı ayarlayana kadar hiçbir şey değişmez. Kripto birimleri olmayan bir build, handshake'te belirsiz bir şekilde başarısız olmak yerine net bir mesaj verir.

Sırada Ne Var

İzleyin

Bununla ilgili kısa bir video, eSeGeCe kanalında yer alıyor.

Sorularınız, geri bildiriminiz veya taşıma konusunda yardıma mı ihtiyacınız var? İletişime geçin — kodu yazan kişilerden yanıt alacaksınız.