.NET加密处理密钥的方式安全吗?
生成对称密钥以加密消息时,需要在进程内存中创建一个字节数组 接下来,实例化一个实例,例如。然后通常将key属性设置为内存中的密钥 然后,通常通过调用或来创建。也可以跳过上面的Key属性设置,将Key和IV直接传递给或.NET加密处理密钥的方式安全吗?,.net,security,encryption,.net,Security,Encryption,生成对称密钥以加密消息时,需要在进程内存中创建一个字节数组 接下来,实例化一个实例,例如。然后通常将key属性设置为内存中的密钥 然后,通常通过调用或来创建。也可以跳过上面的Key属性设置,将Key和IV直接传递给或 在创建ICryptoTransform后立即将字节数组归零是否更安全,以防止恶意软件读取它?当字节数组用于生成加密随机数据和初始化转换时,钉扎是否提供任何安全性 如果设置SymmetricalGorthm.Key属性,是否在某个位置有其他副本,或者只是指向秘密字节数组的指针?创建变
换句话说,如果我有一个流,我的软件会间歇性地向其中写入加密数据,那么是否最好使用单独的密钥对每个比特进行加密,并销毁/处置中间的所有内容,以尽量减少密钥被盗的时间
换句话说,可计算性是对主机平台安全规则的补充,而不是取代。这两者加在一起,都是安全所必需的。如果解密计算机上没有主机安全性,则无法实现加密安全性。尝试添加它只会增加复杂性,并增加引入真正错误的可能性(尽管.NET为您管理内存,因此这里的问题较少)。如何防止没有任何电源的pc上的任何恶意软件停止操作并读取内存?即使你创建了它,也要使用它,然后一个接一个地销毁它?大多数.Net加密类都会在
Dispose()
中为你安全地擦除它们的数据。@gbainchi:现在,一旦你偷了一个密钥,你就可以后退,只需监视网络。首先,我猜,当密钥只在很短的时间内可用(特别是密钥每隔几分钟更改一次)时,获取密钥要比以后读取文件或TCP流困难得多,也复杂得多。换句话说,这将是一个巨大的挫折。但这是我的问题的一部分,我真的不知道这是否值得。我的问题是,将未加密的密钥保存在内存中的时间尽可能短,并且频繁地更改它们,是否会使盗取变得足够困难,从而阻止大多数潜在的盗贼?或者说,对于随意的黑客来说,这个果实还不够低垂?最后一个断言是正确的。如果攻击者具备读取和理解进程内存的技能,那么在数据可用时能够读取和理解进程内存只是一个很小的技能提升。