gpt4 book ai didi

c# - .NET 应用程序中的离线安全性在代码中存储混淆 key

转载 作者:行者123 更新时间:2023-11-30 21:09:13 25 4
gpt4 key购买 nike

我正在开发无法连接到互联网的 C# 应用。

此应用将为我的硬件生成一个配置文件。

我想确定的是,当我将配置文件交给我的助手时,他不会更改它并在硬件中放入一个具有不同配置的文件。

为了避免这种情况,我目前使用一种简单的方法。

  1. 在代码中我有一个 key :abcd123

  2. 我的应用程序生成一个配置文件,然后:

  3. 对配置文件进行HASH,并用KEY加密HASH:abcd123存储在 字符串变量 KEY

  4. 将配置文件交给我的助手,由他加载到硬件中

现在,硬件有 KEY abcd123,它解密配置并对有效负载进行 HASH。如果 2 个 HASH 相同,我假设我的助手没有更改配置文件。

我担心的是 .NET 代码中的 KEY 存储很容易恢复而无需混淆。

我因此买了 Crypto Obfuscator ,但我不知道我的 key 有多安全。

我不够熟练,无法反编译我的程序并查看 key 是否仍然清晰。

您可以建议我使用哪些方法来合理确保我的 key “安全”?

我知道没有办法保护它,但我只是想为我不太了解的自动混淆提供合理的额外安全性。

我希望我已经说清楚了,但还需要澄清。

最佳答案

what i want to be sure, is that when i give the configuration file to my assistant he doesn't change it and puts in the hardware a file with different configuration.

您正在寻找一种数字签名算法。大体上,有两种方法可以做到这一点:

  • 使用计算加密可靠散列(例如 SHA-2)的对称算法。您发布哈希和相应的文件。硬件获取文件,使用相同的算法计算哈希值并断言它与公开发布的哈希值相同。看看如何Apache log4net提供库和匹配的签名。

  • 另一种方法是使用公私 key 签名,例如使用 RSA。 sample 可从 msdn 获得。 ,其中展示了如何使用 RSACryptoServiceProvider 对 XML 文档进行签名。您可以创建私钥-公钥对。私钥用于创建数字签名,您自己保管。使用公钥,您只能验证签名,这就是您部署到设备上的内容。

来自上面链接的另一个安全提示:

Never store or transfer the private key of an asymmetric key pair in plaintext. Never embed a private key directly into your source code. Embedded keys can be easily read from an assembly using the Ildasm.exe (MSIL Disassembler) or by opening the assembly in a text editor such as Notepad.

关于c# - .NET 应用程序中的离线安全性在代码中存储混淆 key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9130078/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com