在生成对称密钥以加密消息时,您可以在进程内存中创建一个字节数组。
接下来,实例化一个SymmetricAlgorithm,如AesCryptoServiceProvider。然后,通常将key属性设置为内存中的键。
然后创建一个ICryptoTransform,通常通过调用SymmetricAlgorithm.CreateEncryptor()或CreateDecryptor()。您还可以跳过设置上面的Key属性,直接将键和IV传递给CreateEncryptor(byte[],byte[])或CreateDecryptor(byte[],byte[])。
换句话说,如果我有一个软件间歇写入加密数据的流,那么是否最好用一个单独的密钥对每个小部分进行加密,并销毁/处置我所处的一切,以尽量减少密钥被窃取的时间?
有人可能会说,一旦有流氓软件在计算机上,没有什么是安全的,因此,它是无用的担心它。我仍然希望采取措施尽量减少攻击者访问个人数据加密密钥所造成的潜在损害。
发布于 2012-04-12 14:26:12
在这方面有很多宗教争论,但我只想从实际意义上尽可能清楚地回答:如果‘流氓软件’,即恶意软件,是以访问解密程序内存空间的权限运行的,它不仅可以读取密钥,还可以读取您解密的数据。当然,这是一个更大的问题-因为这是关键的保护,毕竟。你不会阻止用户查看他们自己的数据,对吗?所以你没有增加任何安全措施。
换句话说,可计算性的十元网是对主机平台上的安全规则的补充,而不是替代。两者相加在一起,两者都是安全所需的。没有解密机器上的主机安全性,您就不能拥有加密安全性。尝试添加它只会增加更多的复杂性,并增加引入真正错误的可能性(尽管.NET为您管理内存,所以这里的问题不多)。
https://stackoverflow.com/questions/10108839
复制相似问题