docs(netcode): mur DTLS franchi côté serveur + boucle d'itération live
Build Game Server / build (push) Successful in 14s

This commit is contained in:
2026-07-16 23:07:43 +02:00
parent 36122578a3
commit a21ac4d0e4
+19
View File
@@ -88,3 +88,22 @@ On a amené un serveur dédié gameplay The Cycle plus loin qu'aucun projet publ
(le projet communautaire deiteris/Prospect n'émule que les services en ligne, pas le
netcode de jeu). Le mur restant — DTLS-PSK dont la clé est derrière un packer
anti-triche — est un chantier crypto + RE dynamique d'un autre ordre de grandeur.
## MAJ (2026-07-16) — mur DTLS franchi (côté serveur)
- **PSK récupérée** : la clé 32 octets a été obtenue au runtime (dump du `.text`
déchiffré du client via `/proc/<pid>/mem` sous Proton — BattlEye n'a pas de driver
kernel sous Linux). Stockée dans **Vault** (`secret/the-cycle`, clé
`GAMESERVER_DTLS_PSKS`, format `user_id:hex32`), **jamais dans le repo**.
- **Serveur DTLS-PSK implémenté** (BouncyCastle) :
- `DtlsPskStore` (env `PROSPECT_DTLS_PSKS`), `DtlsPacketTransport` (pont bloquant→paquet),
`ProspectPskTlsServer` (DTLS 1.2, identité=user_id), `DTLSHandlerComponent` (pipeline).
- `UWorld` sur `NMT_Hello` chiffré : PSK connue → `NMT_EncryptionAck` + handshake.
- Compile (0 erreur). **Non validé en live.**
- **Reste (itération live obligatoire, invalidable hors client)** :
1. ordre exact du pipeline `[DTLS, Stateless]` et routage des records de handshake
(émis via `LowLevelSend` — doivent porter le framing stateless attendu) ;
2. framing DTLS-sur-PacketHandler d'UE (record layer, cookie DTLS éventuel) ;
3. bascule handshake→données applicatives.
Méthode : lancer `Prospect.Server.Game` avec la PSK, diriger le client dessus, itérer
sur les logs serveur.