[tor-dev] Attentive Otter: Analysis of xmpp-client

Jurre van Bergen jurre at useotrproject.org
Mon Oct 7 17:21:42 UTC 2013

Hash: SHA1


Below you can find the analysis of xmpp-client for the Attentive otter
project, written by dgoulet, nickm, arlo, asn and myself.

All the best,

- --------


xmpp-client is a simple XMPP client written in pure Go with OTRv2
support. It's a terminal program but doesn't have a GUI or a UI like
GTK  or ncurses. The software should be considered in an alpha state.

*Is traffic send over Tor?*
Yes, xmpp-client has support for sending all traffic over Tor, this 
includes connecting to onion's. When you connect to jabber.ccc.de or the
riseup.net jabber service, you are automatically connected over Tor
through their onion address (hidden service), if Tor is running. SRC
lookups are not proxied.

*Chat network(s) support*
Only basic XMPP support, no extensions are implemented (XEP -

*How trivial is extending XMPP-Client to different protocols?*
This code base is only for XMPP and seems quite hardcoded for that.
Section "Instant Messaging" -

* XMPP in Go - https://github.com/mattn/go-xmpp
* IRC in Go - https://github.com/husio/go-irc

* Various Go bindings - http://go-lang.cat-v.org/library-bindings

OTR support comes from the Go crypto package:
This library only has support for OTRv2 and not the latest OTRv3 
specification. If we want to be resistant to several attacks[1]  on the
OTR protocol, we need to reimplement the OTR protocol and update it to
the latest version or, we use Cgo, which binds into libotr. (Open
questions: OTR by default?, )


*What languages are supported?*
Currently, there is only support for English, extending the client  with
other languages is rather trivial like Farsi, French, Spanish and  Arabic.

*_Graphical interface_*

A graphical interface needs to be implemented for the client. However,
there is only a limited amount of graphical interfaces available, all
are far from stable to use. The best bet for now is Go-GTKand extend it
and let fixes go upstream. Another thing we could  do is implement or
extend an existing minimal implementation of a QT library. This means
however, that we would need to maintain an extra "third party" UI
library, which isn't Tor's core "business".

* QT: https://github.com/visualfc/go-ui
* GTK: http://mattn.github.io/go-gtk/
* Webkit: https://github.com/mattn/go-webkit

*_Operating System Support_*

* MSI package support - http://golang.org/doc/install#windows

*Mac OS X*
* Package exists for Go - http://golang.org/doc/install#osx

Packaged in most distributions.

*_Build & build automation_*

Go compiles into a static binary. Next to that, Go has the possibility
to build cross-platform binaries.

*Deterministic builds*
Some hacking needs to be involved and having a deterministic binary for
Go might prove more difficult. I'm unsure whether this is going to  be
easily implemented (more research needed)

*Browser extention*
Of what I can understand with Xullauncher, we can start any type of
applications shipped in the "TBB sandbox" in a specific path. With
xmpp-client, it would require a Go version that is shipped with the TBB
and every other library we use (i.e. crypto.otr). (Not 100% sure
here...). A fat binary is an option here also (Go + otr + xmpp-client).

*Control mechanism*
A control mechanism needs to be implemented so xmpp-client can interact
with Firefox in some way or the other.


*Building with hardenend compiler flags*
Hardening is possible by using gccgo, which is a frontend to the GCC gnu

  * http://golang.org/doc/install/gccgo

* There is an existing AppArmor profile for xmpp-client for Ubuntu 11.04+
* There isn't a Seatbelt OSX sandbox profile.
* There isn't a way to sandbox in windows.

- -- 
Developer at https://www.useotrproject.org/
Version: GnuPG v1.4.12 (GNU/Linux)


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.torproject.org/pipermail/tor-dev/attachments/20131007/04eab199/attachment.html>

More information about the tor-dev mailing list