在我目前的项目中,我很少有TCP 32‘S通过TCP连接到服务器。这些静电除尘器分布在300米的范围内。
信标帧以纯文本形式输出,它由一个只有信标者和服务器才知道的值组成。这个值随着时间的推移而变化,信标者从来不会发送相同的值两次。
一旦被嗅探器接收到,信标唯一的id和值将返回给服务器,然后服务器验证如下:
高水平
00:00:00 Server request -> Beaconer over tcp
00:00:00 Server request -> Sniffer over tcp
00:00:05 Beaconer -> Send beacon over radio [uniqueid,secret_value]
00:00:06 Sniffer -> Received beacon over radio [no checks]
00:00:07 Sniffer -> Forward this beacon to server over tcp
00:00:08 Server -> Validate input所有的通信都是纯文本,信标的ID和值都可以很容易地被嗅探和重放。
我能实现什么样的机制来保护这个简单的通信免受重播攻击?我想不出还有什么能发生的事。当服务器选择信标/嗅探器时,很难重播任何东西,但是仍然有人可以尝试。
发布于 2021-11-24 21:06:19
你可以使用现在和数字签名。
现在会使重放攻击变得不可能。如果在每个事务上都增加了nonce,则信标和服务器可以保留上次发送的信标,并且任何过去的信标都无效。
数字签名可用于防止信标上的数据被更改。服务器可以向信标发送数据和签名,对秘密值和当前值进行签名。
在这种情况下,攻击者不能注入假信标,因为他没有服务器机密,并且由于当前的原因不能重播过去的信标。
https://security.stackexchange.com/questions/257447
复制相似问题