2

我正在 arduino 上编写一个项目,并将密码存储在 const char 数组中。这个密码是写在代码中的,我想对有权访问 .o 文件和 .hex 文件的恶意读者隐藏密码。

有谁碰巧知道如何隐藏它?

我已经尝试将其存储在 const 字节数组而不是 const char 数组中,但这似乎并不能解决我的问题......

4

3 回答 3

3

棘手的部分是,无论如何,由于您需要使用密码,(我假设您每次启动时都不能输入密钥)您的代码将同时包含锁和打开的钥匙它。真正的问题是这必须有多好?

如果它不必真的很好,您可以将密码异或某个值,并将其用作源中的密码。然后,当您需要使用它时,您可以通过相同的值对它进行异或运算,然后 ta-da...

如果您想要一些不那么琐碎的东西(并且 arduino 适合它),您可以使用您的私钥签署密码,并将您的公钥存储在源中。取消签名密码的算法比简单的异或复杂得多(因此更难发现。)

无论如何,任何需要使用明文密码的独立系统都是有缺陷的。

于 2012-04-26T10:12:00.893 回答
1

您可以将密码存储在EEPROM中,您可以使用 avrdude 或在您的代码中写入该密码。在后一种情况下,您需要在闪烁后的某个时间点向您的设备提供密码。

任何对设备有物理访问权限的人仍然可以访问密码,但不能访问只有文件.o.hex文件的人。

我不确定 Arduino 引导加载程序是否允许您通过 avrdude 读取和写入 EEPROM,但如果没有,您可以编写一个初始 Arduino 草图,将密码写入 EEPROM,然后用只读取它的实际草图覆盖它。

于 2012-04-26T13:38:43.760 回答
1

只需散列密码并存储散列即可。比您散列用户输入密码以尝试匹配它们。

现在,如果您需要将密码存储到另一个服务,并且您不得不在他们的 API 中使用纯密码,那么您几乎没有可能的选择。

于 2012-04-26T16:44:32.287 回答