Pular para o conteúdo

Revolucionando a Criptografia de Alta Performance no Delphi: Conheça a Arquitetura Nativa TLS/SSL, MessagePack e Permessage-Deflate do Dext Framework (S43)

Arquitetura TLS/SSL Nativa de Alta Performance no Dext Framework

Introdução: O Fim da Dependência de Reverse Proxies no Delphi

Seção intitulada “Introdução: O Fim da Dependência de Reverse Proxies no Delphi”

Historicamente, construir aplicações web seguras e APIs corporativas em Delphi costumava exigir a presença obrigatória de uma camada externa de Reverse Proxy (como NGINX, Apache ou HAProxy) para realizar o término da camada TLS/SSL (TLS Termination). Embora funcional, essa abordagem trazia severas desvantagens:

  • Múltiplos Saltos de Rede (Network Hops): Cada requisição precisa passar do cliente para o proxy e, em seguida, do proxy para o processo Delphi.
  • Sobrecarga de Mudança de Contexto: A troca entre processos do sistema operacional eleva a latência média e reduz a vazão máxima de requisições por segundo.
  • Complexidade Operacional: A gestão de certificados, contêineres e arquivos de configuração duplica a carga de trabalho de infraestrutura e DevOps.

Com a conclusão da Especificação S43 (Net-Advanced) do Dext Framework, esse paradigma mudou definitivamente. O Dext passa a contar com uma Arquitetura de TLS Nativa de Alta Performance (Dext.Net.Security), capaz de cifrar e decifrar pacotes diretamente dentro do processo compilado da aplicação Delphi, com alocação zero no heap (zero-copy / lock-free) em ambientes Windows e Linux.

Nota de Arquitetura: É importante destacar que ferramentas de infraestrutura como NGINX, HAProxy, Traefik ou AWS ALB continuam desempenhando um papel valioso em arquiteturas corporativas de grande escala (para balanceamento de carga Nível 7, proteção WAF e roteamento de borda). O objetivo da Spec S43 não é substituir esses componentes quando necessários, mas sim eliminar a dependência obrigatória deles no ecossistema Delphi. Com a criptografia nativa no Dext, sua aplicação ganha autonomia total para rodar em contêineres leves sem sidecars, além de viabilizar arquiteturas Zero-Trust com criptografia de ponta a ponta (End-to-End Encryption - E2EE) até o processo hospedeiro.

Neste artigo completo, apresentamos em detalhes os 11 pilares técnicos que compõem a especificação S43, com destaque especial para a comparação entre a CLI de certificados do Dext (dext.exe) e o ecossistema .NET.


Diagrama da Arquitetura Criptográfica TLS/SSL do Dext Framework


Visão Geral dos 11 Pilares da Especificação S43

Seção intitulada “Visão Geral dos 11 Pilares da Especificação S43”
#Funcionalidade / PilarDescrição & Destaque de Implementação
1Abstração TLS Unificada (Dext.Net.Security.pas)Interfaces IDextTLSEngine, IDextTLSContextProvider, IDextTLSStream e TDextTLSOptions para desacoplamento de transporte.
2Motor OpenSSL 3.x Memory BIO (BIO_s_mem)Decifragem in-memory zero-copy, buffers rbio/wbio e envio não-bloqueante via FlushTLSOutput nos reatores epoll (Linux) e IOCP (Windows).
3Windows http.sys Kernel SSL BindingCriptografia no modo Kernel Schannel com busca por Cert Hash no Windows Cert Store e configuração via appsettings.json.
4CLI dext dev-certs https ToolingCLI em Pascal puro (Windows CryptoAPI) com extensão SAN ASN.1 DER (localhost/127.0.0.1) e trust automático no Root Store sem dependência de PowerShell ou .NET.
5Estratégia de Certificados Gratuitos vs. ComerciaisAnálise comparativa DV, OV, EV (Let’s Encrypt, ZeroSSL, Cloudflare vs. DigiCert/Sectigo) com suporte nativo ao desafio HTTP-01 do protocolo ACME (RFC 8555).
6Indy WebServer / Provedor Taurus TLSAtualização transparente de servidores Indy existentes para TLS 1.3 nativo e OpenSSL 3.x via diretiva {$DEFINE DEXT_ENABLE_TAURUS_TLS}.
7Redis Client com SSL/TLS (rediss://)Conexão cifrada no TDextRedisClient com suporte a TLS 1.3 na porta 6380 para clusters de alta segurança.
8REST Client HTTPS (TRestClient)Chamadas REST fluentes com .ConfigureSsl(), aceitação de certificados autoassinados e callbacks de validação customizados.
9WebSockets Seguros (wss://)Handshake HTTPUpgrade (Upgrade: websocket) cifrado dentro do túnel TLS seguro e verificação de cabeçalhos RFC 6455.
10WebSocket Permessage-Deflate (RFC 7692)Compactação transparente zlib DEFLATE com janela deslizante (sliding window), reduzindo o tamanho de payloads na rede em até 80%.
11Protocolo Binário MessagePack para HubsEnquadramento VarInt prefixado (Dext.Web.Hubs.Protocol.MessagePack.pas) compatível com SignalR, com zero alocação de strings em broadcasts.

1. Camada de Abstração Criptográfica Unificada (Dext.Net.Security.pas)

Seção intitulada “1. Camada de Abstração Criptográfica Unificada (Dext.Net.Security.pas)”

Para evitar o acoplamento do código de negócio a uma biblioteca específica (OpenSSL, Schannel ou Indy), o Dext estabeleceu um contrato unificado baseado em interfaces orientadas a alta performance:

  • IDextTLSContextProvider: Fábrica abstrata responsável por carregar chaves privadas, certificados X.509 e configurar protocolos ALPN (h2, http/1.1).
  • IDextTLSEngine: Motor de cifragem assíncrono em memória. Recebe bytes criptografados da rede e produz o texto claro (plaintext) sem bloqueio de threads.
  • IDextTLSStream: Invólucro de stream para clientes TCP de longa duração.
  • TDextTLSOptions: Estrutura unificada de opções compartilhada entre o Servidor Web, Cliente REST e Cliente Redis.
var
Options: TDextTLSOptions;
begin
Options.Enabled := True;
Options.Mode := tlsmServer;
Options.CertFile := 'server.crt';
Options.KeyFile := 'server.key';
Options.ALPNProtocols := ['h2', 'http/1.1'];
Options.Provider := 'OpenSSL';
end;

2. Motor Nativo OpenSSL 3.x com Memory BIOs (BIO_s_mem) em epoll e IOCP

Seção intitulada “2. Motor Nativo OpenSSL 3.x com Memory BIOs (BIO_s_mem) em epoll e IOCP”

Em ambientes Linux (sobre o reator de eventos não-bloqueantes epoll) e em sockets assíncronos Windows (IOCP), chamadas bloqueantes de socket degradam drasticamente o throughput. O Dext resolve isso integrando o OpenSSL 3.x e 1.1.1 através de Memory BIOs (BIO_s_mem).

O motor cria dois buffers de memória virtuais (rbio e wbio):

  1. Os pacotes recebidos da rede via recv são injetados no rbio via BIO_write.
  2. O método SSL_read realiza a decifragem diretamente nos buffers reutilizáveis da aplicação.
  3. As respostas são cifradas via SSL_write para o wbio.
  4. O método não-bloqueante FlushTLSOutput drena o wbio e envia os pacotes cifrados imediatamente ao socket.

Mecanismo Interno dos Memory BIOs OpenSSL no Dext Framework


3. Vinculação Nativa no Kernel Windows (http.sys & Schannel)

Seção intitulada “3. Vinculação Nativa no Kernel Windows (http.sys & Schannel)”

Em servidores Windows, o Dext conecta-se diretamente ao driver de Kernel http.sys e ao provedor de segurança Schannel. Isso permite que o sistema operacional trate o SSL no modo Kernel (Kernel Space), dispensando a necessidade de DLLs externas do OpenSSL em produção:

{
"Server": {
"Port": 443,
"UseHttps": "true",
"SslProvider": "HttpSys",
"SslCertHash": "450D882D8080B6F92B6F2512ABE6FAB9768035C6",
"StoreName": "MY"
}
}

4. CLI de Certificados de Desenvolvimento: dext.exe vs. .NET SDK

Seção intitulada “4. CLI de Certificados de Desenvolvimento: dext.exe vs. .NET SDK”

Um dos maiores diferenciais de DX (Developer Experience) da especificação S43 é o comando dext dev-certs https.

No ecossistema Microsoft .NET, desenvolvedores utilizam o comando dotnet dev-certs https --trust para provisionar certificados SSL de teste no ambiente local. O Dext traz essa mesma experiência fluida para o desenvolvedor Delphi.

Característicadotnet dev-certs https (.NET)dext dev-certs https (Dext CLI)
Tecnologia SubjacenteC# / CLR (.NET Runtime)Pascal Nativo (Compilado / Zero Runtime)
Dependência de ExecutáveisRequer .NET SDK instaladoExecutável autônomo nativo (dext.exe)
Geração de ChavesRSA 2048-bit via .NET CryptoRSA 2048-bit nativo via Windows CryptoAPI
Suporte a SAN (Subject Alt Name)localhost, 127.0.0.1localhost, 127.0.0.1, ::1 (ASN.1 DER)
Arquivos GeradosCertificado no Cert Storeserver.crt, server.key, server.pfx + Store
Automação no Windows KernelRequer permissão elevadaVincula a porta no Kernel (http.sys) via netsh
Confiança Automática (--trust)Instala em LocalMachine\RootInstala em LocalMachine\Root via crypt32.dll
Terminal window
# Gera server.crt, server.key, server.pfx e instala a confiança no SO
dext dev-certs https --trust

Interface CLI do Dext e Geração de Certificados de Desenvolvimento HTTPS

A CLI do Dext foi desenvolvida em Pascal puro diretamente sobre a advapi32.dll e crypt32.dll da API do Windows:

  1. Invoca CryptGenKey para criar a chave privada RSA de 2048 bits com flag de exportação.
  2. Codifica em memória a estrutura ASN.1 DER para a extensão Subject Alternative Name (SAN - 2.5.29.17).
  3. Assina o certificado X.509 via CertCreateSelfSignedCertificate usando SHA-256 (szOID_RSA_SHA256RSA).
  4. Importa o certificado para os repositórios My e Root do SO, eliminando qualquer aviso de segurança no Chrome, Edge ou Firefox.

5. Estratégia de Certificados em Produção (Gratuitos vs. Comerciais) e Automação ACME

Seção intitulada “5. Estratégia de Certificados em Produção (Gratuitos vs. Comerciais) e Automação ACME”

O Dext inclui suporte total a estratégias modernas de certificados para produção:

  • Certificados Gratuitos (Let’s Encrypt / ZeroSSL): Válidos por 90 dias, focados em Validação de Domínio (DV). O Dext permite expor nativamente a rota do desafio HTTP-01 do protocolo ACME (RFC 8555):
// Rota nativa no Dext para responder desafios do Let's Encrypt (HTTP-01)
App.Builder.MapGet('/.well-known/acme-challenge/{token}',
procedure(Ctx: IHttpContext)
var
Token, ChallengePath: string;
begin
Token := Ctx.Request.GetRouteParam('token');
ChallengePath := TPath.Combine('/var/www/html/.well-known/acme-challenge', Token);
if TFile.Exists(ChallengePath) then
Ctx.Response.Write(TFile.ReadAllText(ChallengePath))
else
Ctx.Response.SetStatusCode(404);
end);
  • Certificados Comerciais (DigiCert, Sectigo, GlobalSign): Para ambientes corporativos que exigem seguros financeiros (warranties) de até US$ 1,5 milhão e validações jurídicas institucionais (OV e EV).

Para aplicações corporativas existentes que utilizam o servidor web baseado em componentes Indy, o Dext fornece o provedor Taurus TLS (Dext.Web.Indy.SSL.Taurus.pas).

Ativando a diretiva {$DEFINE DEXT_ENABLE_TAURUS_TLS}, a aplicação passa a utilizar o TDextTaurusTLSContext, equipando o servidor Indy tradicional com TLS 1.3 nativo e bibliotecas do OpenSSL 3.x modernas sem alterar a estrutura da aplicação.


O cliente Redis de alta velocidade do Dext (TDextRedisClient) agora oferece suporte nativo a conexões seguras cifradas via esquema rediss://:

var
Options: TDextRedisOptions;
Redis: TDextRedisClient;
begin
Options := TDextRedisOptions.Default;
Options.Host := 'redis.production.internal';
Options.Port := 6380; // Porta SSL padrão do Redis
Options.UseSsl := True;
Options.SslOptions.Provider := 'OpenSSL';
Redis := TDextRedisClient.Create(Options);
Redis.Connect;
Redis.SetKey('user_session', 'encrypted_token');
end;

8. Chamadas REST HTTPS com Validação Avançada (TRestClient)

Seção intitulada “8. Chamadas REST HTTPS com Validação Avançada (TRestClient)”

Ao consumir Web APIs externas sobre HTTPS, o TRestClient fornece controle fluente sobre o processo de validação de certificados SSL:

var
Client: TRestClient;
begin
Client := TRestClient.Create('https://api.parceiro.com');
Client.Get('/v1/status')
.ConfigureSsl(
procedure(var Options: TDextTLSOptions)
begin
Options.VerifyServerCertificate := True;
Options.Protocols := [tls1_2, tls1_3];
end)
.OnComplete(
procedure(Res: IRestResponse)
begin
Writeln('Status da API Parceira: ', Res.StatusCode);
end)
.Start;
end;

O suporte a WebSockets em tempo real do Dext realiza a negociação do handshake HTTPUpgrade (Upgrade: websocket) diretamente dentro do túnel TLS cifrado, verificando a integridade dos cabeçalhos RFC 6455 (Sec-WebSocket-Key, Sec-WebSocket-Version) sob o esquema wss://.


Para aplicações real-time com alto tráfego de mensagens (como dashboards de telemetria e gráficos financeiros), o Dext implementa o padrão RFC 7692 Permessage-Deflate.

O servidor negocia parâmetros de compactação zlib em janela deslizante (sliding window) com o cliente, reduzindo o consumo de banda na rede em até 80%:

App.Builder.MapHub<TChatHub>('/hubs/chat',
procedure(Options: TDextHubOptions)
begin
// Compactação transparente de frames WebSocket RFC 7692
Options.EnablePermessageDeflate := True;
end);

11. Protocolo Binário MessagePack para Hubs (Compatível com SignalR)

Seção intitulada “11. Protocolo Binário MessagePack para Hubs (Compatível com SignalR)”

Embora o protocolo JSON para Hubs seja prático, ele impõe custo computacional na conversão de strings e overhead de cabeçalhos. O Dext includes o protocolo binário nativo MessagePack (Dext.Web.Hubs.Protocol.MessagePack.pas), 100% compatível com os clientes SignalR oficiais:

uses
Dext.Web.Hubs.Protocol.MessagePack;
App.Builder.MapHub<TChatHub>('/hubs/chat',
procedure(Options: TDextHubOptions)
begin
Options.EnableMessagePack := True;
Options.EnablePermessageDeflate := True;
end);

Diferencial de Performance: Durante o envio de broadcasts em massa (Clients.All.SendAsync), o Dext codifica a mensagem binária uma única vez em memória e transmite a sequência de bytes VarInt diretamente a todos os clientes conectados com alocação zero de strings no heap.


Para validar a estabilidade e a eficiência do motor TLS OpenSSL nativo sob condições de estresse, executamos uma suíte de testes de carga utilizando a ferramenta bombardier:

Terminal window
# Execução da suíte de carga S43 no servidor epoll Linux64
powershell -File "Benchmarks\run_s43_http_load.ps1" -Engine epoll -Concurrency 32

Especificação do Ambiente de Teste e Limitações de Hardware

Seção intitulada “Especificação do Ambiente de Teste e Limitações de Hardware”

É importante contextualizar o ambiente em que as medições foram realizadas:

  • Ambiente Hospedeiro: Estação de desenvolvimento executando Windows 11 com Subsistema do Windows para Linux (WSL2 / Ubuntu 22.04 LTS).
  • Hardware Utilizado: Processador Intel Core i7-8550U @ 1.80GHz (8ª Geração - CPU mobile de ultrabook relativamente antiga) com 4 núcleos físicos / 8 threads lógicas e 16 GB de RAM DDR4.
  • Concorrência de Recursos: O gerador de carga (bombardier) e o servidor HTTP Dext rodaram na mesma máquina física, disputando os mesmos 4 núcleos de CPU, a interface de rede loopback virtualizada e a largura de banda de memória do WSL2.
  • Limitação de Hardware: Trata-se de uma medição em uma CPU de notebook de baixa voltagem. A disputa por ciclos de clock entre o gerador de estresse e o servidor limita a vazão máxima local. Em servidores dedicados de produção (bare-metal com CPUs corporativas Xeon/EPYC de 32+ cores ou instâncias em nuvem com interfaces 10GbE+), a vazão se multiplica proporcionalmente à capacidade de hardware.
  • Vazão de Requisições (Throughput): 32.338,99 requisições por segundo (com picos de 34.882 req/s no ambiente virtualizado compartilhado).
  • Latência Média: 986 microsegundos (resposta sub-milisegundo constante).
  • Estabilidade Criptográfica: 100% de sucesso (322.252 requisições cifradas concluídas com status 200 OK, 0 erros ou conexões caídas).
  • Consumo de Memória: Apenas 11 MB de RAM de Working Set durante todo o teste de carga, comprovando a ausência de vazamentos de memória (memory leaks) ou pausas por Garbage Collector.

Dashboard de Métricas e Performance de Criptografia TLS do Dext Framework


A conclusão da especificação S43 (Net-Advanced) consolida o Dext Framework como a plataforma web compilada em Pascal mais avançada e performática da atualidade.

Entregando criptografia TLS nativa in-process, gerenciamento automatizado de certificados de desenvolvimento via CLI nativa, suporte a Redis SSL, HTTPS client fluente, além de otimizações de transporte de ponta como Permessage-Deflate e MessagePack para Hubs, o Dext aproxima o ecossistema Delphi dos mais modernos padrões da indústria (como .NET, Node.js, Go e Rust).


Conheça o Projeto e Faça Parte da Comunidade Dext

Seção intitulada “Conheça o Projeto e Faça Parte da Comunidade Dext”

Se você desenvolve em Delphi e busca alta performance, segurança e simplicidade para a Web, convidamos você a explorar o Dext Framework!

Você pode testar estas novas funcionalidades, participar das discussões da comunidade, abrir Issues ou sugestões e deixar a sua ⭐ (Star) no repositório oficial no GitHub para apoiar o projeto:

#Delphi #SoftwareArchitecture #WebDevelopment #CyberSecurity #Performance #DotNet #OpenSSL #WebSockets #MessagePack #DextFramework