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.