Verifica client con server

1

Attualmente sto progettando un programma Java di base che utilizza i socket per comunicare da un server a più client. Voglio che i client non siano modificati, tuttavia, per evitare che gli utenti provano a utilizzare il software, non come è stato concepito. Sto considerando di utilizzare un checksum MD5 e di inviarlo al server per confrontarlo con ciò che il checksum dovrebbe essere, ma un client modificato potrebbe semplicemente inviare un checksum errato per falsificare il server nel pensare che il client è intatto.

Per dirla semplicemente, come farei per verificare un client in modo tale che un client modificato non possa fingere di essere non modificato?

    
posta DonkeyCore 09.07.2015 - 23:20
fonte

2 risposte

1

Esaminandolo nei commenti con @JulianKnight, abbiamo deciso che l'invalidazione e l'aggiornamento sarebbero il modo migliore per ottenere questo risultato.

Per essere più specifici; il server invalida il client frequentemente (ma non abbastanza da causare stress sul computer host) e il client deve aggiornarsi ogni volta che viene invalidato per ottenere un nuovo hash md5sum valido con il server. L'utilizzo di questo metodo fa in modo che se qualcuno modifica il client, deve aggiornare costantemente il proprio codice ai nuovi client, rendendo le modifiche troppo fastidiose per continuare a farlo.

    
risposta data 10.07.2015 - 02:16
fonte
2

SE quello che chiedi era possibile, POI non ci sarebbero stati software o pirateria video. Potresti avere un software di riproduzione che semplicemente riproduce il film ma rifiuta di scaricare i dati in un file e che il software di riproduzione "dimostrerà" il suo stato non modificato al server, consentendo così il download.

Questo ci dice che quello che cerchi deve essere duro e varrà un sacco di soldi se fosse mai stato inventato. Ci sono anche buone ragioni teoriche per cui è effettivamente impossibile, il che spiegherebbe perché nessuno ha trovato un modo per convalidare in modo affidabile il software da remoto. La linea di fondo è che non è possibile garantire l'integrità di tutto ciò che viene eseguito sulla macchina dell'utente stesso.

Ora, se hai un alto livello di controllo sull'hardware di destinazione, allora le cose diventano possibili. Questo è il modello di sicurezza delle console di gioco esistenti: il firmware e tutti i giochi sono sotto stretto controllo degli editori; nessun nuovo software entra in una console se non è stato firmato digitalmente da un editore autorizzato. I semplici utenti non possono semplicemente programmare la propria console. Questo è ancora difficile da eseguire correttamente: il firmware della console, come qualsiasi software, ha dei bug e quindi questa schermatura basata sulle firme potrebbe essere risolta occasionalmente, ma almeno teoricamente può funzionare.

Ma per un PC, dimenticalo.

    
risposta data 09.07.2015 - 23:46
fonte

Leggi altre domande sui tag