Hello,
I am a Computer Engineering student at the Federal Technological University of Parana in Brazil and I would like to present you a peer-to-peer privacy enhanced instant messenger called unMessage [0]. I have been working on it for a while with David Andersen [1] (my advisor) and we have recently released an alpha version which should be easy for developers to install and test.
It uses the Double Ratchet Algorithm [2] for encryption, Onion Services for transport metadata minimization, its own protocol for application metadata minimization, and as a result, provides private and anonymous conversations. It currently has basic features such as message exchange, user authentication and we very recently enabled voice chat using the Opus codec [3] for constant bitrate encoding. unMessage is a Python application that mainly uses pyaxo's [4] implementation of Double Ratchet Algorithm and txtorcon's [5] implementation of the Tor Control Protocol.
Since its current (alpha) release, we have been discussing it with Patrick Schleizer [6] and HulaHoop [7] from Whonix [8], who are making great contributions to help us test it, as well as suggesting new features and improvements. We are also working to run it on Whonix (which will also allow it to be run on Tails) with help from meejah [9] by adding a new feature to txtorcon to make unMessage (and all the apps that use txtorcon) "Control Port Filter friendly".
As we believe unMessage has potential to become a great privacy enhancing app with a code that is simple, readable and therefore easy to maintain, Patrick suggested that I submitted a proposal to have unMessage as one of the GSoC projects. We expect to implement fixes, improvements and features from our discussions in order to turn it into a maintainable, feature-rich and useful app which the community can benefit from.
There are currently some "developer centered" tasks I can work on such as:
- Create a test suite (with pytest) - Make unMessage's own functions/methods behave like a Twisted API should - Use automat for its finite-state machines - Make use of a logging tool - Improve comments/document the code
As well as some "user centered" tasks:
- Whonix/Tails support - Improve the GUI and CLI - File transfer - Use a friendlier approach for users to handle keys instead of the current base32/64 encodings - Connect/launch Tor automatically depending on what is available - Offline messages
(All the other ones can be found in the issue tracker [10])
My intention with this post is not only to present unMessage to tor-dev but also see if someone is interested in mentoring me as it is not one of the official ideas but hopefully sounds like a good project. If someone gets interested, please let me know so that we can discuss which tasks would be interesting for this project and I am able to write a proposal.
Thanks! -Felipe
[0]: https://github.com/AnemoneLabs/unmessage [1]: https://github.com/rxcomm [2]: https://whispersystems.org/docs/specifications/doubleratchet [3]: https://opus-codec.org [4]: https://github.com/anemonelabs/pyaxo [5]: https://github.com/meejah/txtorcon [6]: https://github.com/adrelanos [7]: https://github.com/HulaHoopWhonix [8]: https://whonix.org [9]: https://github.com/meejah [10]: https://github.com/AnemoneLabs/unmessage/issues