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