当前位置: 首页 > 知识库问答 >
问题:

就是这样。NET加密处理密钥安全吗?

商迪
2023-03-14

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

接下来,您实例化一个对称算法,如AesCryptoServiceProvider。然后通常将key属性设置为内存键。

然后创建一个ICryptoTransform,通常通过调用SymmetricalGorthm。CreateEncryptor()或CreateDecryptor()。您也可以跳过上面的Key属性设置,将Key和IV直接传递给CreateEncryptor(字节[],字节[])或CreateDecryptor(字节[],字节[])。

>

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

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

换句话说,如果我有一个流,我的软件间歇性地写入加密数据,是不是最好用一个单独的密钥加密每一点,并销毁/处置我可以在这两者之间的一切,以尽量减少密钥可能的时间偷的?

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

共有1个答案

林鸿彩
2023-03-14

>

没关系,不,也不安全。

是的,它可以被任何有权限的软件读取。在处理后,它可能无法读取,因为Disment()中。网络加密通常将内存归零。

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

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

 类似资料:
  • 我在工作中被要求保护保存在Mysql数据库中的敏感数据。这个数据库包含几个表,其中一个表中的关键数据只能使用Django中的API来访问。对于这个API,只有一定数量的人可以访问它,因此他们将是唯一能够访问这个表中的数据的人。 因此,目前的问题是每个人都可以访问数据库和该表,因此我们决定使用AES在AES_ENCRYPT()和AES_DECRYPT()函数的帮助下加密该表中的所有数据(根据http

  • 我正在考虑使用ChaCha20-Poly1305来加密/解密密码(我需要加密/解密不能只哈希)。但是,要使用此算法,我们需要使用密钥。然而,这是一个问题,因为我正在他们的设备上加密/解密用户的密码,所以在我的数据库中,我只存储他们加密的密码。 问题是,如果用户从他们的手机上卸载我的应用程序或换成新手机,我需要相同的密钥才能再次解密用户的密码。 我的问题是:如何安全地传输和存储这个密钥? 另外,如果

  • 在阅读了以下内容之后:JWT:什么是好的密钥,以及如何将其存储在node.js/express应用程序中?关于如何存储“密钥”以分配JWT令牌。我有安全问题。我的数据(消息,用户名等...)将被加密(在数据库中),只有授权用户才能解密(基于他们的私钥)。由于JWT令牌是使用存储在服务器上的1个“秘密密钥”生成的,所以如果攻击者获得了“秘密密钥”并获得了数据库的控制权,则可以伪造令牌,因此可以绕过“

  • 问题内容: 我有一个Java属性对象,其中包含Web服务的身份验证信息。我需要对这些数据进行加密,但是我不知道该将加密密钥存储在何处才能保持安全。 关于加密和以安全方式检索数据的最佳实践是什么? 使用密钥库有什么好处吗? 问题答案: 您的问题很普遍。在Linux中,用户密码存储在纯文本文件中。尽管只存储了密码哈希,但是如果攻击者可以访问该文件,则使用脱机词典攻击可以很快发现一些密码。在这种情况下,

  • 我在Powershell中编写了一个程序,该程序在Azure Functions应用程序中按计划运行。为了避免硬编码的凭据,我创建了一个Azure密钥库来存储秘密。我在Azure函数中创建了一个托管标识,在Azure Key Vault中创建了秘密,然后在Azure函数中创建了应用程序设置,并使用指向Azure Key Vault中秘密的URL。程序引用应用程序机密(APPSETTING),并按照