LE Secure Connections — Practical Pairing Walk-Through
Chapter 11 Part 6 · Sections 11.10.2 & 11.11 · Figures 11.14–11.16 · Complete Phase 1/2/3 Trace & Chapter Summary
11.10.2 — LE Secure Connections Practical Example
The Scenario
This walkthrough traces a real-world LE Secure Connections pairing session between two devices called Side 1 and Side 2. Side 1 is the Master and starts the process. The capture begins at Frame #505 with a Pairing Request and completes after the DHKey check exchange in Frame #1160. Phase 3 is intentionally absent because both sides chose not to distribute any long-term keys.
This is the most secure pairing path BLE supports — ECDH-based key exchange means even a complete air capture cannot help an attacker derive the session key.
11.10.2.1 — Pairing Phase 1
Figure 11.14 — Pairing Request from Side 1 (Master)
Side 1 opens Phase 1 by sending a Pairing Request to Side 2. Four points stand out in this capture:
IO Capabilities NoInputNoOutput → no display, no keyboardSecure Connections Pairing Yes (SC bit = 1) ← this is the key 4.2 flagKeypress Notifications Yes both sides must agree or it won’t be usedKey Distribution No Master will not send any keys in Phase 3Why IO = NoInputNoOutput with Secure Connections? Because LE Secure Connections with NoInputNoOutput on both sides selects the Just Works association model. The security comes from the ECDH key exchange — no user interaction is needed to protect the key derivation. Contrast this with LE legacy pairing where Just Works is vulnerable because the TK is zero. In SC, the DHKey is computationally protected regardless of the association model.
Figure 11.15 — Pairing Response from Side 2 (Slave)
Side 2 replies with its own capability set. Three observations:
11.10.2.2 — Pairing Phase 2
Figure 11.16 — The ECDH-Based Authentication Exchange
Phase 2 in LE Secure Connections involves five distinct steps. The capture shows all of them between Frames #991 and #1160:
Why does Side 2 send the confirm before Side 1 sends its random? This commit-and-reveal pattern ensures neither side can choose a nonce after seeing the other’s. Side 2 commits to Nb by publishing Cb=f4(PKa, PKb, Nb, 0). Only after this commitment does Side 1 reveal Na. Side 2 then reveals Nb. Side 1 can now verify that Cb was correctly computed using the Nb just received. Neither side can retroactively change their nonce without breaking the commitment.
11.10.2.3 — Pairing Phase 3
Phase 3 Does Not Happen in This Session
Both Side 1 and Side 2 set their Key Distribution fields to No during Phase 1. This means there are no keys to distribute and Phase 3 is completely skipped. The capture jumps directly from the DHKey check exchange to normal encrypted data traffic.
This is a valid configuration. For LE Secure Connections, the LTK was already derived from the DHKey computation — it does not need to be sent over the air as it would in legacy pairing. If both sides are satisfied with session-only security (no long-term bonding), Phase 3 is unnecessary.
/* Monitor LE Secure Connections pairing with btmon */
sudo btmon
/* Phase 1 — look for SC bit in AuthReq: */
/* SMP: Pairing Request (0x01) */
/* IO capability: NoInputNoOutput (0x03) */
/* Authentication requirement: Bonding, SC (0x09) */
/* ^^ */
/* SC bit = 1 confirmed */
/* Phase 2 — public key exchange: */
/* SMP: Pairing Public Key (0x0C) */
/* X: a1b2c3d4... (32 bytes) */
/* Y: e5f6a7b8... (32 bytes) */
/* Phase 2 — authentication stage 2: */
/* SMP: Pairing DHKey Check (0x0D) */
/* E: ff112233445566778899aabbccddeeff */
/* Encryption starts after DHKey check exchange: */
/* HCI_LE_Long_Term_Key_Request_Reply sent by host */
/* Encryption Change Event: handle=64, enabled=1
11.11 — Chapter 11 Summary
What the Security Manager Delivers
The Security Manager handles everything security-related after a Link Layer connection is established. It is placed in the host rather than the controller — keeping the controller simple and the security logic upgradeable through software.
- Security in host, not controller
- Asymmetrical — phone does heavy work
- 56–128 bit key lengths in 8-bit steps
- RPA privacy for location protection
- Phase 1: exchange capabilities & agree method
- Phase 2: STK (legacy) or LTK via ECDH (SC)
- Phase 3: distribute LTK, EDIV, IRK, CSRK
- Phase 3 optional — may be skipped
- P-256 ECDH — key not exposed over air
- LTK derived from DHKey locally
- Forward secrecy per session
- Replay-resistant with nonce exchange
Next — Chapter 12: Attribute Protocol (ATT)
ATT defines how BLE devices discover, read, write, and get notified about data. It is the engine under every GATT profile.
