linuxbluetooth-lowenergybluezdiffie-hellman

BlueZ: LE secure pairing using Elliptical Curve Diffie-Hellman from command line


One of the main features of Bluetooth v4.2 is LE secure connections, where Elliptic Curve Diffie-Hellman (ECDH) is used for the key agreement protocol. As of BlueZ v5.26, support for LE secure connections has been added as follows:-

"BlueZ 5.26 is the first release with support for Blueooth 4.2 features. Perhaps the most notable one of these is Low Energy Secure Connections which will require a 3.19 or newer kernel."[1]

Is there a way to test ECDH pairing through the command line? if not, what is the easiest way to test this?

I'm using BlueZ v5.38 on kernel 3.19 but I can't figure out how to do this.

[1] http://www.bluez.org/release-of-bluez-5-26/


Solution

  • In Linux, the secure connections feature using ECDH can be verified by performing pairing (using bluetoothctl) between two Bluetooth v4.2 devices and observing the output through btmon. Look for HCI Event: Link Key Notification and observe the Key type. If it shows P-256, then Secure Connections feature is verified. If it shows P-192, then it is using Secure Simple Pairing (SSP).

    Additional background on this can be found in the Bluetooth Core Specification v4.2 in Vol 1, Part A, Section 5.1: Security Architecture.

    I hope this helps.