Prevenire l'attacco di contraffazione della richiesta

2

Non so se ho usato il termine correttamente ma fondamentalmente questo è lo scenario:

Sto lavorando a un'applicazione strega su ogni computer che l'installazione deve effettuare una richiesta a un server che notifica al server che l'app è stata installata correttamente.Il sistema che utilizzo attualmente ha un valore di checksum che viene calcolato sul lato client e sul lato server che convaliderà un'installazione. Il problema è che qualcuno può falsificare la richiesta decompilando l'applicazione e calcolare il checksum usando lo stesso algoritmo che uso per calcolarlo.

Quindi oltre all'utilizzo della crittografia RSA c'è un modo per proteggere la mia applicazione da un simile attacco?

    
posta opc0de 07.04.2013 - 09:03
fonte

3 risposte

1

La tecnica di "mantenere l'applicazione lontana dall'utente" è fondamentalmente un'oscurità e dovrebbe essere aggiunta solo come livello e non come vera misura di sicurezza.

Un modo per gestirlo sarebbe aggiungere un componente aggiuntivo che richiede la convalida con il server, come un token di licenza o un nome, prodotto da una sorta di processo legittimo come una registrazione web, che è quindi parte del processo di attivazione.

Questo può ancora essere giocato, ma è molto più facile da rilevare sul lato server quando sono presenti entrambi i componenti. Inoltre, è possibile inserire un controllo di convalida sul lato server in base a un numero di variabili acquisite durante l'attivazione, ad esempio: indirizzo IP di origine, sistema operativo, ecc. Quindi se si sono verificate 10.000 attivazioni da un paese imprevisto all'improvviso , o qualche altro modello, potresti disabilitare le attivazioni future da quella posizione.

    
risposta data 07.04.2013 - 19:26
fonte
3

Questa è un'altra variante del classico problema di trust-the-client. È necessario fornire al computer client informazioni sufficienti per generare la firma, a quel punto se l'utente malintenzionato ha accesso a quella macchina che si perde. RSA non ti aiuterà lì.

Per farlo funzionare è necessario assicurarsi che gli operatori dei computer di destinazione non abbiano accesso all'applicazione. vale a dire: non sono amministratori, l'applicazione viene installata da un altro utente come tale Sistema locale e la chiave condivisa (o chiave pubblica per RSA) non viene lasciata in giro da qualche parte in cui possono vederla quando l'applicazione è pronta per l'uso. p>     

risposta data 07.04.2013 - 11:51
fonte
2

L'unico modo per garantire che solo il tuo codice non modificato venga eseguito sul lato client è quello di integrare la cooperazione di hardware resistente alla manomissione e incorruttibile - ad es. un TPM . In larga misura, questo è il modello di sicurezza delle console di gioco come PS3 (l'hardware speciale è quindi integrato in la CPU a banda larga del computer ). Quando Sony non funziona, questo funziona abbastanza bene (cioè Sony ne ricava ancora molti soldi, la pirateria del software e le applicazioni modificate rimangono a basso impatto finanziario).

Non puoi contare sull'esistenza di tale hardware su PC o smartphone oggi. Nessuna quantità di RSA può sostituirla.

    
risposta data 07.04.2013 - 17:06
fonte

Leggi altre domande sui tag