自动抄表中的加密 (AES-128)

逆向工程 反编译 加密 解密 。网
2021-06-29 23:37:41

当涉及很多设备时,我有关于加密的理论问题。具体来说,它是关于读取仪表(水表/燃气表/热量表)的。

这里有一些介绍。

我试图读取水表,但结果数据帧是用 AES-128 加密的。未加密的是水表编号(实际上是无线电设备)。

我能够下载该软件的一个非常旧的版本(8 年前发布,我知道有更新的版本,但我无权访问)。它是用 .Net 编写的,所以我用 JustDecompile soft 反编译了它。我正在寻找任何负责加密的类。我发现的关于 AES 的内容是连接到 U 盘的,所以我假设所有解密的东西(或重要的)都放在 U 盘上。

这是一个问题——记住——只是理论上的问题——如果你是背后的程序员/工程师,你将如何解决加密问题?它只是一个解密密钥吗?还是根据设备编号生成密钥?设备本身呢?每个人都会根据其编号拥有不同的加密密钥?

正如我所说 - 这些只是理论问题。我知道如果没有一些严肃的逆向工程,我没有机会解密它,但我已经花了几个小时在这上面,所以我只是好奇。

1个回答

我可以看到这里使用的几种“类型”的键,我将列出每个键的优缺点:

  1. 硬编码对称密钥

    (优点)硬编码的密钥最容易实现。您无需担心存储、加载或更换钥匙。您无需担心现场的密钥分发,您需要担心接收端的密钥持续时间和多个密钥。

    (缺点)一旦从仪表中提取单个密钥,一切都可以轻松解密。由于仪表是散布的,单独放置并且没有得到合理的保护,如果有人对获取这些密钥感兴趣,这很容易发生,但是由于可能没有正确评估风险和损坏,因此在许多此类设备中很可能就是这种情况。

  2. 从硬件配置派生的密钥

    (优点)它不再是一劳永逸的,并且在接收端和发送端仍然很容易实现。

    (缺点)在给定硬件配置的情况下,为每个设备生成密钥仍然很容易,并且可能会强制使用硬件配置值(尤其是在需要读取所有设备的流量时)。

  3. 单个整体部署可替换对称密钥

    (优点)一旦已知密钥已被暴露,就可以(虽然不是很简单的任务)用新密钥替换它。这可以减少密钥泄漏,以防它们变得过于严重,但代价是大量的物流操作。

    (缺点)由于为整个网络更换密钥是一项艰巨的逻辑任务,因此在实际场景中不会经常使用。此外,无论是否使用过密钥更新机制,都需要付出额外的努力来维护它。

  4. 每个设备独立于硬件对称密钥

    (优点)这保证了不同仪表之间的完全保护,并增加了为攻击者有兴趣读取的任何仪表检索密钥的负担。它还可以在不添加基础设施的情况下更改单个密钥。

    (缺点)维护所有可用密钥(及其适当的仪表)的记录只是开发和后勤方面的一大负担。接收器现在需要保存所有密钥的数据库,并能够为正确的仪表获取正确的密钥。

  5. 非对称密钥

    (优点)由于非对称加密的性质,即使在获得电表内的密钥和代码的访问权后,也无法解密未来或过去的消息,而每个拥有密钥的电表都可以加密消息,只有接收者才能解密它们。

    (缺点)虽然这可能是这种情况下最好的加密模型,但它的实施和管理最复杂,并且有很多 ceavet,如果使用不当,可能会使加密变得毫无用处。加密或解密也往往相对较慢,除非对称加密用作模型的一部分(这进一步复杂化)。

我认为最有可能在您描述的场景中使用的是 1 或 2,因为如今这些类型的嵌入式设备很少考虑安全性,更不用说 10-20 年前了。我使这个列表更通用,然后是必要的,希望它对未来的读者有用。