内存
物理方式
关闭电脑会在一小段时间后将其删除。在几秒钟/几分钟内,RAM 可能会受到冷启动攻击,但随后数据将在物理上消失。
程序化方式
/*C code*/
//Ask OS for some ram, the size of our data.
char * SensitiveData = malloc(myDataSize);
//Copy data from hard drive to the ram memory we
//...just allocated. Implement this function your own way.
load_key_from_hardrive(SensitiveData);
/*Use key here*/
//Now let's overwrite the key:
for (i=0;i<myDataSize;i++)
{
SensitiveData[i]='\0'; //Fill it with zeros.
}
free (SensitiveData); //Give the memory back to the OS.
硬盘
物理方式
将密钥保存在 USB 记忆棒上,然后物理销毁它将保证密钥被移除。
程序化方式
有很多方法。这是 Linux 的一个:创建一个新分区,将密钥放在那里。记下分区号,在本例中为sda2
.
为了摆脱密钥,零填充分区:
#Linux bash code
dd if=/dev/zero of=/dev/sda2 bs=1M
如果您更喜欢填充随机数据以进行否认,请使用:
#Linux bash code
dd if=/dev/urandom of=/dev/sda3 bs=1M
其他注意事项
一次零填充柱塞就足够了。零填充现代硬盘驱动器一次可能就足够了,但有些人不止一次这样做。
一些操作系统将磁盘 I/O 缓存在 RAM 中,为了安全起见,在擦除硬盘后,您还应该使用Ram > The physical way。我在这里可能太偏执了。我对 IO 缓存没有深入的了解,也许其他人会更好地编辑本节。
如果可以使用其他一些 RAM 内存来推断密钥,请确保以与Ram 类似的方式将它们填零 > 编程方式