Java implementation was developed focusing and paying particular attention to mobile platforms, during the development of PrivateGSM
product for Blackberry.
- ZRTP protocol implementation
- SRTP protocol implementation
Since mobile platforms have strict constraints on resources consumption we put great care in producing an optimized version, in order to optimize:
- encryption/digest calculations
- use efficiently memory
- aggressive packet timing and retransmission to work over high latency/packet loss mobile networks
Intensive CPU usage leads to battery consumption, leaving the user with a dead phone. Java implementation provides an abstraction layer to leverage on native platform encryption APIs provided by Blackberry platform (former Certicom APIs). While not done by us yet, we expect that it would be very easy and quick to add a new backend based on J2SE Crypto APIs
or directly on BouncyCastle
Another major issue with java development is garbage collection. Every time you allocate a new Object on the heap you are producing garbage that later should be thrown away. On J2SE this is not an issue anymore, generally, but on mobile it's still a big issue that you should be aware of and worried about, particularly because mobile garbage collectors are not very efficient, eg: on blackberry JVM the GC stops the world, even for some seconds, and this is not acceptable when you are doing real-time communication!
Our implementation is particularly efficient regarding Objects reuse to reduce at minimum the GC activity.
Current Java implementation is not complete ZRTP RFC draft
, but it supports almost everything required to implement a secure VoIP client with end-to-end security.
Key exchange support
*Not working in blackberry crypto backend due to some issues with Certicom implementation
- Local cache
- Self-healing key continuity
Random Number Generation
- Pluggable random generator, eg: microphone Audio Sample Entropy Collection
- Hello hash not corresponding (if SDP zrtp-hash does not match)
- Cached secret non corresponding (MITM Warning)
- Wrong HMAC
ZRTP SIP support
- Blackberry OS 4.6.x, 5.x, 6.x
- J2SE with Crypto