Proposal to implement the ZRTP enhancement

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

 



Hi Klaus,

this is part of the ZRTP core implementation. The application
only provides where to stores the data (filename).

Regards,
Werner

Am 23.11.2010 20:06, schrieb Klaus Darilion:
> 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