【发布时间】:2012-04-02 16:23:04
【问题描述】:
(我不是母语人士,在术语方面可能不正确。对此感到抱歉。)
我正在通过无线电在 AVR 微控制器之间传输数据以供个人使用,并希望客户证明传输数据的真实性,因为它来自授权客户之一。这意味着我不需要不可否认性,并且能够预定义共享密钥。我对不同的方法进行了一些研究,发现我需要一些帮助来选择最符合我要求的方法。
请理解,我不需要最高安全性。我只是想防止潜在的脚本小孩邻居在几个小时内闯入。如果从今天开始使用普通消费者装备需要几周的时间,我会没事的。
我发送的消息非常小(不超过 30 个字节,负载只有几个字节),频率不超过 30 条消息/分钟。
一个用例是运动检测器通过无线方式向处理单元发送消息,然后处理单元通过无线方式向电灯开关发送另一条消息。请不要专注于运输。这个问题只针对数据真实性。
我在闪存和 RAM 非常有限的 20 MHz AVR 微控制器上运行客户端/服务器软件(C 语言)。因此,我正在寻找一种代码大小和 RAM 利用率小,同时仍提供高数据速率的解决方案。
我使用 MD5 实现 (C) 从 20 字节数据创建散列进行了一些性能测试,发现它可能太慢了。我知道 MD5 实现本身并不能解决这个要求。我进行测试只是为了评估哈希性能。
感谢cmets
【问题讨论】:
-
我正在考虑使用 HMAC,但不确定使用什么哈希函数。
-
您是否对任何客户端也能够创建有效消息感到满意,或者您是否需要客户端能够验证消息但不创建它们?
-
@Nick:感谢您的评论。你指的是不可否认性吗?我不需要它(如问题中所述)。
-
不,我问的是是否也可以允许验证者创建有效消息,或者他们是否应该只能进行验证。如果验证者能够发布消息是可以的,那么 HMAC 就可以正常工作。如果没有,您将需要公钥加密。
标签: cryptography microcontroller avr cryptographic-hash-function authenticity