Background: I have an application where devices will poll information from some source on the network.
These devices are very basic and have modest processing and memory capabilities. Hashing (and by extension, HMACs) is doable, but more might be too much.
The information is public, and the devices do not need to authenticate themselves to the source. However, the information must be authentic and fresh.
The protocol I have in mind is that (edited for clarity)
- a device would generate an appropriately large nonce, and send it unencrypted to the source. The nonce is never seen before and can not be predicted.
- the source would accept the nonce, concatenate it with the information, generate the HMAC for the result, and then send the result back to the device. Note that the source does not authenticate devices and accepts any nonce sent to it.
- the device would check that the HMAC is valid, and proceed to act on the information.
I believe this would provide the required security (Hopefully). However, I would very much rather use a well-known protocol if such protocol can meet both security and hardware constraints.
This leads me to my two questions:
- What are the well-known and studied protocols that can meet these constraints?
- In the unlikely case that no such protocol exists, what do you think of the protocol proposed in this post?
Any input on this matter would be appreciated.