[tor-dev] 1st status report for OnioNS

OnioNS Dev kernelcorn at riseup.net
Thu Jun 4 18:04:18 UTC 2015

Hash: SHA256

For this first status update on my SoP project (the Onion Name System), I'd like to give a quick run-down of where the project currently is. I would consider OnioNS ahead of schedule as I made significant progress on it for the paper before the SoP program officially began. The following features are in place:

* A reliable Stem script that intercepts a .tor domain and sends it to the OnioNS client. It sets Tor to leave streams unattached, then auto-attaches non .tor streams, and rewrites .tor to .onion before attaching. Thank you arma!
* Reliable IPC communication over a localhost TCP socket between the Stem script and the OnioNS client. The IPC syntax is simple enough to support telnet or other tools.
* Ability to specify the IP of a name server (essentially a Mirror, but the name server isn't mirroring anything since the Synchronization protocol isn't there yet).
* JSON communication over a Tor circuit (SOCKS username "OnioNS") to a name server.
* The ability to verify the signature and proof-of-work of a Record.

* The capability to create and validate (through scrypt proof-of-work) a Record.
* Prompts to allow a user to specify the domain name and subdomain-destinations that they want for their hidden service.
* The printout in JSON of a Record, which one can copy and send over email or IRC until I get the upload protocols in place.

* JSON communication to make life easy.
* TCP server for receiving a .tor domain and returning a Record.
* Support for multiple Records.
* The ability to accept and cache a new Record.
* Construction of a Merkle tree and RSA-signing of the root.
* Ability to find a Record in the Merkle tree, or to find a subtree that proves a domain's non-existence.

* A hidden service for this project.
* Reliance on Botan rather than OpenSSL. The difference is night and day. Thank you Yawning!
* A Record for example.tor and several others for testing and illustrative purposes.
* Clean and organized code. The style is similar to Chromium with the exception that I put three spaces between each method. I enforce the style with clang-format.
* A basic but functional manpage.
* Support for Clang and GCC, with Clang being the preferred compiler for development and GCC is used when packaging.
* Packaging into a PPA on Launchpad for Ubuntu 14.04 and beyond, so "tor-onions" can be installed and updated through apt-get. I also support Debian 8+ but do not currently package for it.
* Packaging for x86, amd64, and armhf, so I'm supporting Pis/BBB/Odroid as well.
* Many labeled tickets on Github to improve workflow.
* Signed git tagging.

As you can imagine, this constitutes the bulk of the essential functionality. The remainder is primarily networking and server-side protocols, such as the Quorum, the Synchronization and Broadcast (upload) protocols, various algorithms, and so on. Those are next. I'm temporarily in a remote location and the Internet here is slow and quite spotty, so the project's hidden service is down and I haven't tested the latest commits over the network. However, once I have the Internet figured out I'll post a prototype here that everyone can test if they like. It's a centralized DNS at the moment, so spreading it out is next on the list.

- - Jesse V.

Version: GnuPG v2.0.22 (GNU/Linux)
Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/


More information about the tor-dev mailing list