Sto cercando di fare un brainstorming di uno schema di sicurezza per il problema di verificare l'integrità del software del server. Il dominio di questo problema è costituito dai server di gioco basati sui server dedicati all'origine di Valve. Questi server sono utilizzati nei giochi competitivi e l'integrità di questi server può essere incredibilmente importante nell'esecuzione di tornei e quant'altro.
I client di gioco sono già stati verificati abbastanza bene in un certo numero di modi dal sistema Steam di Valve. A causa dei vari sistemi di verifica dei contenuti e anti-cheat (VAC), possiamo essere abbastanza sicuri che nessun contenuto lato client è stato modificato.
Tuttavia, sul lato server, ci sono pochi o nessun schema di protezione in atto per garantire che i client stiano giocando su versioni non modificate del software. Il software stesso è intrinsecamente configurabile (tramite variabili e comandi di configurazione) e consente estensioni delle funzionalità tramite Plugin del server . Inoltre, non ci sono controlli sul codice server sul filesystem o in memoria. I server SRCDS sono intrinsecamente modificabili su molti livelli.
Questo pone un problema nel gioco competitivo sul motore Source. È possibile che un numero qualsiasi di modifiche di ConVar, plug-in o modifiche binarie del server possano essere utilizzate per "ingannare" - per dare un vantaggio nelle meccaniche di gioco a una squadra piuttosto che un'altra o un giocatore piuttosto che un'altra. Al momento non è possibile per un cliente o una terza parte verificare che il server SRCDS non sia modificato.
La soluzione di base a questo problema sembra essere aperta. Possiamo apportare modifiche ai valori di ConVar per essere annunciati ai clienti, creare elenchi di plug-in in esecuzione sui server disponibili per i client e persino eseguire controlli CRC sui file su disco e in memoria e fornire ai client i valori risultanti. Tuttavia, nessuno di questi può essere differenziato da un server che falsifica le informazioni annunciate / fornite. Qualunque cosa scenda in questa direzione è essenzialmente come l'oscurità piuttosto che la sicurezza.
Come posso progettare un sistema per verificare l'integrità del software del server utilizzando solo le risposte / risposte a quel server?
P.S. Sentiti libero di fare domande o chiedere ulteriori specifiche.