Home▸Cybersecurity▸Smartwatch BLE Pairing & Key Exchange (2D)

Smartwatch BLE Pairing & Key Exchange (2D)

Interactive 2D visualizer of the elliptic-curve Diffie-Hellman handshake a smartwatch and phone run to pair over Bluetooth LE — pan and zoom the finite-field lattice and watch how Numeric Comparison catches a man-in-the-middle that Just Works pairing misses.

Cybersecurity2DAdvanced60 FPS📱 Mobile-adapted⇄ 3D version
2d-exp-smartwatches-security ↗ Open standalone

Every time a smartwatch pairs with a phone over Bluetooth Low Energy, the two devices run a real elliptic-curve Diffie-Hellman handshake to agree on a session key without ever transmitting a secret. This 2D visualizer plots that handshake on a genuine (deliberately small) elliptic curve over a finite field as a pannable, zoomable lattice: watch and phone each pick a private scalar, publish a public point computed with real modular point-addition, and derive matching session keys from each other's public point. Toggle between "Just Works" and "Numeric Comparison" pairing, then introduce a passive eavesdropper or an active man-in-the-middle attacker to see exactly why Just Works pairing is silently vulnerable while Numeric Comparison's 6-digit code catches the same attack before any data is exchanged — and watch a brute-force key search finish instantly on this toy-sized curve, the same search that is computationally infeasible against the 256-bit curve real BLE hardware actually uses.

⚙ Under the hood

A 2D pan-and-zoom visualizer of the real elliptic-curve Diffie-Hellman handshake a smartwatch and phone run to pair over Bluetooth LE: watch and phone each pick a private scalar, publish a public point computed with genuine modular point-addition on a small GF(p) curve, and derive a shared session key — while Numeric Comparison pairing's 6-digit code exposes an active man-in-the-middle that Just Works pairing lets through silently.

bluetoothcryptographyECDHwearablesMITMpairing

2D · HTML5 Canvas 2D · 60 FPS target · runs fully client-side, no install

What did you find?

Add reproduction steps (optional)