基本的高性能数据真实性



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

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

请理解,我不需要最高安全级别。我只是想防止一个潜在的脚本孩子邻居在几个小时内闯入。如果从今天起需要几周的时间才能使用普通的消费装备,我会没事的。

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

一种使用情况是运动检测器通过空中向处理单元发送消息,然后处理单元通过空中向电灯开关发送另一个消息。请不要把重点放在交通上。这个问题只是关于数据的真实性。

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

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

感谢您的评论

我会使用128位AES对消息进行签名。这里有一个优秀的来源,已经为AVR实现了这一点,提供了尺寸和周期计数的完整文档,包括权衡尺寸/速度的不同版本。http://avrcryptolib.das-labor.org/trac/wiki/AES

如果您对折衷方案感到满意,请计算消息有效负载的CRC-32或CRC-64,并在末尾(有效负载的末尾,而不是CRC校验和)附加一个密钥。两端都可以使用相同的密钥来执行此操作,以获得相同的结果。不确定它的确切可破解性,但它肯定不是零。

最新更新