Proposal to implement the ZRTP enhancement

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Werner!

Thanks for taking this up.

AFAIK ZRTP requires to persistently store some data (e.g. for key 
continuity ...). Where will this be done? Automatically inside 
transport_zrtp or is it the application's task to store these date?

regards
Klaus

Am 21.11.2010 11:07, schrieb Werner Dittmann:
> Dear all,
>
> some members of this mailing list pointed me to the enhancement request to
> implement ZRTP into the pjproject libraries. I browsed through the pj
> sources and would like to make the following proposal to implement ZRTP
> for pj. The follwing figure depicts at a high level the planned
> implementation:
>
>                              +-----------+
>                              |           |
>                              | SRTP-ZRTP |
>                              |           |
>                              +-----------+
>                              |C Wrapper  |
>                              +-----+-----+
>                                    |
>                                    | uses
>                                    |
>    +----------------+      +-------+--------+      +-+-----------------+
>    |  App (pjsua)   |      |                |      |C|                 |
>    |  creates a     | uses | transport_zrtp | uses | |    GNU ZRTP     |
>    | ZRTP transport +------+   implements   +------+W|      core       |
>    | and implements |      |  ZrtpCallback  |      |r| implementation  |
>    |ZrtpUserCallback|      |                |      |a|  (ZRtp et al)   |
>    +----------------+      +----------------+      |p|                 |
>                                                    +-+-----------------+
>
> Description:
>
> GNU ZRTP
> GNU ZRTP is the existing ZRTP implementation that handles the ZRTP
> protocol, performs necessary ZRTP computations, maintains some data in a
> file etc. I implemented this part in C++ (it's stable, tested to work with
> Phil Zimmermann's implementation) and it's licencse is GPL v3. Currently I
> implemented a first version of a C Wrapper to make GNU ZRTP accessible to
> C implementations. The C Wrapper covers the main functions already and will
> be enhanced during the pj project implementation. GNU ZRTP is a library,
> no requirement to have it as third party source in pjproject - it's already
> available as part of the GNU ccRTP project.
>
>
> transport_zrtp
> This is a new pjmedia transport that links into the transport stream,
> similar to the current SRTP transport. Thus transport acts as a filter that
> controls the flow of ZRTP, RTP, and SRTP data. This is obviously a new
> module. IMHO it should live in the pjmedia source, parallel to the other
> transport modules. This module will be the main development during the
> planned ZRTP integration.
>
>
> SRTP-ZRTP
> Instead of using the existing SRTP implementation I plan to use an own SRTP
> implementation (also a C++ implementation that has a C Wrapper). Some
> reasons why: the current libsrtp does not support AES 256 which is implemented
> for ZRTP. In addition ZRTP defines some more modern authentiation mechanisms
> in SRTP that I will implement step by step. In addition the ZRTP/SRTP module
> uses either openSSL or libgcrpyt as crypto backends, thus no own implementation
> of the AES cipher or bignum but reusing proven an well tested implementations.
> This module would live in an apporpriate third party directory.
>
>
> The callback stuff is implemented as usual. GNU ZRTP requires some external
> support functions, for example to send data via RTP, get a mutex, etc. Because
> these functions are system dependent the transport_zrtp module implements these
> and provides them via callback to GNU ZRTP. transport_zrtp uses UserCallback
> methods to inform the application about status changes, for example if security
> was established, which cipher was engaded, and some other user interactions.
>
> To implement this stuff I obviously need some help from pjproject gurus, in
> particular with the build and configuration stuff and the intrinsics of the
> transport mechanisms. I would start to evaluate the transport_srtp and the
> transport example to lower the learning curve. However, some support would
> highly appreciated once I had a first rough draft of the transport_zrtp code.
>
>
> Best regards,
> Werner
>
> _______________________________________________
> Visit our blog: http://blog.pjsip.org
>
> pjsip mailing list
> pjsip at lists.pjsip.org
> http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org



[Index of Archives]     [Asterisk Users]     [Asterisk App Development]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [Linux API]
  Powered by Linux