This is the place where I'm going to discuss my design and implementation of ZRTP in the SIP communicator.( Consider this is still under construction and still more to added and modified later.) All your comments are welcome.
ZRTP is a key agreement protocol which performs Diffie-Hellman key exchange during call setup in the media path, and is transported over the same port as the Real-time Transport Protocol (RTP) media stream which has been established using a signaling protocol such as Session Initiation Protocol (SIP) . This generates a shared secret which is then used to generate keys and salt for a Secure RTP (SRTP) session. ZRTP borrows ideas from PGPfone (Zimmermann, P., “PGPfone,” .). A reference implementation of ZRTP is available as Zfone (Zimmermann, P., “Zfone,” .) .
I think to implement the ZRTP related logic inside the SIP communicator I need to modify the SRTP implmentation code and add the new ZRTP key exchange logic in top of it.
To implment this I'm going to refer two major materials related to ZRTP.
1.ZRTP- Media Path Key Agreement for Secure RTP draft-zimmermann-avt-zrtp-06x
(http://zfoneproject.com/docs/ietf/draft-zimmermann-avt-zrtp-06x.html) - This document defines ZRTP, a protocol for media path Diffie-Hellman exchange to agree on a session key and parameters for establishing Secure Real-time Transport Protocol (SRTP) sessions.
2. GNU ccRTP(http://www.gnu.org/software/ccrtp) - GNU ccRTP is an implementation of RTP, the real-time transport protocol from the IETF. Releases 1.5.0 and above support the Secure RTP profile, SRTP . A separate extension package, libzrtpcpp, provides support for the ZRTP protocol (as defined in the Internet draft draft-zimmermann-avt-zrtp).
You can find the complete pdf version of my GSOC 2008 proposal here.
Note : consider this is not the finalized version and this is going to be modified and added more design and implementation details when the project starts.
your comments are really appreciated.
ZRTP is a key agreement protocol which performs Diffie-Hellman key exchange during call setup in the media path, and is transported over the same port as the Real-time Transport Protocol (RTP) media stream which has been established using a signaling protocol such as Session Initiation Protocol (SIP) . This generates a shared secret which is then used to generate keys and salt for a Secure RTP (SRTP) session. ZRTP borrows ideas from PGPfone (Zimmermann, P., “PGPfone,” .). A reference implementation of ZRTP is available as Zfone (Zimmermann, P., “Zfone,” .) .
I think to implement the ZRTP related logic inside the SIP communicator I need to modify the SRTP implmentation code and add the new ZRTP key exchange logic in top of it.
To implment this I'm going to refer two major materials related to ZRTP.
1.ZRTP- Media Path Key Agreement for Secure RTP draft-zimmermann-avt-zrtp-06x
(http://zfoneproject.com/docs/ietf/draft-zimmermann-avt-zrtp-06x.html) - This document defines ZRTP, a protocol for media path Diffie-Hellman exchange to agree on a session key and parameters for establishing Secure Real-time Transport Protocol (SRTP) sessions.
2. GNU ccRTP(http://www.gnu.org/software/ccrtp) - GNU ccRTP is an implementation of RTP, the real-time transport protocol from the IETF. Releases 1.5.0 and above support the Secure RTP profile, SRTP . A separate extension package, libzrtpcpp, provides support for the ZRTP protocol (as defined in the Internet draft draft-zimmermann-avt-zrtp).
You can find the complete pdf version of my GSOC 2008 proposal here.
Note : consider this is not the finalized version and this is going to be modified and added more design and implementation details when the project starts.
your comments are really appreciated.