I have some Bluetooth LE v4.2 beacons that I will connect ONLY with known devices that we may call "readers". No consumer with use my beacons, I program them, I install them, I consume the data and I sell the service.
I want to use Bluetooth LE Secure Connections, but replace the pairing by a hard-coded shared secret. My primary concern is that only known, authenticated device can send data with integrity protection.
I understand that I probably only need the CSRK, but I am not sure if I should still generate a LTK and how the CSRK is generated.
So far, I thought about :
- Skip pairing and use my shared secret directly as the CSRK for all my devices.
- Skip pairing and use my shared secret directly as the LTK for all my devices. Then generate a random CSRK that I share through the link.
- Skip pairing phase 1, 2 and use my shared secret to generate a device specific CSRK without the random numbers, almost like the usual phase 3 LTK generation, but for CSRK.
- Skip pairing phase 1, 2 and use my shared secret to generate a device specific LTK without the random numbers, almost like the usual phase 3 LTK generation. then generate a random CSRK that I share through the link.
What would be my best option ?
A few previsions :
- We are talking about 1000s of devices, and more will join the network every day.
- I am already doing advertisement filter, etc. I only connect to devices with my vendor id.
- Replacement is preferable to any kind of lack of security in the authentication, my added value is the trust in data.
- I have an OTA update system for all the devices.