C# WinForms 隐藏加密密钥

3
我有一个WinForms应用程序,可以读取敏感文件中的数据并使用该数据进行计算。为了不让敏感信息暴露在用户的计算机上,我们决定将计算移到一个Web服务中,在那里,文件将隐藏在受保护的文件夹中,并且只能被Web服务程序本身访问。
由于一些问题,看起来可能无法在所需的时间内保护服务器空间,因此我们现在想要做的是使用加密来保护该文件,以便可以安全地将其分发到用户的计算机上。
我的问题是这样的。是否可以对文件进行加密(仅一次,因此预先加密的文件将附加到项目中),然后解密文件以供应用程序使用,而不会泄露:
  • 文件内部的敏感信息
  • 用于解密文件的加密密钥
我知道可以从.exe文件生成源代码,因此我需要考虑这方面的解决方案。我对这种应用程序开发很陌生,所以请原谅我是否提出了一个愚蠢的问题,并且我正在尝试做的事情实际上是不可能的。
干杯

1
不,这是不可能的。你只能让这两件事变得困难一些,但不能使其变得不可能。你所能做的就是让它变得足够困难,让人们不愿意尝试,而这需要投入资金来完成(通过专业的混淆软件和聘请领域专家来审查您的代码并使其更加安全)。 - Scott Chamberlain
@ScottChamberlain 就我而言,这是一个完全正确的答案。 - CompuChip
一种方法是使用PGP加密数据文件。但是,这样做会很麻烦,因为每个用户都需要自己的PGP密钥和加密文件。例如:用户向您发送他们的公钥。您加密数据并将其发送给他们。然后,他们使用他们的私钥和密码短语来解密文件(在应用程序中,不要保存到磁盘),应用程序使用解密后的数据进行会话。为了使此更安全,您可以将加密数据嵌入应用程序中,并在运行时让用户输入他们的公钥和密码短语。 - user5684647
@HenkHolterman 我在一家大公司工作,发现很难找到一个愿意为这个应用提供托管的平台,原因有很多是内部的。 - Josh Brass
@ScottChamberlain 感谢您在此事上的帮助 - 您的答案正如我所预期的那样。我选择了一个SharePoint托管文件,需要逐个授予访问权限。该文件仍然加密,但不再存储在用户PC上。虽然不是100%安全,但比以前更好。 - Josh Brass
1个回答

1
不,这是不可能的,你只能让这两件事变得更加困难,但不能使其不可能。你所能做的就是让它变得足够困难,以至于不值得尝试,而这需要花费金钱(通过专门的混淆软件和支付该领域的专家来查看您的代码并使其更安全)。

谢谢 - 非常有道理,这是我期望的答案类型。只是发帖来确保一下。再次感谢。 - Josh Brass

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接