我有一个代码大小有限的嵌入式设备 (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 的方式)。
所以,异或将不起作用;)
请提出一些建议