Store SHA256 in sql-server

1

Ho bisogno di sviluppare un gateway di pagamento e ho appena realizzato che ho bisogno di memorizzare una chiave HMAC_SHA256_V1 per le operazioni di autenticazione. Il modo in cui questo è fatto è: il browser chiama un servizio WCF che risponde con le informazioni firmate con la mia chiave HMAC_SHA256_V1 e quindi il browser invia dal POST una richiesta con tali informazioni per aprire la pagina di pagamento del gateway (tramite reindirizzamento). E quella chiave è la stessa che devo usare per controllare la risposta del gateway di pagamento.

Quindi, penso di poter memorizzare quella chiave in una riga di configurazione all'interno di una tabella SqlServer a una riga, quindi ecco la mia domanda: ho bisogno di prendere qualsiasi misura come criptare la chiave o eseguire qualsiasi azione in ordine per proteggere queste informazioni?

    
posta MirlvsMaximvs 08.03.2016 - 11:03
fonte

1 risposta

2

Sono un po 'confuso sul flusso di lavoro, quindi fammi sapere se sono fuori.

Credo che la situazione sia che comunichi con un servizio. Fai una richiesta al servizio e risponde, firmando la risposta con un HMAC. Successivamente, verifichi che HMAC sia corretto per garantire che la richiesta sia originata dal servizio (autenticità) e che non sia stata modificata da un intermediario (integrità).

Affinché un HMAC sia efficace, la chiave deve essere segreta . Se la chiave non è segreta, un utente malintenzionato può eseguire la modifica del messaggio o fingere di essere il servizio in modo tale che il destinatario non può dire che comunica di ricevere messaggi modificati o di non parlare con il partner desiderato. E se sei disposto a rinunciare all'integrità e all'autenticità, non ha senso usare l'HMAC. Quindi, la chiave HMAC deve essere segreta per essere efficace.

Esattamente quali protezioni sono appropriate per mantenere la chiave segreta dipende dall'applicazione. Ad esempio, l'archiviazione in una tabella di database può comportare l'esposizione se la tua applicazione presenta una vulnerabilità SQL Injection . Ciò mi sembra rischioso se si dispone di un'architettura che potrebbe essere vulnerabile a SQLi (considererei qualsiasi app che richiede l'input dell'utente e la utilizza come parte di una query SQL come potenzialmente vulnerabile a SQLi). La memorizzazione della chiave in un file su disco potrebbe essere vulnerabile a attacco di attraversamento del percorso .

Alla fine, nessun sistema sarà perfetto. Dovrai mettere a punto la quantità di sicurezza per la sensibilità della tua applicazione. Un trucco è combinare più misure di sicurezza , ad esempio, memorizzando una chiave HMAC crittografata nel database e memorizzandola la chiave per decodificarlo da qualche altra parte (forse un file al di fuori della tua web root). Quindi un utente malintenzionato dovrebbe ottenere sia la chiave crittografata HMAC che la sua chiave di decrittografia per eseguire un attacco riuscito. Quanto più è possibile separare la chiave HMAC e la sua chiave di decrittografia, tanto più sicura sarà la tua app (e meno conveniente diventerà l'implementazione e l'uso).

    
risposta data 08.03.2016 - 23:44
fonte

Leggi altre domande sui tag