Verifica i dati creati dal lato client

2

Ho un'applet Java, che registra l'intero schermo dell'utente e carica le immagini sul server.

Se qualcuno fosse in grado (e molte persone potrebbero, lo so) di falsificare la registrazione dello schermo, potrebbero truffare i legittimi utenti del sistema dai loro soldi, quindi ci sono incentivi.

Ho letto alcune letture su questo argomento e sembra che qualsiasi tentativo di validazione lato client sia praticamente inutile. fidarsi del cliente è fuori questione. L'offuscamento e tale solo creare un inconveniente per gli utenti malintenzionati, non un ostacolo.

Questo problema è parzialmente risolto da una funzione che mi è venuta in mente, che consente al sistema di essere sicuro che la registrazione sia autentica fino a un certo punto. Dopo quel momento, tuttavia, diventa nuovamente ambiguo. Dopo questo punto l'hacker potrebbe sovrascrivere le funzioni della mia applet e caricare screenshot falsi. Oppure potrebbe cambiare il monitor del suo computer, dove il nuovo monitor ha uno schermo falso, ma identico, programmi aperti ecc.

In qualche modo devo essere sicuro al 99,9% che la registrazione sia autentica.

Finora ho trovato qualcosa del genere: Registrare tutti i tempi / le velocità di caricamento di tutte le schermate di tutti gli utenti e, se qualcuno è sospettato di barare, confrontare le velocità di upload con altri utenti, soprattutto prima e dopo il potenziale "cambio" / "sovrascrittura", l'ipotesi sottostante è quella di sovrascrivere il il codice rallenta leggermente l'applicazione o il passaggio dei monitor crea un ritardo anomalo.

** La domanda è: la mia teoria è valida? **

    
posta Markus Pint 28.12.2014 - 13:25
fonte

3 risposte

1

L'applicazione sembra funzionare principalmente lato client perché il server riceve solo quelle immagini. Quindi hai pochissimi dati di cui ti puoi fidare. Ciò rende molto difficile averlo a prova di manomissione o essere in grado di rilevare la manomissione dei dati.

Diciamo che ti aspetti che un client non temporaneo carichi immagini ogni secondo sul server. Supponendo che la manomissione richieda mezzo secondo, ci si aspetta che le immagini manomesse vengano caricate ogni secondo e mezzo, ma il client manomesso può iniziare l'elaborazione in precedenza e raggiungere comunque la velocità di caricamento di 1 secondo. Non puoi fare affidamento sui timestamp forniti dal cliente perché possono anche essere falsificati.

Hai detto di poter contare sulle percentuali di upload degli altri utenti al fine di stabilire un modello di tassi noti, ma cosa accadrebbe se un utente malintenzionato o un aggressore fosse più numeroso degli utenti legittimi? C'è un difficile problema teorico a riguardo. Un ingegnere di Google ha descritto il difficile problema di rilevare lo spam in base a rapporti utente e sistemi di creazione che potrebbero resistere attacchi sybil .

    
risposta data 28.12.2014 - 16:13
fonte
0

Somehow I need to be 99.9% sure that the recording is authentic.

Hai bisogno di aspettative più realistiche.

Quello che stai cercando di fare non funzionerà:

  • i dati di temporizzazione lato client sono per la maggior parte degli stati completamente dipendenti dal client che non ne fa uso e possono, ma anche gli O.S. non scegliere quel punto nel tempo per fare le cose; vaste porzioni del tempo dei clienti possono essere alterate, o sono abbastanza fragili da generare falsi positivi quando sono "legittimi". Keylogger e Benchmark delle prestazioni ... pensa in questo modo. I margini di errore degli O.S. le attività in background cambiano i tempi in base a margini maggiori rispetto alle soglie di ciò che speri di rilevare: non puoi sperare di riuscire in questo.

  • il tuo codice verrà eseguito sul lato client. Ciò significa che può essere invertito. Se ci sono abbastanza soldi su di esso potresti attirare l'attenzione di alcuni dei gruppi che sono abbastanza bravi da invertire qualsiasi codice ingannevole in poche ore - queste abilità sono state un effetto collaterale delle armi del malware -race da decenni in cui l'industria del malware ha combattuto contro battaglie simili a te e ha fatto molta pratica.

  • i pacchetti che inviano il tempo del client indietro a te possono essere modificati, e se ci sono abbastanza soldi in esso, lo saranno. Crittografare / trucchi intelligenti alzare un po 'la barra, ma è tutto solo più offuscamento che può essere battuto, e se ci sono soldi su di esso, lo sarà.

D'altra parte se riesci a superare i problemi di cui sopra, congratulazioni, hai superato una delle più grandi sfide nel computing moderno ... che varrebbe qualche miliardo.

    
risposta data 29.12.2014 - 04:22
fonte
0

Quali dati devi inviare esclusivamente come "immagine" dal client al server?  quello di cui hai bisogno è qualche segno che qualcuno stia scherzando con i tuoi dati, quindi invia più di un semplice "screengrab". inviare i dati in più di 1 modo (e utilizzare le connessioni TLS) quindi, un'immagine viene inviata come file di immagine binario e come set di valori non elaborati che produce detta immagine.

aggiungi alcuni "segni" sul tuo schermo che non sono facili da vedere. ma aggiungere un segno di "autenticazione" ad esso. (che include l'HASH dell'immagine stessa).

Aggiungi un sistema di sfida / risposta al tuo servizio di caricamento (quindi OGNI caricamento dovrebbe avere una risposta a una sfida specifica, che cambia per OGNI richiesta)

in questo modo puoi almeno assicurarti di conoscere alcune cose del tuo "cliente" e puoi confrontare i valori e impedire la riproduzione di

tuttavia il tuo obiettivo del + 90% non è realizzabile con questi mezzi. qualsiasi cosa al di sopra del 75% è un pio desiderio (e il 75% è già alto) tutto quello che puoi essere sicuro è che tutte le richieste che vengono fatte sono registrate e accreditate in modo che tu possa aggiustarle dopo l'azione se è coinvolto un gioco scorretto.

    
risposta data 29.12.2014 - 11:23
fonte

Leggi altre domande sui tag