因此,我想创建一个简单,快速,但安全的认证在两个步骤,为PC -微控制器通信。
第一步是种子请求,第二步是身份验证请求。
正在使用的加密是AES-128.
应该有一个长度为16字节的固定键k。
每当种子请求出现时,应该生成一个随机的16字节身份验证消息m,然后用k加密,然后作为种子s发送回客户端。
(注意:E(k, m)总是输出相同的s)
然后,种子s应由客户端用k解密,然后将原始身份验证消息m作为身份验证请求发送到服务器。
服务器将auth消息m与请求消息进行比较,如果它们相等或拒绝请求,则授予访问权限。
还假设对手可以收集任意数量的m和s对。
基于以上信息,是否可以轻易打破这一系统?
发布于 2017-03-18 11:19:30
由于攻击者知道明文及其相应的密文,因此很容易重放攻击。为了避免这种情况,您可能需要在消息中包含一些信息,比如时间戳,以便假设服务器和客户端的时间保持不受影响,过时的消息(即在某个时间框架之前标记为时间戳的消息)可能无效。
发布于 2017-04-12 06:57:54
不是的。此身份验证方案是安全的。这意味着,当协议完成时(服务器检查m = m'),服务器可以确保--一段时间之前--了解k的一方已经完成了身份验证请求。
但是,您在身份验证步骤之后所做的工作可能并不安全。您也不应该忘记验证会话中的每一条消息。
https://crypto.stackexchange.com/questions/44833
复制相似问题