I'm working on a very simple and small embedded device. I don't have access to any signing hardware. I would like to have some basic authentication in place to be able to identify a user when a BLE connection is made. My device does have access to a true random number generator as well as a globally unique 32bit value that we can consider "secret". Where only the embedded device and a trusted actor have access to it.
My proposed solution is to have authentication be a two step process.
The first step is for the device wishing to authenticate to ask the embedded device for a random 32bit value. The embedded device will then store this value in RAM.
The second step is for the device wishing to authenticate to hash the random value with the 32bit globally unique value and present that to the embedded device.
The embedded device will then do the same hash of its globally unique value combined with the random number it generated. If it matches, the device can consider this connection authenticated. If it doesn't, it will throw out the random value stored in ram, and disallow any further authentication attempts during this BLE connection.
While I know this isn't ideal, what are the weaknesses with an approach like this?