0

我有一个代码大小有限的嵌入式设备 (E)。它使用 UART(USB、串行、..)与主机处理器 (H) 通信。我需要实现一个简单的主机处理器身份验证来解锁功能是我的嵌入式设备。

重要的问题是 USB/串行/UART 可以被嗅探,因此通道不安全。

用法应该如下:在制造过程中,我们生成一对密钥 Ke 和 Kh。E 存储 Ke E 生成 N 个随机字节 R,用密钥 Ke 将 R 加密为秘密 S 并发送给 H H 应该使用 Kh 加密 S 以显示 R H 将 R 发送给 E 并且 E 解锁一些功能

所以,

S = u(R, Ke)
R = v(S, Kh)

一些加密功能在哪里u()以及在哪里v()(可能是那个u = v,但u必须易于在占用少量代码空间的嵌入式设备中实现)。

最好找到一个允许同一 Ke 有许多 Kh 的 alog,以便将它们提供给不同的用户。但这是可选的。

如上所述,通道是不安全的,所以我们不希望坐在 USB 上的邪恶(使用 USB 嗅探器)仅从 R 和 S 揭示 Ke 或 Kh(或从 S 生成 R 的方式)。

所以,异或将不起作用;)

请提出一些建议

4

3 回答 3

0

您可以查看 CHAP,这是 PPP 支持的身份验证协议之一。 查看关于 CHAP 的 Wikipedia 页面。

于 2012-10-12T10:02:01.267 回答
0

您的设备可以给处理器一些随机数并使用一些轻量级加密算法(例如 RC5)将答案验证为加密随机数吗?这也可以帮助您在设备和处理器之间建立安全通道。例如,答案可以是RC5_CBC( CONCAT(key_for_secure_channel, nonce) )。注意:nonce 必须写在最后,因此新的密钥完整性将由它们验证。

于 2012-10-15T06:19:56.593 回答
0

您需要执行多少次? K_h 和 K_e 每对是唯一的吗?最简单的方法是在设备和主机上生成一个随机的、预先共享的秘密(在制造期间),然后将其用作一次性密码。

一次性便笺的基本思想是你接受你的信息,异或是一个秘密。只要您的秘密与您的信息一样长,并且您只执行一次,那么您就可以了。嗅探您频道的人应该无法弄清楚消息是什么,因为他们也不知道秘密是什么。当然,当您发送解密后的回复时,在频道上嗅探的人将能够解密所有内容。

于 2012-10-16T08:23:03.110 回答