Autenticazione del client senza chiave di hardcoding?

5

Una domanda di base, ma non sono un maestro e questo mi confonde -

Come è possibile autenticare un client dal punto di vista del server?

vale a dire. immagina di essere il server e vuoi dare al cliente una chiave, ma solo se sei sicuro che il client è davvero il software che hai scritto e non qualcuno che finge di essere il tuo software in modo che possano prendere la chiave?

L'unica soluzione che posso pensare è varie combinazioni di hardcoding una chiave privata nel client, o hardcoding un algoritmo prevedibile (ad esempio il server dice "n" e il client deve dire "n * 2" indietro) ... ma qualsiasi di questo è crackabile tramite la decompilazione ...?

Nel caso in cui sia importante, il software client deve essere agnostico O / S, cioè eseguire su windows, mac, linux, android, ios, ecc.

    
posta davidkomer 17.06.2012 - 15:51
fonte

3 risposte

6

Non è possibile autenticare un client in questo modo. Come correttamente sottolineato, può sempre essere decodificato e duplicato. L'autenticazione del server funziona solo perché l'utente non ha accesso all'hardware del server e per produrre un client sicuro è necessario trovare un modo per impedire all'utente di accedere all'hardware del client, il che è generalmente impossibile.

    
risposta data 17.06.2012 - 16:23
fonte
0

Fammi pensare ad alta voce per un secondo. Potresti usare un checksum dei file del client binario. Se la tua funzione di hashing è resistente alla collisione, ad esempio SHA-1, puoi essere certo che il client è autentico con una probabilità molto alta.

Schema di base per il protocollo:

  • Client Hello
  • Server Hello
  • Client ACK || checksum
  • Autenticazione server finito
risposta data 18.06.2012 - 15:44
fonte
0

Non è possibile distribuire un software ai client che possono connettersi ma non possono essere rappresentati. Puoi renderlo difficile offuscando la chiave, ma mai impossibile.

Con questo in mente, sceglierei:

  • Utilizza TLS con le chiavi per client (firmato dalla tua CA).
  • Se un cliente si comporta male, inserisci la chiave nella blacklist e vai avanti. Nessun altro è interessato.
  • Se una chiave viene filtrata, puoi semplicemente fornirne una nuova al client (probabilmente offuscata all'interno di un nuovo binario).
risposta data 28.04.2015 - 10:55
fonte

Leggi altre domande sui tag