Paper 2025/1843
Efficiency Improvements for Signal's Handshake Protocol
Abstract
Signal's handshake protocol non-interactively generates a shared key between two parties for secure communication. The underlying protocol X3DH, on which the post-quantum hybrid successor, PQXDH, builds, computes three to four individual Diffie-Hellman (DH) keys by combining the long-term identity keys and the ephemeral secrets of the two parties. Each of these DH operations serves a different purpose, either to authenticate the derived key or to provide forward secrecy. We present here an improved protocol for X3DH, which we call MuDH, and an improved protocol for PQXDH, pq-MuDH. Instead of computing the individual DH keys, we run a single multi-valued DH operation for integrating all contributions simultaneously into a single DH key. Our approach is based on techniques from batch verification (Bellare et al., Eurocrypt 1998), where one randomizes each contribution of the individual keys to get a secure scheme. The solution results in execution times of roughly 60% of the original protocol, both in theory and in our benchmarks on mobile and desktop platforms. Our modifications are confined to the key derivation step, both Signal’s server infrastructure for public key retrieval and the message flow remain unchanged.
Metadata
- Available format(s)
-
PDF
- Category
- Public-key cryptography
- Publication info
- Published elsewhere. Minor revision. ACM ASIACCS 2026
- Keywords
- SignalX3DHPQXDHDiffie-HellmanEfficiency Improvement
- Contact author(s)
-
barbara_jiabao benedikt @ tu-darmstadt de
sebastian clermont @ tu-darmstadt de
marc fischlin @ tu-darmstadt de
tobias schmalz @ tu-darmstadt de - History
- 2025-12-08: last of 5 revisions
- 2025-10-06: received
- See all versions
- Short URL
- https://ia.cr/2025/1843
- License
-
CC BY
BibTeX
@misc{cryptoeprint:2025/1843,
author = {Barbara Jiabao Benedikt and Sebastian Clermont and Marc Fischlin and Tobias Schmalz},
title = {Efficiency Improvements for Signal's Handshake Protocol},
howpublished = {Cryptology {ePrint} Archive, Paper 2025/1843},
year = {2025},
url = {https://eprint.iacr.org/2025/1843}
}