GNU ZRTP
From GNU Telephony
Contents |
[edit] Introduction to GNU ZRTP
GNU ZRTP is a C++ implementation of Phil Zimmermann's ZRTP specification and is available under the GPL license.
The complete GNU ZRTP implementation consists of two main parts, the GNU ZRTP core and RTP/SRTP implementation specific glue code:
- The GNU ZRTP core is independent of a specific RTP/SRTP stack and the operationg system and consists of the ZRTP protocol state engine, the ZRTP protocol messages, and the GNU ZRTP engine. The GNU ZRTP engine provides methods to setup ZRTP message and to analyze received ZRTP messages, to compute the cryptographic data required for SRTP, and to maintain the required hashes and HMAC.
- The second part of a GNU ZRTP implementation is specific glue code the binds the GNU ZRTP core to the actual RTP/SRTP implementation and provides operating system specific services such as timers, threads, or mutexes. The current GNU ZRTP distribution contains glue code to bind GNU ZRTP to GNU ccRTP.
The RTP/SRTP specific glue code provides the application interface to set up and control the behaviour of GNU ZRTP. Applications never access the GNU ZRTP core directly.
[edit] Current Status
GNU ZRTP 1.1.0 implements the basic ZRTP as specified in the document draft-zimmermann-avt-zrtp-06x. You may access this via the Zfone page.
GNU ZRTP 1.1.0 does not support the additional features of ZRTP such as Multi-stream mode, Pre-shared mode, PBX enrollement, and SAS Signature. However, to keep the external interface as stable as possible I already implemented stubs for the additional features. Some later versions may have these features implemented, depending if they are required by the community.
The current version is compatible and was tested to work with the latest Zfone beta (dated April, 2nd) (see Zfone project site).
[edit] Documentation
A reference manual is distributed with the source package of GNU ZRTP. It is automatically generated from the sources through Doxygen. You can look at it online:
A ZRTP FAQ and a GNU ZRTP How To are also available.
[edit] Downloading GNU ZRTP
GNU ZRTP is available for download at:
GNU ZRTP may be available from other sites in various "package" formats, including GNU/Linux "RPM" and "deb" packages, ".pkg" files under various Unix operating systems, etc. I do encourage people to distribute GNU ZRTP in a package form where convenient for installation, so long as source is also made available.
[edit] Contributing to GNU ZRTP
As the current GNU ZRTP maintainer, I am very open to bringing new ideas and code into GNU ZRTP. Some background of ZRTP and cryptographic algorithms are helpful. Anonymous cvs access is maintained for GNU ZRTP and is done via GNU ccrtp through savannah, and I would be happy to receive and evaluate patches for inclusion in future releases.
GNU ZRTP uses the same e-mail mailing list as GNU ccRTP. This list is available at ccrtp-devel@gnu.org. There is also a web interface for subscribing, modifying subscription options and searching the list archives. Feel free to send any bug reports, patches, and questions to this list.

