C # Excluir variáveis com segurança da memória
Estou criando um programa relacionado à segurança e quero ter certeza de que estou fazendo isso da maneira certa. Quando alguém faz login com uma senha, uma chave secreta é descriptografada e armazenada em uma variável. Quando eles terminam a sessão, quero que os dados na memória sejam apagados completamente dessa chave secreta, e não apenas marcados como excluídos. Atualmente, estou fazendo o seguinte:
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;
}
O que eu quero saber é se isso será suficiente para apagar completamente a chave secreta (_phraseHash) do sistema.
Também isso é necessário? Na verdade, eu não sei muito sobre como os dados na memória são excluídos, apenas presumi que seria algo semelhante ao funcionamento dos discos rígidos, onde os bytes são marcados como excluídos e reescritos quando algo mais precisar do espaço.