[Openswan dev] Opportunistic Encryption thought over - x509 certificates vs DNS TXT records

Marcus Blomenkamp mblomenk at gmx.de
Thu Apr 15 14:49:05 CEST 2004


Hi all,

First of all this is not meant be be a rant. I really appreciate the work you 
put on {Free,Open}SWAN on a daily basis. However i have serious difficulties 
getting the idea behind your choice of utilizing DNS records as a public key 
infrastructure, both from a security and a manageability point of view. 
Therefore i want to put focus on an alternative approach for which i welcome 
any kind of reaction.

The current design of OE leads me to the assumption of the only objective 
being to use IPSec at all - and not making OpenSWAN the solution to problems 
people usually want to solve with IPSec. Thus people avoid the complexity of 
setting up OE infrastructure, with the actual outcome of not widespread use 
of OE. See recent history - i think you all know what i am referring to.

Obstacles observed on deploying DNS-based OE:

Retrieving plain RSA signatures from DNS allow us to generate an ISAKMP SA, 
however we still no not know who we are communicating with. In a usual setup 
we cannot trust the DNS server thus opening up the possibility of spoofing 
attacks.

If we want to trust the DNS server there are two options - IPSec and DNSSEC. 
The former one implies kind of chicken-egg problem or manual work on each 
machine at least - plus requiring the DNS server to run IPSec too, but what 
if you are not the in the appropriate administrative position to dictate 
this?
DNSSEC on the other hand - i must admit that i've not digged into that deeply 
- is nowhere better. There are at least two components you have to twiggle to 
get a basic working setup, authoritative DNS server and client-side resolver. 
With respect to DNSSEC capabilities the great diversity of available DNS 
servers (open-source, closed-source, commercial, whatever) reduces to a 
compact number of two, BIND9 and NSD2. Neither have i run any of them, nor i 
intend to. NSD2 is known to insiders only and BIND has a history of its own 
when it comes to security considerations. Nevertheless if one would like to 
use DNSSEC servers, lack of administrative power might cross these plans too. 
Additionally one has to implant an DNSSEC resolver library into his system. 
To my knowledge glibc does not provide that. Best wishes to anyone crossing 
this software minefield.

Furthermore obstacles in Joe Sixpack's real-world setup:

Joe has a wireless LAN with several machines running GNU/Linux. Naturally he 
wants them to communicate privately. However he has the IP addresses assigned 
dynamically by a DHCP server. A static map of IP==RSASIG as it might be 
configured on his trusted DNS server will bite on that scenario. To work 
around this he configures his DNS server to accept dynamic changes aka DDNS. 
To prevent one (possibly compromised) machine from subverting all DNS entries 
Joe has to generate a separate shared-secret for each machine==DNS-entry 
item. So in addition to his previously created RSA key pairs he creates yet 
another key infrastructure. The resulting phenomenon is redundancy and 
usually considered bad design.

Did i miss anything which might simplify the utilization of DNS records for 
Opportunistic Encryption? If not, then the only conclusion i can draw is to 
throw it overboard and head for something better.

The approach more suitable is already implemented in - sorry to all OS zealots 
- Windows2k. Machines are simply equipped with their respective certs and 
cacerts and can automagically build up an ISAKMP-SA to another machine if 
both have their certs signed by the same CA. No dependencies on additional 
infrastructure. It just plain works. Did i overlook something vital and thus 
made a total fool of myself? If so then i apologize.

I haven't looked at OpenSWAN's code that much until now, but is this doable 
with the current design of pluto and kernel? Could one reuse the same hooks 
currently used by OE to trigger signature retrieval from DNS?

I do have real interest in bringing this to production quality. Am i the only 
one longing for this feature? I don't think i could stem this up all by 
myself.

sincerely yours, Marcus



More information about the Dev mailing list