C # Eliminar de forma segura la variable de la memoria
Estoy haciendo un programa relacionado con la seguridad y quiero estar seguro de que lo estoy haciendo de la manera correcta. Cuando alguien inicia sesión con una contraseña, se descifra una clave secreta y se almacena en una variable. Cuando cierran la sesión, quiero que los datos en la memoria de esa clave secreta se borren por completo, no solo se marquen como eliminados. Actualmente estoy haciendo lo siguiente:
public void Logout()
{
RNGCryptoServiceProvider rngCsp = new RNGCryptoServiceProvider();
for (var i = 0; i < 3; i++)
{
byte[] data = new byte[(int) Math.Round((double) (_phraseHash.Count()))];
rngCsp.GetBytes(data);
int randomNum = BitConverter.ToInt32(data, 0);
_phraseHash = randomNum.ToString();
}
LoggedIn = false;
_phraseHash = null;
}
Lo que quiero saber es si esto será suficiente para borrar completamente la clave secreta (_phraseHash) del sistema.
¿También es esto necesario? En realidad, no sé mucho sobre cómo se eliminan los datos en la memoria, simplemente asumí que sería algo similar a cómo funcionan los discos duros donde los bytes se marcan como eliminados y reescritos cuando algo más necesita espacio.