Utilizzo di HMAC durante l'invio di dati attraverso un server non attendibile

0

Ho una configurazione come questa: Payment Server (PS) < > Front End (FE) < > Client JS.

Ho bisogno di ottenere alcuni dati dal Client JS al PS, senza che FE possa modificarlo e PS lo dimostri corretto. In questa situazione, la FE agisce come memorizza e inoltra (con alcune convalide di base del carico utile).

Questo è il mio piano:

  1. Quando imposti il loro account, l'utente inserisce un PIN. Questo è stato cancellato dal JS e l'hash inviato a PS tramite FE per l'archiviazione. Non è memorizzato nel FE e nel PIN stesso non visto da PS o FE in chiaro.

  2. Quando richiesto, il JS crea il payload JSON normalmente. L'utente inserisce il proprio PIN e questo viene sottoposto a hash nello stesso modo in cui è stato creato.

  3. JS prende il payload, il PIN hash e il nonce (che è stato precedentemente inviato dal server in una comunicazione iniziale) e crea un HMAC-SHA256. Questo viene inviato, insieme al payload, a FE, validato / disinfettato e quindi inoltrato a PS non toccato.

  4. PS controlla che HMAC-SHA256 non sia modificato, autenticato e nonce non sia utilizzato, utilizzando il proprio hash PIN memorizzato.

  5. Quando PS ritorna al JS con il proprio risultato, può fare la stessa cosa e JS può confermare che anche il reso è autentico e non modificato.

Questo suono è fattibile? Sono consapevole che un PIN è generalmente piuttosto breve, diciamo almeno 4 caratteri. C'è qualcosa che posso fare per rafforzarlo?

    
posta Paul 19.10.2014 - 02:14
fonte

0 risposte

Leggi altre domande sui tag