September 30, 2009
This article was contributed by Nathan Willis
Free software running open Voice-over-IP (VoIP) standards like Session
Initiation Protocol (SIP) are already an alternative to closed and
proprietary voice services, but relatively few know that free software can
also provide secure, end-to-end encrypted calling. On Wednesday afternoon
at LinuxCon, David Sugar spoke about the work in this area being done in
the GNU Telephony project's Secure Calling
initiative. Sugar outlined the major pieces of secure voice
communication, detailed the project's components — including GNU's
implementation of ZRTP and
the SIP Witch
server — and discussed their usage in practical VoIP deployments.
GNU Telephony is an umbrella project that encompasses work on the
(concurrently-developed) Bayonne and Bayonne
2 servers, SIP Witch, and a suite of libraries for implementing
different parts of a VoIP stack: audio processing, Real-time
Transport Protocol (RTP) media channels, and ZRTP encryption. The
project also puts special emphasis on embedded applications with the GNU
Telephony Open Embedded effort to port solutions to ARM hardware, and
the uCommon
library for lightweight C++ development.
Sugar started his talk with a brief history of the Secure Calling
Initiative. Earnest interest in secure VoIP software dated back to 1999,
he said, in reaction to the passage of the Communications Assistance for
Law Enforcement Act (CALEA) act and its mandates for government-accessible
backdoors in telephony equipment. Proprietary services like Skype may offer
encryption, but without access to the source code it is impossible to know
that no such back doors or simple security flaws exist.
A precondition to secure calling is a secure media path, but it took
some time for a suitable, standards-based free software stack to evolve.
The Secure
RTP (SRTP) protocol was published in 2004, but it was not an end-to-end
solution on its own, because it does not include secure cryptographic key
exchange. The industry standard SDES exchanges both keys in
the clear, Sugar noted, and public key authority systems rely on trusting
third parties.
That situation changed in 2005 when Phil Zimmermann released the ZRTP
key agreement protocol. ZRTP uses Diffie-Hellman key
exchange between the two callers, but adds a "social key exchange" factor
to prevent man-in-the-middle attack. Each user hashes together their own
public key with the other caller's public key; the result is a Short
Authentication String (SAS) that can be exchanged and verified by the
callers verbally. Once the setup is established, the media stream is
encrypted using standard SRTP.
As with the original PGP, however, Zimmermann's implementation of ZRTP
was not free software. In 2006, Werner Dittmann developed a ZRTP
implementation as an extension to the GNU RTP stack ccRTP, thus
immediately making it possible to use ZRTP with softphones already using
ccRTP, such as the popular Twinkle client. Since then, a
second GNU implementation project called ZRTP4J was
developed to bring ZRTP support to Java applications, including SIP Communicator.
SIP Witch, call serving, and the CIA
Making end-to-end secure calling usable for the average user still
required a call-registration and setup server, though. GNU Telephony
wanted to avoid building a complete phone switch similar to Asterisk, said Sugar, because it wanted
to separate call serving from the potentially patent-encumbered task of
media encoding and decoding.
The result is SIP Witch, a gateway that negotiates call setup with ZRTP,
but is free from the compute-bound tasks of audio codec processing. A side
effect of separating SIP Witch's call negotiation features from media
processing is that it enables secure call setup, but at no cost to latency.
Furthermore, once the secure call is established, SIP Witch hands off the
connection to the clients, so it can handle potentially thousands of calls
on modest hardware.
In contrast, Asterisk handles SIP registration, call set-up, codec
negotiation, and encodes and decodes audio — but still does not
support ZRTP/SRTP. Other popular SIP registration servers, such as SIP Express Router (SER), similarly
build in additional features like load-balancing and media relaying, that
also require more processing and potentially add latency.
Nevertheless, SIP Witch is designed to coexist with and interoperate
with other telephony servers, Sugar explained. SIP Witch can sit in front
of Asterisk and intercept ZRTP requests, directing them to an encrypted
softphone, but permit unencrypted calls to pass through to the Asterisk
server. Multiple SIP Witch servers can also operate together, directing
calls to extensions on different nodes, thus making it suitable for large
site-wide deployments.
In a side note, Sugar told of one of the SIP Witch-plus-ZRTP solution's
first deployments "in the wild." The callers were a world-famous pair of
Latin American heads of state with well-known animosity towards the US
government. Prior to SIP Witch, their phone conversations were regularly
intercepted and played back in the news media. After SIP Witch, the
interceptions appear to have stopped.
That use case might make some feel uncomfortable (depending on their
nationality and politics), but Sugar stressed repeatedly that the purpose
of secure calling is not to prevent lawful interceptions or block
subpoenaed wiretaps; it is to prevent illegal surveillance.
Wiretaps that are court authorized can still be executed, he said, perhaps
by installing logging or audio recording software on the caller's computer.
Granting the access to place such software is no different than granting
access to an office to hide a bug inside the ceiling, and it is subject to
judicial oversight. End-to-end VoIP encryption just prevents unauthorized
eavesdropping, something that is relatively easy for unencrypted
Internet-based communication.
Developing applications and services with GNU Telephony
Sugar postulated many potential uses for SIP Witch beyond the dedicated
home hacker's private line. Because of its modest CPU requirements, it is
a good candidate not only for the typical private branch exchange (PBX)
found in a office deployment, but remotely hosted telephone services as
well, including low-cost community telecenters. SIP Witch could even run
on cloud computing services, Sugar added, providing a scalable, secure
calling alternative to closed systems like Skype.
One of the Secure Calling Initiative's primary goals is to make secure
telephony simple enough to use that non-technical users will use it
regularly. Sugar said that the goal has not yet been achieved, but he is
optimistic. Already, the SIP Witch and GNU ZRTP stack is simple enough
that organizations and governments set it up for site-wide usage, he said,
and although it will get easier in the future, the quickest path forward
for casual users may be on mobile devices instead. The Java-based ZRTP4J
library is aimed at such portable use, and Sugar has been working
implementing ZRTP over GSM cellular radios.
Looking forward, Sugar spoke about Zimmermann's "PBX Enrollment"
feature, an extension to the Asterisk server that allows it to perform ZRTP
key- and SAS-exchanges. Again, though, Zimmermann's code
is not available under the GPL, so it cannot be incorporated into the
GPL-licensed version of Asterisk.
Finally, Sugar took questions from the audience, including several on
the problem of extending secure calling to multi-party conference calls.
Secure multi-party calling remains unsolved, he said. Conference calling
involves mixing multiple audio streams, which means decrypting them. The
current secure calling models involve point-to-point media streams designed
to be secure against eavesdropping; the key exchange protocol does not
allow for more than two parties to determine the "shared secret" session
key that encrypts the audio channel.
One possible solution would involve separate secure channels between
every pair of callers, mixing the audio entirely on the client side, but
the bandwidth required increases geometrically with the number of call
participants. Nevertheless, Sugar said, there is interesting work being
done in multi-party conferencing, including 3-D audio positioning that gives
every individual caller a virtual location by mixing the stereo audio
signal accordingly. The result is a multi-party conversation that is
considerably easier to follow than the all-speakers-from-one-point audio
found on conventional land-line party calls.
Secure calling with free software is easier today than ever before, but
Sugar and GNU Telephony are not content with its availability. Sugar
recently started work at Canonical, and is working on making ZRTP libraries
and SIP Witch available for Debian and Ubuntu. They are expected to ship
with Ubuntu 9.10, but Sugar also provides packages through his Personal Package
Archive. With luck, the increased exposure through Ubuntu will
encourage more people to try ZRTP-secured calls and, perhaps, eventually
make them commonplace.
Comments (5 posted)
System Applications
Audio Projects
Version 0.15 of ncmpc, a client of the
Music Player Daemon, has been announced.
"
Changes include an improved build, updated lyricwiki plugin, fixed bugs and a tweaked display. "
Comments (none posted)
Rockbox 3.4 - a replacement firmware for a number of digital media players
- has been released. New features include a number of added codecs, a
pitch detector plugin, a time-stretching feature, the ability to control
music players on a PC from the Rockbox device, and more. See
the release notes for details.
Full Story (comments: 1)
Database Software
The September 27, 2009 edition of the PostgreSQL Weekly News
is online with the latest PostgreSQL DBMS articles and resources.
Full Story (comments: none)
Version 0.10.8 of SQLObject, an object-relational mapper, has been announced.
"
I'm pleased to announce version 0.10.8, a minor bugfix release of 0.10 branch
of SQLObject."
Full Story (comments: none)
Version 0.11.2 of SQLObject, an object-relational mapper, has been announced.
"
I'm pleased to announce version 0.11.2, a minor bugfix release of 0.11 branch
of SQLObject."
Full Story (comments: none)
Interoperability
The Samba Team has published
Blog #2.
"
The Team attended the Storage Network Industry Association plugfest last week.
If you haven't been to one, a plugfest is a technical event where engineers from many different companies get together and participate in fixing bugs, working together and making our systems interoperate."
Comments (none posted)
Web Site Development
Version 0.1 of Sneaky web server has been announced.
"
A fast portable pure-python multithreaded experimental WSGI web server
in 300 lines of code".
Full Story (comments: none)
Version 1.6.5 of Tinyproxy has been announced, it includes several bug fixes.
"
Tinyproxy is a light-weight HTTP proxy daemon for POSIX operating
systems. It is distributed using the GNU GPL license version 2 or
above. Designed from the ground up to be fast and yet small, it is an
ideal solution for use cases such as embedded deployments where a full
featured HTTP proxy is required, but the system resources for a larger
proxy are unavailable."
Full Story (comments: none)
Desktop Applications
Audio Applications
The
libtheora 1.1 release has been announced. It looks like a fairly major step forward for the theora codec. "
This release incorporates all the work we've been doing over the last year, and the encoder has been completely rewritten, although some of the code had its genesis way back in 2003. It also brings substantial performance and robustness improvements to the 1.0 decoder."
Comments (70 posted)
Data Visualization
Version 0.99.1 of
matplotlib,
a data visualization package, is out with several bug fixes. See the
CHANGELOG
file for details.
Comments (none posted)
Version 1.5 of Veusz has been announced, it includes new capabilities
and bug fixes.
"
Veusz is a Qt4 based scientific plotting package. It is written in
Python, using PyQt4 for display and user-interfaces, and numpy for
handling the numeric data. Veusz is designed to produce
publication-ready Postscript/PDF output. The user interface aims to be
simple, consistent and powerful."
Full Story (comments: none)
Desktop Environments
Version 2.5.28 of FVWM has been announced, it includes new features
and bug fixes. See the
change log
for details.
(Thanks to Christoph Fritz).
Comments (2 posted)
Version 2.28 of GNOME has been announced.
"
Today, the GNOME Project celebrates the release of GNOME 2.28, the
latest version of the popular, multi-platform free desktop environment
and of its developer platform. Released on schedule, to the day, GNOME
2.28 builds on top of a long series of successful six months releases to
offer the best experience to users and developers."
Full Story (comments: 37)
ars technica
takes a look
at the recently released GNOME 2.28.
"
The developers behind the open source GNOME desktop environment have announced the official release of version 2.28. This version brings a handful of noteworthy improvements such as a new Bluetooth configuration tool and user interface refinements in numerous applications. One of the most significant changes is the adoption of Apple's WebKit HTML rendering engine for GNOME's Epiphany Web browser."
Comments (1 posted)
The following new GNOME software has been announced this week:
You can find more new GNOME software releases at
gnomefiles.org.
Comments (none posted)
The following new KDE software has been announced this week:
You can find more new KDE software releases at
kde-apps.org.
Comments (none posted)
KDE.News has a
look at the 37 Google Summer of Code projects that were completed for various KDE programs. Screen shots and brief interviews with the students are included. "
Much of the work done during these projects is already merged into trunk and will be available for the users with the KDE 4.4 release in January 2010."
Comments (none posted)
The following new Xorg software has been announced this week:
More information can be found on the
X.Org Foundation wiki.
Comments (none posted)
Games
Version 2.1 of Albow has been announced, it adds some new capabilities.
"
Albow is a library for creating GUIs using PyGame that I have been
developing over the course of several PyWeek competitions. I am documenting
and releasing it as a separate package so that others may benefit from it,
and so that it will be permissible for use in future PyGame entries."
Full Story (comments: none)
Graphics
Version 0.47pre3 of the
Inkscape
vector graphics editor has been announced.
"
The presumably last prerelease of 0.47 is out. Please fetch the files, test and let us know about bugs you run into. Date of final version's release is currently estimated as two weeks away from now."
Comments (none posted)
GUI Packages
Version 1.1.10 rc2 of FLTK has been
announced.
"
1.1.10 *will* be the last 1.1 release. After releasing the 1.1.10 final version, no more STDs against 1.1 will be possible. I will not reopen 1.1. There will be no 1.1.11. Nope. None. Nix."
Comments (none posted)
Version 4.6 of PyQt has been announced.
"
The highlights of this release include:
- alternate, more Pythonic, APIs have been implemented for QDate,
QDateTime, QString, QTextStream, QTime, QUrl and QVariant. Applications
may select a particular API. By default Python v3 uses the new versions
and Python v2 uses the old versions.
- Qt properties can be initialised, and signals connected using keyword
arguments passed when creating an instance. Properties and signals can
also be set using the QObject.pyqtConfigure() method."
Full Story (comments: none)
Interoperability
Version 1.1.30 of Wine has been
announced. Changes include:
"
- Support for OpenAL.
- Many improvements in HTML and JavaScript support.
- Many common controls fixes and improvements.
- More Direct3D 10 work.
- Better MAPI support.
- Various bug fixes."
Comments (none posted)
Miscellaneous
Version 1.0 of agenda2pdf has been announced.
"
This is a simple script which generates a book agenda file in PDF
format, ready to be printed or loaded on an ebook reader.
You can choose among different sections. Each section have pdf links
to other parts of the agenda.
I've created it for using with my iLiad eBook reader."
Full Story (comments: none)
Languages and Tools
Caml
The September 29, 2009 edition of the Caml Weekly News
is out with new articles about the Caml language.
Full Story (comments: none)
Python
Version 0.16.0 of CodeInvestigator is out, it includes a number of bug
fixes.
"
CodeInvestigator is a tracing tool for Python programs.
Running a program through CodeInvestigator creates a recording.
Program flow, function calls, variable values and conditions are all
stored for every line the program executes.
The recording is then viewed with an interface consisting of the
code. The code can be clicked: A clicked variable displays its
value,
a clicked loop displays its iterations."
Full Story (comments: none)
Version 0.11.3 of Cython, a C extension language for Python,
has been announced.
"
We are happy to announce the release of Cython 0.11.3, which is the accumulation of numerous bugfixes and other
work since the beginning of the summer. Some new features include a
cython freeze utility that allows one to compile several modules into
a single executable (Mark Lodato) and the ability to enable profiling
Cython code with Python profilers using the new cython.profile
directive. We also had two successful summer of code projects, but
neither is quite ready to be merged in at this time. This will
probably be the last minor release before Cython 0.12."
Full Story (comments: none)
Version 0.6.2 of Distribute, a Python packaging system, has been announced.
"
This release is the first release that is compatible with Python 3,
kudos to Martin von Löwis, Lennart Regebro and
Alex Grönholm and the ones I am missing, on this work !"
Full Story (comments: none)
Version 2.5.1 of Jython, an implementation of Python in Java,
has been announced.
"
Jython 2.5.1 fixes a number of bugs, including some major errors when
using coroutines and when using relative imports, as well as a
potential data loss bug when writing to files in append mode."
Full Story (comments: none)
Version 1.0.5 of python-colormath has been announced.
"
An error in the CIE2000 Delta E equation has been found and corrected,
necessitating the immediate release of python-colormath 1.0.5. All
users of the 1.x series are encouraged to upgrade to avoid this
mathematical error."
Full Story (comments: none)
Version 1.5.1 of python-daemon has been announced.
"
Since version 1.4.8 the following significant improvements have been
made:
* Raise specific errors on failures from the library, distinguishing
different conditions better.
* Write the PID file using correct OS locking and permissions.
* Implement 'PIDLockFile' as subclass of 'lockfile.LinkFileLock'..."
Full Story (comments: none)
Version 1.0 of python-fedex has been announced.
"
This GPLv3 module is a very light
wrapper around the excellent suds SOAP module and FedEx's Web Services
WSDLs. The purpose of this module is to prepare the WSDL objects for
the user to populate and manipulate as needed, as well as handling
sending and light processing for common errors. python-fedex leaves
the user to read FedEx's documentation to understand all of the fields
exposed by python-fedex."
Full Story (comments: none)
Version 4.9 of SIP, a Python bindings generator, has been announced.
"
The main focus of this release is to allow alternate, incompatible
wrappings of classes and functions to be defined which can then be
selected by an application at runtime. This allows application developers
to manage the migration from an old, deprecated API to a new one."
Full Story (comments: none)
The September 26, 2009 edition of the Python-URL! is online with
a new collection of Python article links.
Full Story (comments: none)
Build Tools
Version 3.4.8 of ControlTier has been announced.
"
ControlTier is a cross-platform build and deployment framework and
toolkit. ControlTier coordinates service management activities across
multiple nodes and application tiers. It supplements and replaces
homegrown service management and deployment scripts with a
well-defined set of lifecycle commands that abstract the details of
various types of deployments."
Full Story (comments: none)
Libraries
Version 1.1.0 of mds-utils has been announced.
"
It's a C++ library composed by different utilities. Amongst its
features it contains classes to treat a FILE* as a C++ stream. It
contains also some utilities for developing C++ Python extensions."
Full Story (comments: none)
Page editor: Forrest Cook
Next page: Announcements>>