Sto provando a fare quanto segue:
Ho 2 dispositivi mobili, uno funge da server e il secondo da client.
Il dispositivo server contiene una chiave segreta e pubblicizza una sfida. Ogni richiesta fa cambiare la sfida.
Il dispositivo client conserva i dati (un valore intero) crittografati con questa chiave, ma il client non ha la chiave.
I 2 dispositivi comunicano tramite BT.
Il client genera una risposta alla sfida secondo un algoritmo noto , invia i dati al server, il server verifica la risposta, decodifica i dati, deduce un determinato valore da esso, crittografa il nuovo dati e inviarlo al client.
Sto cercando di proteggere nuovamente i dati nel client da riutilizzare (ad esempio, il client memorizzerà i dati crittografati, eseguirà la transazione sul server, riceverà la risposta e quindi utilizzerà nuovamente i vecchi dati).
Le limitazioni:
- Non riesco a memorizzare i dati del client nel server - il server calcola solo il nuovo valore e lo restituisce.
- Il client deve essere offline (il valore non può essere memorizzato su qualche server HTTP).
- Non devo memorizzare le chiavi sul client.
C'è un modo per farlo? Il mio cervello sta già fumando, ma ogni idea che riesco a inventare fallisce a causa del fatto che l'algoritmo di risposta non è confidenziale, quindi per quanto posso vederlo, ogni cliente potrebbe riutilizzare i vecchi dati.
Per essere chiari, non sto cercando una soluzione completa, solo alcune indicazioni e brain storming.