IETF 127 hackathon · LAKE WG

DotBots
in the LAKE

The LAKE handshake (EDHOC, RFC 9528) on a swarm of robots, over the air.

Geovane Fedrecheskigeovane.fedrecheski@inria.fr
San Francisco · November 2026
Context

A testbed of up to 1,000 robots

1,000
DotBots in the Inria testbed

We want IETF protocols to run on all of them.

pydotbot.readthedocs.io
Problem

From one robot to a swarm

IETF 126 · Vienna

One robot, loopback

Initiator ⇄ Responder
inside one sandbox
813 ms
→
IETF 127 · now

A swarm, over the air

each robot with its own key

why A charging station must know which robot is charging, to bill it. Next step: ELA (lake-authz).
Approach

Every robot is a LAKE Initiator

robotInitiatorlakers (Rust), in the TrustZone sandbox$ cargo add lakers
serverResponderlakers-python backend$ pip install lakers-python
per-robot identity
device id8 B
→
HKDFdemo secret
→
P-256 key
→
CRED_Ikid = device id
→
server checkkid == radio address
one click
Run all
from the live web page
robot LED
idle
handshake
OK
fail
Architecture

From robot to browser

3 DotBots · Initiators
gatewayUSB
brokerMQTT / TLS
LAKE Responderlakers-python
live pagebrowser
Robot (Initiator)Server (Responder)
message_137 B
message_245 B
message_328 B
message_49 B
Results

A full handshake in under 2 s

self-test, 1 robot
813 ms
robot crypto
~405 ms
server side
0.7 to 1.1 s
robot end to end
1.5 to 2.0 s
0500100015002000ms
96 mskey derivation
3robots
kid= radio address
29 sOTA flash, 47 KB
measured on DotBots, 15 Nov 2026
New · live on the site

Charging zone: who is charging?

⚡ Charging station
8D1Bcharging, billed to 8D1B
7C0Cauthenticated, refused
A461idle
drag in →
  1. Drag a robot into the zone
  2. It runs the LAKE handshake
  3. Allowed: green, billed to its id
  4. Not on the list: authenticated but refused, flagged as an intrusion
  5. Positions are simulated by drag for now. Lighthouse positions next.
Live page

Press Run, watch them go purple, then green

Swarm view with the 3 live robots, and a Sequence view with every byte on the air. ?demo=1 replays 5 simulated robots.

try it livedotbot-lake.fedrecheski.com
Final

LAKE runs on a robot swarm

Over the air, in under 2 s.
next steps
1Charging zonewith Lighthouse positions
→
2ELAlake-authz, enrollment
→
310 · 100 · 1000DotBots
Want to test your protocol on the testbed?
Send me a message!
geovane.fedrecheski@inria.fr
DotBotspydotbot.readthedocs.io
lakersgithub.com/lake-rs/lakers