I'm building a project that is remotely controlled using LoRa and I want to ensure, that nobody can imitate my transmitter and send packets to my receiver. Just encrypting sent data is not enough since someone can receive for example packet that opens the door and sent the same one from his transmitter. How do I make it so only I can send authorized packets? Another problem is that it's really likely that at least one device will lose power sometimes. I need to use something other than asymetric encryption.
1 Answer
$\begingroup$
$\endgroup$
3
You need some kind of authentication of the source.
One solution can be to use pre-shared secret. To exchange the secret you need some reliable channel. Only you know if you have such a channel or not.
Another approach can be to use TESLA. A brief explanation see here.
Also other approaches can be used.
-
$\begingroup$ Just secret isn’t enough, If someone just records and playback the radio signal, he can imitate my transmiter. Or am I getting something wrong? $\endgroup$ Nov 10, 2021 at 23:59
-
1$\begingroup$ TESLA and other schemes defend against replay attacks by using time-stamping. This does assume that transmitter and receiver have a consistent time source. If you don't have a consistent time source but can pass information both ways, then a challenge-response exchange will also block replay. $\endgroup$– Daniel SNov 11, 2021 at 7:09
-
$\begingroup$ @krystof18: It depends on the scheme that you implement. For instance, if the sender includes a nonce, then you can recognize replayed message. $\endgroup$ Nov 12, 2021 at 1:11