5

I'm trying to make a BLE device that actually pairs securely. As far as I know the transport encryption (using AES) is secure in all versions of BLE, once the 'Long Term Key' has been exchanged.

BLE 4.1

BLE 4.1 and earlier use symmetric cryptography and the passkey (PIN) is only 6 digits so it is trivial to passively eavesdrop on the pairing, brute-force the passkey and derive the LTK from that. It seems that this was insecure by design because it was thought that low power BLE devices wouldn't have enough oomph to do asymmetric cryptography.

BLE 4.2

BLE 4.2 adds 'Secure Connections'. This is apparently also broken and what's more it was broken in 2008 when the same pairing method was used in Bluetooth 2.1!! It doesn't totally break pairing - only the passkey entry method - and you only learn the passkey, not the LTK. But it does allow an attacker to perform a MitM attack if the passkey isn't changed for every pairing attempt.

Out-of-Band pairing

The Out-of-Band pairing method would be an excellent choice, then I can use a QR code or something. However there are no public APIs to access the OOB method on either Android or iOS. Android supports OOB pairing via NFC but iOS doesn't, so that's out.

It seems the only option left is to implement a custom encryption scheme, but that is a ridiculous amount of work.

My questions are:

  1. Why did the Bluetooth SIG specify a pairing method in BLE 4.2 that was already known to be insecure 6 years earlier?

  2. Are there any existing encryption schemes for BLE that secure it? Ideally open source and well-tested, but could be commercial. Would I still be able to use GATT?

Community
  • 1
  • 1
Timmmm
  • 88,195
  • 71
  • 364
  • 509
  • Q1 is highly opinionated. Good luck on Reddit or Quora with that one. – Artjom B. Jun 01 '16 at 13:51
  • There might be a good technical reason, e.g. compatibility. There is a reason; it isn't just opinion. – Timmmm Jun 01 '16 at 14:14
  • @Timmmm Any news so far ? – JonZarate Mar 09 '17 at 15:37
  • No. I never found out why they didn't fix it. And in fact Bluetooth 5 doesn't even change anything. I think the only solution if you really need proper security is to roll your own crypto, but that is a huge amount of work, especially on devices that are so constrained. – Timmmm Mar 09 '17 at 17:16
  • I'm voting to close this question as off-topic because 1. it asks the why question, which cannot be answered without inside knowledge. 2. it asks for any encryption scheme, which is too broad and 3. it is not directly about programming, try https://security.stackexchange.com instead. – Maarten Bodewes Jun 06 '18 at 23:00

0 Answers0