[tor-dev] Attentive Otter: Analysis of xmpp-client
Jurre van Bergen
jurre at useotrproject.org
Mon Oct 7 17:21:42 UTC 2013
-----BEGIN PGP SIGNED MESSAGE-----
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 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.
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.
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)
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).
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
* 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/
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.12 (GNU/Linux)
-----END PGP SIGNATURE-----
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the tor-dev