Il PO afferma che devono passare le credenziali a un altro servizio, che è un problema completamente diverso da quello di memorizzazione delle password e la verifica.
A seconda della quantità di controllo che si ha sul servizio partner o su ciò che espongono, le migliori soluzioni coinvolgono un fornitore o approcci standard del settore come Kerberos, SAML o altro token al portatore stabile e sicuro significa flusso di fiducia. Questo è un argomento profondo.
Ma supponiamo che sia necessario passare le credenziali tramite Basic Auth SSL/TLS. Quindi ora è necessario memorizzarli in modo sicuro in modo reversibile. Per risolvere questo problema, ho avuto successo con la chiave segreta trasmessa utilizzando una chiave privata del certificato. Ciò offre una certa protezione del tuo segreto dal sistema operativo e consente alle persone OPS di gestire le chiavi, il che è auspicabile. L'account utilizzato per eseguire il processo deve disporre dei diritti per vedere la chiave privata, che quindi termina la catena di fiducia sul sistema operativo.
È ancora possibile che si debba pensare alla rotazione delle chiavi, che richiederà di memorizzare un numero di versione con il testo cifrato.
Inoltre, SecureString potrebbe essere di interesse, ma fino a quando tutte le API .NET consentono a SecureString di essere passato come parte di una credenziale, spesso si finisce con una stringa sull'heap gestito che non si può distruggere.
In ogni caso, questa non è una risposta alimentata a cucchiaio con codice, ma per esperienza, ho scoperto che gestire la catena di segreti è sempre un problema, e se non è possibile terminare su un'infrastruttura hardened come Active Directory, certificati sono la prossima cosa migliore.
Sembra buono, ma che cos'è un IV? Pensavo avessi solo bisogno di una chiave da 16 byte? – Chris
http://en.wikipedia.org/wiki/Initialization_vector. Puoi aumentare la forza se metti cose a caso lì dentro, ma potresti usare anche degli zero. –
Ho bisogno delle password per passarle su un altro servizio. – Chris