Zfone libZRTP Software Development Kit (SDK)
Zfone is our new secure VoIP phone encryption software, designed by Phil Zimmermann, the creator of PGP. VoIP developers may license the Zfone libZRTP Software Development Kit to add Zfone's ZRTP protocol to their VoIP applications. This SDK is suitable for inclusion in software VoIP clients, firmware for hardware VoIP phones, VoIP PBX servers, mobile VoIP clients, and SIP border control servers. The SDK enables your VoIP application to interoperate and make secure calls with the rest of the ZRTP community.
in someone's ear from
a thousand miles away.
What's so good about the ZRTP protocol?
Zfone uses a new protocol called ZRTP to negotiate the cryptographic keys for encrypting the call. The SIP servers are not involved in the cryptographic key agreements, which are done entirely over the RTP media stream. After the keys are negotiated, it uses SRTP for the low-level packet encryption of the media stream. It interoperates with any standard SIP phone, but naturally only encrypts the call if you are calling another ZRTP endpoint. The ZRTP protocol has been published by the IETF as RFC 6189 to enable interoperability of SIP/ZRTP endpoints from different vendors.
The ZRTP protocol has some nice cryptographic features lacking in many other approaches to VoIP encryption. Although it uses a public key algorithm, it avoids the complexity of a public key infrastructure (PKI). In fact, it does not use persistant public keys at all. It uses ephemeral Diffie-Hellman with hash commitment, and allows the detection of man-in-the-middle (MiTM) attacks by displaying a short authentication string for the users to verbally compare over the phone. It has perfect forward secrecy, meaning the keys are destroyed at the end of the call, which precludes retroactively compromising the call by future disclosures of key material. But even if the users are too lazy to bother with short authentication strings, we still get fairly decent authentication against a MiTM attack, based on a form of key continuity. It does this by caching some key material to use in the next call, to be mixed in with the next call's DH shared secret, giving it key continuity properties analogous to SSH. All this is done without reliance on a PKI, key certification, trust models, certificate authorities, or key management complexity that bedevils the email encryption world. It also does not rely on SIP signaling for the key management, and in fact does not rely on any servers at all. It performs its key agreements and key management in a purely peer-to-peer manner over the RTP packet stream. And it supports opportunistic encryption by auto-sensing if the other VoIP client supports ZRTP.
There are good reasons why ZRTP does not rely on a PKI approach. There are major problems and complexities with building, maintaining, and relying on PKI. That's why in the 1990s, a number of companies died trying to build and market PKI technology. See Ellison and Schneier's paper Ten Risks of PKI: What You're Not Being Told About Public Key Infrastructure and Ellison's paper Improvements on Conventional PKI Wisdom.
Licensing the SDK
VoIP developers may license the Zfone libZRTP SDK and reduce their time-to-market quite a bit. Just contact us for licensing details. We have a range of flexible commercial licensing terms to suit your needs, depending on such factors as the expected sales volume, the expected price range of your product, the degree your product will depend on ZRTP, etc. Please include your phone number in your email, and we can discuss it interactively.
Full C source code and quite extensive API documentation are available now. We have used this SDK on Linux, Windows XP, Vista, and Mac OS X to build the Zfone application. Our partners have also built products with our SDK that run on Windows Mobile and Symbian mobile platforms. We do not have a Java version at this time.Register to Download Zfone SDK
To evaluate the libZRTP SDK, go to our Zfone Register-to-Download Page and select the Linux version, which includes full source code, including the libZRTP SDK. Even if you plan to use it for a non-Linux platform, you should download the SDK in the Linux version, because it is the same SDK on all platforms, and it has a make file to build it for multiple platforms, including Windows. The Linux release of the Zfone application provides a good example of how the libZRTP SDK can be used in a real application.
Prices for licensing the libZRTP SDK
Sometimes companies ask us to email them our price per copy for the SDK, without telling us anything about what they want it for. If you want to put our SDK into 100 million copies of a very low cost soft VoIP client for consumers who don't know or care if it has security features, you will pay a much lower price per copy than someone who wants to build a $3000 customized hardware mission-critical secure phone for military use, and sell only 1000 units. Discriminatory pricing is a good thing. It enables people to pay coach fares for airline tickets. We think most customers benefit from a flexible discriminatory pricing model. You must speak with us directly and tell us what you need before we can find a set of prices that fits your needs. We have to discuss the expected sales volume, the expected price range of your product or service, the degree to which your customers care about security and what they will expect pay for it, whether it will be bundled in all copies sold or added as an extra cost feature, whether your customers will want us to include the optional Elliptic Curve Diffie-Hellman (NSA Suite B) features, and the degree your product will depend on ZRTP.
Some of our OEM customers worry that their own customers are unsophisticated end users that just assume that VoIP is as secure as the PSTN, and thus do not perceive the true value of secure VoIP. We can discuss with you ways to raise your customers awareness of the must-have nature of secure VoIP, and thus help you justify charging them enough money to make it worthwhile for you and for us.
The SDK Reference manual
The Zfone libZRTP SDK includes extensive documentation, providing for developers an extensive reference manual for how to use the libZRTP SDK's API in a VoIP application.
Wireshark ZRTP packet dissector
If you are developing VoIP applications that use the ZRTP protocol, you may want to use the popular open source Wireshark protocol analyzer (formerly known as Ethereal) to inspect ZRTP packets. Wireshark can recognize and dissect ZRTP packets.
bnlib - BigNum multiprecision integer math library
Zfone performs its fast Diffie-Hellman calculations by using Colin Plumb's math library, bnlib. It's useful in many other public-key applications, and is used by PGP. This math library does extended precision integer arithmetic suitable for public key algorithms such as Diffie-Hellman, RSA, ElGamal, or the DSA. You don't have to license Zfone or the libZRTP SDK to license bnlib à la carte. If you want to check out and possibly license bnlib separately for your crypto application, click here.
"Zfone", "libZRTP", and "whisper in someone's ear from a thousand miles away" are all trademarks of Philip Zimmermann.