The --use-tor option
Werner Koch
wk at gnupg.org
Mon Oct 19 15:03:35 CEST 2015
Hi!
I implemented a --use-tor option for dirmngr which routes all traffic
over TOR. This should be HTTP based CRLs (not tested), keyserver access
and all non-LDAP --fetch-key URLs. If traffic can't be torified the
command will fail.
This is not complete because DNS lookups are leaking. This could be
fixed for some commands (like gpg --fetch-key URL) but that would be a
specialized solution. The more problematic areas are resolving of the
keyserver pools and retrieving of CERT and DANE records. Thus I did not
implemented the specialized case for --fetch-key.
Given that it is not likely that we will seen generic DNS support in TOR
soon, we need to find our own solution. Using a public server via TCP
is probably the only thing we can do. This requires two thing:
- Being able to specify a public DNS server independent of
/etc/resolv.conf.
- Forcing the use of a virtual circuit (ie. TCP) so that TOR can route
the request.
With the standard resolver this is not possible. Adding a full-fledged
resolver library to Dirmngr is overkill and we will likely run into
problems under Windows. My idea is to make use of the ADNS library. A
quick check showed that it is not too much work to add SOCKS5 support
(to access TOR) and a flag to enable this.
Now, for Windows we are making use of ADNS for a long time now. In 2008
I ported ADNS to Windows and updated the build system to make use of
autotools [1].
Unfortunately back then the ADNS author did not liked the use of
autotools and was not genuinely interested in Windows support. Thus I
maintain my port under the name libadns-1.4-g10-N but use it with GnuPG
only on Windows. Adding the TOR support would be easy for me but that
would be a Windows only solution to avoid a real fork. Possible
solutions are:
- Add the required parts of ADNS to GnuPG proper. That would actually
be the easiest way but it has similar problems as static linking.
- Rename my port and keep it separate from ADNS.
- Check with upstream ADNS whether adding SOCKS5 support and a TOR flag
would be accepted, develop that, and keep keep the APIs of my
(Windows) port and upstream in sync.
Suggestions?
Salam-Shalom,
Werner
[1] http://git.gnupg.org/cgi-bin/gitweb.cgi?p=adns.git
--
Die Gedanken sind frei. Ausnahmen regelt ein Bundesgesetz.
More information about the Gnupg-devel
mailing list