  As the Internet of Things (IoT) emerges over the next decade, developing
secure communication for IoT devices is of paramount importance. Achieving
end-to-end encryption for large-scale IoT systems, like smart buildings or
smart cities, is challenging because multiple principals typically interact
indirectly via intermediaries, meaning that the recipient of a message is not
known in advance. This paper proposes JEDI (Joining Encryption and Delegation
for IoT), a many-to-many end-to-end encryption protocol for IoT. JEDI encrypts
and signs messages end-to-end, while conforming to the decoupled communication
model typical of IoT systems. JEDI's keys support expiry and fine-grained
access to data, common in IoT. Furthermore, JEDI allows principals to delegate
their keys, restricted in expiry or scope, to other principals, thereby
granting access to data and managing access control in a scalable, distributed
way. Through careful protocol design and implementation, JEDI can run across
the spectrum of IoT devices, including ultra low-power deeply embedded sensors
severely constrained in CPU, memory, and energy consumption. We apply JEDI to
an existing IoT messaging system and demonstrate that its overhead is modest.
