我有一个代码大小有限的嵌入式设备(E)。它使用UART (USB,串行,..)与主机处理器(H)通信。我需要实现一个简单的主机认证解锁功能的处理器是我的嵌入式设备。
重要的问题是USB/serial/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必须易于在嵌入式设备中实现,占用的代码空间很小)。
这应该是更好的找到一个模拟日志,允许有多个Kh的同一个Ke给不同的用户。但这是可选的。
如上所述,通道是不安全的,所以我们不想让一个坐在USB上的邪恶分子(带有USB嗅探器)仅从R和S泄露Ke或Kh (或从S生成R的方法)。
因此,XOR将不起作用;)
请提出一些建议
发布于 2012-10-15 14:19:57
你的设备可以给处理器一些随机数,并使用一些轻量级加密算法(例如RC5)验证加密随机数的答案吗?这还可以帮助您在设备和处理器之间建立安全通道。例如,答案可以是RC5_CBC( CONCAT(key_for_secure_channel, nonce) )。注意: nonce必须写在最后,所以新的密钥完整性将由它们验证。
发布于 2012-10-12 18:02:01
您可以看看CHAP,它是PPP支持的身份验证协议之一。Check out Wikipedia's page about CHAP.
发布于 2012-10-16 16:23:03
您需要执行此操作多少次?每对K_h和K_e是否唯一?要做到这一点,最简单的方法是在设备和主机上生成一个随机的、预先共享的秘密(在制造过程中),然后将其用作一次性垫。
一次性pad的基本思想是,你接受你的消息,XOR是一个秘密。只要你的秘密和你的信息一样长,而且你只做一次,那么你就没问题。在你的频道上嗅探的人不应该能够弄清楚消息是什么,因为他们也不知道秘密是什么。当然,当您发送解密的回复时,在通道上嗅探的人将能够解密所有内容。
https://stackoverflow.com/questions/12856407
复制相似问题