Ho un'applicazione aziendale interna, che come parte della sua funzionalità si collega a un'app di terze parti utilizzando le credenziali di accesso specifiche per l'utente della mia app. Queste password sono memorizzate in un database centrale. Attualmente sono di testo semplice (questo era giustificato in base ad un alto livello di sicurezza in prima linea nella nostra LAN aziendale), ma un recente attacco contro la rete della nostra nuova casa madre (fortunatamente non sono entrati) mi ha portato a dare un'altra occhiata a quello.
Le password per l'app interna principale, possiamo crittografarle con un sale, senza problemi lì. Il problema è la crittografia delle credenziali dell'applicazione di terze parti. Come tutti sappiamo, gli utenti preferiscono mantenere la stessa password per più app, quindi, indipendentemente da ciò che faccio per la password della app interna per sicurezza, non farà una piccola differenza se le credenziali di terze parti sono lì in chiaro proprio accanto ad esso.
Ecco il kicker; qualunque sia il metodo utilizzato, deve essere reversibile all'interno dell'applicazione , poiché l'app di terze parti # $% ^ & * richiede la trasmissione di credenziali in chiaro dal processo dell'app interna a un servizio SOAP (fortunatamente lo fa su HTTPS), e l'applicazione interna consente agli utenti di mantenere queste credenziali di terze parti memorizzate (salvando il reparto Dev il problema di mantenere il contenuto del DB). Quindi, il meglio che posso fare è la crittografia, non l'hashing.
Quindi, mi rendo conto che qualsiasi metodo che uso qui non sarà ideale; se l'attaccante ottiene sia l'applicazione che le credenziali, otterrà le password in chiaro e non c'è molto che possa pensare per impedirlo. Sto solo cercando di far funzionare un hacker solo un po 'più difficile per ottenere le credenziali, sperando che mi dia abbastanza tempo per avvisare almeno la terza parte in modo che possano disabilitare i nostri login, se non costringono tutti gli utenti del sistema a cambiare la loro credenziali di terze parti prima che l'hacker possa crearne uno.
Quindi, cosa suggerisci? AES (Non riesco a immaginare che RSA sia di grande utilità in quanto l'applicazione deve crittografare e decifrare)? Qualche astuzia per tenere la chiave fuori mano da qualcuno che riesce a ottenere sia il DB che i binari dell'applicazione?