Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.NET加密处理密钥的方式安全吗?_.net_Security_Encryption - Fatal编程技术网

.NET加密处理密钥的方式安全吗?

.NET加密处理密钥的方式安全吗?,.net,security,encryption,.net,Security,Encryption,生成对称密钥以加密消息时,需要在进程内存中创建一个字节数组 接下来,实例化一个实例,例如。然后通常将key属性设置为内存中的密钥 然后,通常通过调用或来创建。也可以跳过上面的Key属性设置,将Key和IV直接传递给或 在创建ICryptoTransform后立即将字节数组归零是否更安全,以防止恶意软件读取它?当字节数组用于生成加密随机数据和初始化转换时,钉扎是否提供任何安全性 如果设置SymmetricalGorthm.Key属性,是否在某个位置有其他副本,或者只是指向秘密字节数组的指针?创建变

生成对称密钥以加密消息时,需要在进程内存中创建一个字节数组

接下来,实例化一个实例,例如。然后通常将key属性设置为内存中的密钥

然后,通常通过调用或来创建。也可以跳过上面的Key属性设置,将Key和IV直接传递给或

  • 在创建ICryptoTransform后立即将字节数组归零是否更安全,以防止恶意软件读取它?当字节数组用于生成加密随机数据和初始化转换时,钉扎是否提供任何安全性

  • 如果设置SymmetricalGorthm.Key属性,是否在某个位置有其他副本,或者只是指向秘密字节数组的指针?创建变换后立即处理对称算法是否更安全

  • 当ICryptoTransform被创建时,我假设RAM中现在有一个额外的副本。所以在ICryptoTransform对象的生命周期内,密钥是否可被流氓软件读取?处理后怎么样?

    换句话说,如果我有一个流,我的软件会间歇性地向其中写入加密数据,那么是否最好使用单独的密钥对每个比特进行加密,并销毁/处置中间的所有内容,以尽量减少密钥被盗的时间

  • 有人可能会说,一旦有流氓软件在电脑上,没有什么是安全的,因此它是没有必要担心它。我仍然希望采取措施,尽量减少攻击者获取个人数据加密密钥所造成的潜在损害

  • 不,这并不安全

  • 没关系,不,也不安全

  • 是的,任何有权限的软件都可以读取它。由于.Net crypto中的Dispose()通常会将内存归零,因此在处理后可能无法读取

  • 关于这一点,有很多宗教争论,但我将从实际意义上尽可能清楚地回答:如果“流氓软件”(即恶意软件)以访问解密程序内存空间的权限运行,它不仅可以读取密钥,还可以读取解密的数据。当然,这是一个更大的问题——毕竟这是钥匙保护的东西。你不会阻止用户查看他们自己的数据,是吗?所以你没有增加任何安全性


    换句话说,可计算性是对主机平台安全规则的补充,而不是取代。这两者加在一起,都是安全所必需的。如果解密计算机上没有主机安全性,则无法实现加密安全性。尝试添加它只会增加复杂性,并增加引入真正错误的可能性(尽管.NET为您管理内存,因此这里的问题较少)。

    如何防止没有任何电源的pc上的任何恶意软件停止操作并读取内存?即使你创建了它,也要使用它,然后一个接一个地销毁它?大多数.Net加密类都会在
    Dispose()
    中为你安全地擦除它们的数据。@gbainchi:现在,一旦你偷了一个密钥,你就可以后退,只需监视网络。首先,我猜,当密钥只在很短的时间内可用(特别是密钥每隔几分钟更改一次)时,获取密钥要比以后读取文件或TCP流困难得多,也复杂得多。换句话说,这将是一个巨大的挫折。但这是我的问题的一部分,我真的不知道这是否值得。我的问题是,将未加密的密钥保存在内存中的时间尽可能短,并且频繁地更改它们,是否会使盗取变得足够困难,从而阻止大多数潜在的盗贼?或者说,对于随意的黑客来说,这个果实还不够低垂?最后一个断言是正确的。如果攻击者具备读取和理解进程内存的技能,那么在数据可用时能够读取和理解进程内存只是一个很小的技能提升。