Project

General

Profile

OTR » History » Revision 20

Revision 19 (Adrian Georgescu, 09/13/2013 02:21 AM) → Revision 20/32 (Adrian Georgescu, 09/13/2013 02:23 AM)

h1. Blink OTR implementation 

 September 12th, 2013 

 "Blink SIP client for SIP2SIP edition":http://download.sip2sip.info/ is a multimedia SIP client that supports chat sessions using MSRP protocol (RFC4975 http://tools.ietf.org/html/rfc4975).    The client is designed to work with SIP2SIP service that implements MSRP relay protocol for NAT traversal of SIP sessions with MSRP media like Instant Messaging chat sessions.  


 Over the MSRP media chat session, Blink SIP client for SIP2SIP edition implements the OTR protocol. OTR functionality will be gradually deployed to other versions and variations of Blink client.  


 h2. OTR Protocol 

 "Off-the-Record (OTR) Messaging":http://www.cypherpunks.ca/otr/ allows two parties to have private conversations over instant messaging by providing: 

 h3. Encryption 

 No one else can read your instant messages. 

 h3. Authentication 

 You are assured the correspondent is who you think it is. 

 h3. Deniability 

 The messages you send do not have digital signatures that are checkable by a third party. Anyone can forge messages after a conversation to make them look like they came from you. However, during a conversation, your correspondent is assured the messages he sees are authentic and unmodified. 

 h3. Perfect forward secrecy 

 If you lose control of your private keys, no previous conversation is compromised. 

 h2. Implementation 

 The OTR implementation is backwards compatible with remote MSRP clients that do not support it (in this case (of course the encryption features feature are not available). available in this case). OTR is not employed when on the remote party is a multi-party conference server advertised (advertised by is-focus Contact header parameter.  

 parameter). The code is written in Python and is based on the "python-otr package":https://pypi.python.org/pypi/python-potr/1.0.0b5 

 h3. User input 

  * Local and remote fingerprints are displayed in the Encryption menu 
  * Chat window has the Encryption toolbar icon, encryption features for each session can be controlled by clicking on this toolbar item, a contextual menu appears 
  * Verification of remote identity can be performed using SMP protocol (in a separate window) or manually in an audio session 
  * Each Contact can have encrypted related attributes saved (always use OTR, verification status and learned fingerprint) 
  * Logging of Chat conversations can be toggled off (global setting) 
  * History saves for each message the encryption status (encrypted/non-encrypted and fingerprint un/verified). This is rendered using a lock with a corespondent collor 

 h3. Notifications 

 When the remote party has proposed OTR for the current session, the colour of the toolbar button changes to either orange (unverified fingerprint) or green (verified fingerprint). When the remote party (identified by its SIP URI) has changed its encryption fingerprint, several visual and audible clues appear: 

  * Encryption lock turns red 
  * Chat window system message is displayed 
  * Voice synthesiser speaks 
  * System notification (OSX >=10.8)  
  * Growl notification 

 h3. Key storage 

 The private key is stored in the program configuration folder under a folder called *chat*. The database with the remote fingerprints is stored in a file under the same folder: 

  * private_key.dsa 
  * trusted_peers 

 

 h3. Interoperability 

 We are not aware of any other SIP/MSRP client implementation that supports OTR encryption today. Blink OTR implementation however interoperates well with XMPP clients when using SIP2SIP service built-in SIP/XMPP gateway. We were able to have bidirectional OTR encrypted chat sessions between Blink (using SIP/MSRP) and "Jitsi":http://jit.si (using XMPP) through "SylkServer":http://sylkserver.org.