Password Storage and Call Recording

GSoC Student: Dmitri Melnikov - (Estonia)
Mentors: George Politis - Greece/France, Benoit Pradelle (France)
Backup Mentors: Lubomir Marinov (Bulgaria), Damian Minkov (Bulgaria), Emil Ivov (Bulgaria/France)

Project Requirements ( show )

First term: Password Storage

  1. Select a Java utility that we’d be able to use for storing passwords
  2. Define a CredentialsStorageService that allows bundles such as protocols to store and retrieve passwords.
  3. Implement the CredentialsStorageService using the utility you selected at the beginning and adding a user interface that would allow us to ask the user to:
    1. Request access confirmation from the user
    2. Manage password storage (i.e. display and delete passwords) through the configuration form the way Firefox does that.
    3. Allow switcing between protected and non-protected (default) modes of operation.
  4. Change all existing protocol implementations to use the above service in the following order:
    1. XMPP
    2. SIP
    3. MSN
    4. Yahoo! Messenger
    5. ICQ/AIM
  5. Password migration: provide a transition utility that would migrate passwords currently stored in one’s configuration file to the new utility. The utility would need to do this automatically without bothering the user.
  6. Optional: implement support for remaining protocols.

Second term: Call Recording

  1. Extend the neomedia service in a way that would allow plugins to request audio recording for a particular call into a regular file.
  2. Implement support for a regular 1-to-1 call
  3. Implement support for conference calls (if modifications are at all necessary)
  4. Implement support for simultaneous calls (if modifications are at all necessary)
  5. Make sure that hold, and mute are properly handled.
  6. Make sure that video calls are properly handled (by only recording audio).
  7. Make sure starting and stopping recording during the same call is properly handled.
  8. Implement a configuration form that allows the user to select between a default storage location (default) or a file chooser dialog that appears every time they want to record.

Optional: add the possibility to record and audio video call (both audio and video).

This project consists of two, rather independent parts: storing passwords in a secure way and recording calls.

Password Storage

Currently SIP Communicator does not explicitly protect or encrypt the passwords that users would choose to keep locally, and relies on OS administration policies for that. The passwords are generally kept into the user home and in most operating systems the default settings would prevent others from accessing that location.

Still, many users would find this insufficient for a number of reasons (e.g. often being afk). To address these concerns, other applications having the issue like Firefox and Thunberbird for example, would hence provide a password storage utility that allows their users to protect all locally stored passwords with a single master password. We think this mechanism is a good compromise between usability and security.

The purpose of this project is to implement a similar utility in SIP Communicator.

The second part of this project is about:

Call Recording

Imagine a conference call with a number of important participants in an important project, saying important things about it. Now imagine you are also a member of this project and that you weren’t able to attend the conference call.

If this doesn’t sound familiar then try to imagine having a phone call with your parents who promise to pay for your summer vacation. Well, you definitely had to get that on the record, and you obviously didn’t since, rather than planning your summer trip, you are now trying to get accepted for GSoC :) … oh well deep inside you know that working on a GSoC project is going to be far better for your future than that trip you had in mind … :).

So anyways, the important thing is that whatever the reason, call recording is a very important feature and we want to have it.

A few months ago we completely changed our media architecture and it is now possible for a plugin to actually do the recording. Our neomedia module offers fine control on devices and it is now possible to introduce a call recording device right next to the audio capture and playback.

In addition to the obvious interaction with our media module, you’d also need to add the user interface that allows users to control (i.e. start, pause, and stop recording) as well as browse existing recordings and, possibly, replay them.

References:

Keychain Services Programming Guide
http://developer.apple.com/…/keychainServConcepts

KDE Wallet Manager
http://utils.kde.org/projects/kwalletmanager/

GNOME Keyring
http://live.gnome.org/GnomeKeyring

The Java Media Framework
http://java.sun.com/jmf

The SIP Communicator NeoMedia Service
http://bluejimp.com/sip-communicator/…/neomedia/package-summary.html

The SIP Communicator User Interface Service
http://bluejimp.com/sip-communicator/…/package-summary.html

Other SIP Communicator GSoC Projects
http://gsoc.sip-communicator.org

SIP Communicator Developer Documentation
http://www.sip-communicator.org/index.php/Documentation/DeveloperDocumentation

The official SIP Communicator website
http://www.sip-communicator.org