Arduino的加密库

电器工程 Arduino 微控制器 加密 引脚
2022-02-04 19:37:10

我正在使用 Arduino 读取键盘并在键盘 PIN 输入时打开电击。对于这个草图,我想使用某种轻量级加密将 PIN 存储在 EEProm 中。有人知道这样的图书馆吗?我听说使用 TwoFish 可能是可能的。

4个回答

您不想加密密码 (PIN) - 您想对它们进行哈希处理。当有人输入密码时,您对该密码进行哈希处理,并将哈希值与存储的哈希值进行比较。这种方法(使用了 30 多年)的优势在于,即使有人掌握了源和哈希值,只要您选择了足够强大的哈希函数,他们仍然无法分辨出哪些 PIN 与哈希值匹配。

您不想自己实现加密——您想使用其他人的库,尤其是具有已通过大型社区测试的开放实现的库。加密很难,测试很困难,测试加密也很困难,所以让别人为你做吧。

您应该查看AVR Crypto Library,它使用 GPLv3 许可。还有一个用于 AVR 的 Skein 实现

Hristos 发布的那个链接虽然可能有用,但肯定不能算作“加密”。这实际上只是“混淆”。

众所周知,正确的密码学很容易出错,即使对于懂数学的人来说也是如此。

作为对原始帖子的回应——有哪些攻击方法可以让某人访问 EEProm 中的 PIN?当然,如果他们对您的电子设备有那么深的了解,他们可以“剪断红线”并打开门吗?

如果您确实有一个系统,攻击者可能会在没有足够的权限打开您的门的情况下获取 EEProm 内容,您可能需要重新设计它。可以查看类似于 Unix 密码散列的单向散列函数 - 这样 EEProm 不需要包含解密密钥 - 问题是 PIN 的搜索空间非常小 - 如果我可以下载散列版本的PIN,我可以很快尝试所有 10,000 个可能的 PIN,我怀疑任何现代笔记本电脑都会在几秒钟内运行所有这些。

我预见的问题是,如果他们可以看到您的密码,他们也可以看到您的加密/检查/解密密码的程序。另外,如果他们有您的芯片,他们是否可以不只是更改程序以始终为输入的任何引脚提供积极的结果(有效地绕过检查)。

您打算如何解码加密的 PIN,以检查用户是否输入了有效的 PIN?您需要存储解密密钥...此时如果攻击者可以读取您的 eeprom,他也可以读取您的闪存以找到加密密钥。基本上使您的整个加密完全无用。也正如其他人所说,如果他已经有能力读取您的芯片,他可以编写一个新程序。直接把门踢开就简单多了,我怀疑有人会不厌其烦地试图破解你的芯片。