Comparison, choice and implementation of a modern encryption algorithm for VoIP communication.
A purpose is to compare, choose the best one, and implement a modern encryption algorithm for an open source VoIP communicator - Mumble. It's required, because Mumble uses old and slow algorithm - AES-OCB. The second reason is that OCB mode is patented and can't be used for free in commercial solutions (like games, in Mumble case). It's an answer to this issue.
I would like to benchmark below algorithms:
Compare and rate their suitability for VoIP communication. VoIP communication is sensitive to latency and its variation (jitter), so the most suitable solution should have the lowest latency. We will use encryption on the server side, so CPU usage and throughput are also important metrics.
Algorithm | Library | Latency | CPU usage | Throughput | License | Limitations |
---|---|---|---|---|---|---|
AES-128-OCB | OpenSSL | Apache | Patented | |||
AES-256-GCM | OpenSSL | Apache | ||||
ChaCha20-Poly1305 | OpenSSL | Apache | ||||
AES-256-GCM | NSS | MPL 2 | ||||
ChaCha20-Poly1305 | NSS | MPL 2 | ||||
AES-256-GCM | wolfCrypt | GPLv2 | Commercial license | |||
ChaCha20-Poly1305 | wolfCrypt | GPLv2 | Commercial license | |||
AES-256-GCM | libsodium | ISC | Requires SSSE3, AES-NI and CLMUL | |||
ChaCha20-Poly1305 | libsodium | ISC | ||||
AEGIS-128L | ? | ISC | ||||
AEGIS-256 | libsodium | ISC |