
Versão segura (com AEAD) do USTP, chamada USTP-Secure (ustps://)
USTP significa UDP Speedy Transmission Protocol.
O USTP mantém o mesmo modelo de transporte autenticado, mas o nome do projeto agora é simplesmente USTP novamente.
Por padrão, o USTP usa AEAD para DATA.
Ele também suporta um modo opcional negociado de cleartext + HMAC para DATA, no qual os bytes de payload são visíveis na rede, mas a adulteração é detectada e rejeitada.
O USTP agora suporta um controlador de congestionamento opcional chamado USTP Congestion. Ele continua sendo UDP-first, mas pode opcionalmente desacelerar e voltar a acelerar quando o caminho começa a mostrar sinais de congestionamento.
Status: Beta
O USTP não é mais apenas uma prova de conceito. Ele está atualmente na fase Beta.
O USTP pode ser usado para muitos tipos de aplicações e transportes.
Este repositório, no entanto, é focado especificamente em streaming sobre USTP.
02/08/2026: USTP-Secure agora voltou a ser USTP.
USTP-Secure era um nome antigo do projeto e não é mais adequado para ele.USTP agora é preferido novamente.UDP Speedy Transmission Protocol, sem Secure no título.2026-07-18: O USTP/2 Beta foi removido da árvore atual.
Codex usando GPT-5.4 (Low).--loss 33.Brazil -> Canada com cerca de 140ms de RTT.chacha20 = CHACHA20_POLY1305aes-256-gcm = AES_256_GCMaes-128-gcm = AES_128_GCMchacha20DATA é AEAD.DATA é cleartext + HMAC por pacote.HELLO, ACK, RETRANSMIT_REQUEST, CLOSE) permanecem em texto claro de propósito.ACK e NACK/RETRANSMIT_REQUEST permanecem em texto claro, mas são autenticados com uma tag HMAC por sessão.DATA usam um formato de frame binário chamado UPACK (UPAK na rede).IP:port de origem.--cipher for definido no servidor, o servidor usa exatamente essa cifra.--cipher for omitido ou definido como auto, o servidor usa a cifra solicitada pelo cliente.DATA é negociado separadamente da escolha de cifra:
--cleartext auto|on|off--cleartext on|offautooffauto, o servidor segue a solicitação do cliente.on, o servidor força cleartext + HMAC.off, o servidor força AEAD.~/.ustps_host_key por padrão, para que o TOFU permaneça estável entre reconexões e reinicializações.--regen-key no servidor apenas quando você quiser intencionalmente rotacionar essa chave de host.ACK:, NACK:, HELLO: e CLOSE: são os prefixos dos registros de controle em texto simples.USS1 significa UDP Speedy Secure, versão 1.USC1 significa UDP Speedy Clear, versão 1.UPAK é o marcador binário do frame DATA UPACK.ACK: 10, NACK: 42, HELLO: ... e CLOSE:.UPAK identifica pacotes DATA binários após a descriptografia.USS1 é o formato do envelope AEAD seguro externo.USC1 é o formato do envelope DATA externo em texto claro+HMAC.USS1... para DATA protegido por AEADUSC1... para DATA em texto claro+HMACUSTP Congestion opcional, negociado durante o handshake.seq de transporte quanto um stream_pos voltado à aplicação.seq é usado para ACK, detecção de perda, retransmissão e amostragem de RTT.stream_pos informa à aplicação onde o payload pertence no fluxo lógico de bytes.seq é um contador de 32 bits que começa em 1 para cada nova sessão.stream_pos é um contador de bytes de 64 bits que começa em 0 para cada novo fluxo lógico.HELLO de transporte em texto simples, carregando sua chave pública X25519, a cifra solicitada, o modo de controle de congestionamento solicitado (on ou off) e o modo de proteção de DATA solicitado (cleartext on|off).session_id gerado em Base64DATA negociadoDATA.IP:port de origem que completou o desafio.session_id ainda é usado como rótulo de sessão, mas não é aceito a partir de um IP:port diferente.HELLOUSTPS-CHALLENGE1 carregando token, session_id, cifra selecionada, modo de controle de congestionamento negociado, modo de proteção de DATA negociado e chave pública do servidorUSTPS-CHALLENGE-REPLY1USTPS-SESSION1IP:port de origem consegue realmente receber pacotes ali