Todo desenvolvedor Delphi que já entregou TLS conhece a rotina. Qual versão do OpenSSL essa máquina tem. Por que o servidor do cliente tem a 1.1 e a máquina de build tem a 3.0. Quais duas DLLs devem ficar ao lado do executável, e o que acontece quando um antivírus remove uma delas. O sgcWebSockets 2026.10 traz uma saída: um motor TLS 1.3 escrito em Object Pascal, dentro da biblioteca, sem nenhuma DLL.
É uma implementação real, não um wrapper: o handshake, a camada de registros, o key schedule e a validação de certificados são todos em Pascal. Um cliente ou um servidor fala TLS sem nada instalado.
Uma única propriedade
oClient := TsgcWebSocketClient.Create(nil);
oClient.URL := 'wss://www.esegece.com:2053';
oClient.TLSOptions.IOHandler := iohNativeTLS;
oClient.Active := True;
Em um servidor, é o mesmo interruptor em SSLOptions:
oServer.SSLOptions.IOHandler := iohNativeTLS;
oServer.SSLOptions.CertFile := 'server.pem';
oServer.SSLOptions.KeyFile := 'server.key';
oServer.SSL := True;
ALPN, S N I e certificados de cliente estão presentes, no handler do Indy e nos servidores I O C P e E P O L L. Nada mais no seu código muda.
Confiando no que a máquina já confia
Um cliente TLS só é tão bom quanto suas âncoras de confiança, e distribuir um cacert.pem que envelhece mal é um problema de manutenção à parte. O motor pode usar as raízes em que o sistema operacional já confia:
oClient.TLSOptions.NativeTLS_Options.UseSystemRoots := True;
No Windows, elas vêm do armazenamento de sistema ROOT; no Linux e Android, do primeiro pacote de certificados encontrado entre os locais habituais. Isso vem desativado por padrão, o que mantém as âncoras de confiança exatamente naquilo que RootCertFile diz.
Pós-quântico, hoje, por causa de amanhã
Um atacante que não consegue quebrar sua sessão TLS hoje ainda pode gravá-la e guardá-la. A pergunta interessante não é se um computador quântico já existe agora, é por quanto tempo o seu tráfego continua sensível. É por isso que o TLS está migrando para a troca de chaves híbrida, em que o segredo compartilhado é seguro enquanto qualquer uma das duas metades resistir.
O motor negocia os grupos híbridos da RFC 10024, e a lista de grupos padrão já começa pelo híbrido:
oClient.TLSOptions.NativeTLS_Options.Groups :=
'X25519MLKEM768:SecP256r1MLKEM768:X25519';
Os três híbridos são X25519MLKEM768, SecP256r1MLKEM768 e SecP384r1MLKEM1024. As duas listas usam nomes no estilo OpenSSL separados por dois-pontos, e um valor vazio mantém os padrões do motor.
A criptografia por trás disso
A mesma versão adiciona as próprias primitivas pós-quânticas ao pack sgcCrypto, em Object Pascal, sem nenhuma biblioteca externa:
- ML-KEM (FIPS 203), ML-DSA (FIPS 204) e SLH-DSA (FIPS 205), com chaves lidas e escritas como SubjectPublicKeyInfo, como PKCS#8 nas formas seed, expanded e both, e como PEM, seguindo a RFC 9935, a RFC 9881 e a RFC 9909.
- X-Wing, o encapsulamento de chave híbrido que combina X25519 com ML-KEM-768.
- Certificados X.509 e requisições de certificado com chaves pós-quânticas, incluindo emissão a partir de uma autoridade certificadora pós-quântica.
- JWT assinados e verificados com ML-DSA-44, ML-DSA-65 e ML-DSA-87, os algoritmos da RFC 9964.
Eles são validados contra os vetores de resposta conhecida do NIST, que acompanham a biblioteca como um conjunto de testes, e não apenas como uma alegação.
Um endurecimento que você não precisa pedir
A mesma leva de mudanças endureceu o lado clássico contra ataques de temporização. As operações com a chave privada RSA usam blinding e uma exponenciação em tempo constante com verificação do resultado, a multiplicação escalar em curva elíptica e a assinatura Ed25519 rodam em tempo constante, e AES e GHASH não indexam mais uma tabela com bytes secretos. As chaves privadas são verificadas na importação, então uma chave que não pertence ao seu certificado é recusada em vez de produzir assinaturas que ninguém consegue verificar, e uma assinatura cuja codificação ASN.1 não é DER mínimo agora é rejeitada em vez de aceita.
Quando usar qual
OpenSSL e SChannel não vão a lugar nenhum, e para muitas aplicações continuam sendo a resposta certa: OpenSSL se você precisa de interoperabilidade TLS 1.2 com algo antigo, SChannel se a política do cliente é que o Windows é dono da criptografia. O motor nativo é para o caso em que a implantação é o problema: um único executável, sem nenhuma DLL ao lado, o mesmo comportamento no Windows e no Linux, e troca de chaves pós-quântica sem esperar a plataforma se atualizar.
Atualização
O motor faz parte do pack sgcCrypto e é selecionado por componente, então nada muda até você definir IOHandler. Um build sem as units de criptografia gera uma mensagem clara em vez de falhar de forma obscura no handshake.
Leia também
- Uma página web CRUD em Delphi em cinco minutos
- Faça uma pergunta ao seu grid Delphi em inglês simples
- sgcWebSockets 2026.10, tudo o mais nesta versão
Assista ao vídeo
Há um vídeo curto sobre isso no canal da eSeGeCe.
Dúvidas, feedback ou ajuda com a migração? Entre em contato — você receberá uma resposta das pessoas que escreveram o código.
