何时加密应用程序的配置文件可以提供额外的安全性?

时间:2016-06-03 09:35:47

标签: .net security encryption web-config app-config

.NET Framework提供了通过Protected Configuration API加密(部分)应用程序配置文件的功能。例如,您可以使用它来加密连接字符串,以便在配置文件中没有明文数据库的用户名和密码。

但加密后,必须解密才有用。

使用RsaProtectedConfigurationProvider可以利用Windows Cryptography Next Generation API(CNG)安全存储密钥,并使其仅供选定用户使用。或者,可以使用Windows Data Protection API(DPAPI)来做同样的事情。

由于这两种方法都是特定于用户的,而不是特定于应用程序(后者几乎不可能实现),用户可以编写一个在其帐户下运行的简单应用程序,解密配置文件并打印连接字符串从而泄露密码。

因此,当用户必须能够运行应用程序(换句话说,最广泛意义上的“桌面应用程序”)时,加密该应用程序的配置是没有意义的,因为该用户可以自己轻松解密配置。

那么加密用户计算机上安装的应用程序的配置是否有用,但不能直接由该用户运行?像Windows服务(或作为服务运行的Web服务器中托管的Web应用程序)?

这样,您可以授予服务帐户读取私钥的权限,但不能读取最终用户。当然,当用户具有管理权限时,他们可以授予自己阅读密钥的权限,我们将回到原点。

当配置文件可能以某种方式离开机器时可能会落入坏人之手,使其在该机器外部无法读取,因为密钥仅存储在该特定计算机上。

据我所知,加密配置在这两种情况下才有意义:

  1. 用于保护来自在同一台计算机上工作的低权限用户的应用程序的配置数据,该用户不必直接执行该应用程序,例如Windows服务。
  2. 当文件可能通过任何方式泄漏到机器外部时,防止读取配置。
  3. 这是正确的,还是我的思路有缺陷?

0 个答案:

没有答案