
Versione sicura (con AEAD) di USTP, chiamata USTP-Secure (ustps://)
USTP significa UDP Speedy Transmission Protocol.
USTP mantiene lo stesso modello di trasporto autenticato, ma il nome del progetto ora è semplicemente USTP di nuovo.
Per impostazione predefinita, USTP utilizza AEAD per DATA.
Supporta inoltre una modalità opzionale negoziata cleartext + HMAC per DATA, in cui i byte del payload sono visibili sul filo ma le manomissioni vengono rilevate e rifiutate.
USTP ora supporta un controller di congestione opzionale chiamato USTP Congestion. Rimane UDP-first, ma può opzionalmente rallentare e risalire quando il percorso inizia a mostrare segnali di congestione.
Stato: Beta
USTP non è più solo una proof of concept. Attualmente è in fase Beta.
USTP può essere utilizzato per molti tipi di applicazioni e trasporti.
Questo repository, tuttavia, è focalizzato specificamente sullo streaming su USTP.
02/08/2026: USTP-Secure è ora tornato a essere USTP.
USTP-Secure era un vecchio nome del progetto e non è più adatto al progetto.USTP è ora nuovamente preferito.UDP Speedy Transmission Protocol, senza Secure nel titolo.2026-07-18: USTP/2 Beta è stato rimosso dall'albero corrente.
Codex usando GPT-5.4 (Low).--loss 33.Brazil -> Canada con circa 140ms di RTT.chacha20 = CHACHA20_POLY1305aes-256-gcm = AES_256_GCMaes-128-gcm = AES_128_GCMchacha20DATA predefinita è AEAD.DATA opzionale è cleartext + HMAC per pacchetto.HELLO, ACK, RETRANSMIT_REQUEST, CLOSE) rimangono in chiaro di proposito.ACK e NACK/RETRANSMIT_REQUEST rimangono in chiaro, ma sono autenticati con un tag HMAC per sessione.DATA utilizzano un formato di frame binario chiamato UPACK (UPAK sul filo).IP:port di origine.--cipher è impostato sul server, il server utilizza esattamente quel cifrario.--cipher è omesso o impostato su auto, il server utilizza il cifrario richiesto dal client.DATA viene negoziata separatamente dalla scelta del cifrario:
--cleartext auto|on|off--cleartext on|offautooffauto, il server segue la richiesta del client.on, il server forza cleartext + HMAC.off, il server forza AEAD.~/.ustps_host_key per impostazione predefinita, in modo che TOFU rimanga stabile tra riconnessioni e riavvii.--regen-key sul server solo quando vuoi intenzionalmente ruotare quella chiave host.ACK:, NACK:, HELLO: e CLOSE: sono i prefissi dei record di controllo in chiaro.USS1 significa UDP Speedy Secure, versione 1.USC1 significa UDP Speedy Clear, versione 1.UPAK è il marcatore del frame DATA binario UPACK.ACK: 10, NACK: 42, HELLO: ... e CLOSE:.UPAK identifica i pacchetti DATA binari dopo la decifratura.USS1 è il formato dell'involucro esterno sicuro AEAD.USC1 è il formato dell'involucro esterno DATA in chiaro+HMAC.USS1... per DATA protetto da AEADUSC1... per DATA in chiaro+HMACUSTP Congestion opzionale, negoziato durante l'handshake.seq di trasporto sia uno stream_pos rivolto all'applicazione.seq è usato per ACK, rilevamento delle perdite, ritrasmissione e campionamento RTT.stream_pos indica all'applicazione dove appartiene il payload nel flusso di byte logico.seq è un contatore a 32 bit che parte da 1 per ogni nuova sessione.stream_pos è un contatore di byte a 64 bit che parte da 0 per ogni nuovo flusso logico.HELLO di trasporto in chiaro che trasporta la sua chiave pubblica X25519, il cifrario richiesto, la modalità di controllo della congestione richiesta (on o off) e la modalità di protezione DATA richiesta (cleartext on|off).session_id Base64 generatoDATA negoziataDATA.IP:port di origine che ha completato la sfida.session_id è ancora usato come etichetta di sessione, ma non è accettato da un IP:port diverso.HELLOUSTPS-CHALLENGE1 che trasporta token, session_id, cifrario selezionato, modalità di controllo della congestione negoziata, modalità di protezione DATA negoziata e chiave pubblica del serverUSTPS-CHALLENGE-REPLY1USTPS-SESSION1IP:port di origine può effettivamente ricevere pacchetti lì