2

(我不是母语人士,在术语方面可能不正确。对此感到抱歉。)

我正在通过无线电在 AVR 微控制器之间传输数据以供个人使用,并希望客户证明传输数据的真实性,因为它来自授权客户之一。这意味着我不需要不可否认性,并且能够预定义共享密钥。我对不同的方法进行了一些研究,发现我需要一些帮助来选择最符合我要求的方法。

请理解我不需要最大的安全性。我只是想防止潜在的脚本小孩邻居在几个小时内闯入。如果从今天开始使用普通消费者装备需要几周的时间,我会没事的。

我正在传输的消息的大小相当小(不超过 30 个字节,只有几个字节的有效负载),频率不超过 30 条消息/分钟。

一个用例是运动检测器通过空中向处理单元发送消息,然后处理单元通过空中向电灯开关发送另一条消息。请不要专注于运输。这个问题只是关于数据的真实性。

我在闪存和 RAM 非常有限的 20 MHz AVR 微控制器上运行客户端/服务器软件(C 语言)。因此,我正在寻找一种具有小代码大小和 RAM 利用率的解决方案,同时仍提供高数据速率。

我使用 MD5 实现 (C) 从 20 字节数据创建散列进行了一些性能测试,发现它可能太慢了。我知道 MD5 实现本身并不能解决这个要求。我进行测试只是为了评估散列性能。

感谢您的评论

4

2 回答 2

5

我会使用 128 位 AES 对消息进行签名。这是一个已经为 AVR 实现此功能的优秀资源,其中包含大小和周期计数的完整文档,包括权衡大小/速度的不同版本。http://avrcryptolib.das-labor.org/trac/wiki/AES

于 2012-04-02T20:46:17.450 回答
1

If you are happy with a compromise, calculated the CRC-32 or CRC-64 of the message payload with a secret key appended to the end (of the payload, not the CRC checksum). Both ends can do this with the same secret key to get the same result. Not sure of the exact hackability of this but it sure isn't zero.

于 2012-04-06T10:24:08.097 回答