On Tue, Dec 10, 2013 at 11:21:17AM +0000, Ben Laurie wrote:

> > Let's hope that support for DANE verification with OpenSSL will
> > encourage broader application support for DANE.  With a bit of
> > luck, someone from the OpenSSL team will volunteer to work with me
> > to integrate the code into the development tree.
> 
> I'm willing to consider it.

Thanks.  Please drop me a note off list, I'd like to find some
mutually convenient time to chat about the design over a voice
Google hangout.  If you want to look at the code first:

        https://github.com/vdukhovni/ssl_dane

The work-flow is basically:

        SSL_library_init()
        SSL_dane_library_init()
        SSL_CTX_new()
        SSL_CTX_dane_init()     /* DANE connections get a dedicated context */
        SSL_new()
        SSL_dane_init()         /* allocate dane state, set SNI, ... */
        SSL_dane_add_tlsa()     /* Once per record */
        SSL_connect()           /* off to the races... */
        SSL_get_verify_result() /* Learn the outcome */
        SSL_dane_cleanup()      /* Dispose of DANE state */

You can see this at work in ssl_dane_test.c.  It verifies
imap.gmail.com, with all the various usages, selectors, digests
and relevant certificate depths (and out-of-band TLSA records
constructed by pointing the code at a PEM file).

> But I'm still concerned that without something
> akin to CT, DANE is more dangerous than the existing PKI.

[ There is (for various reasons described in the draft) in practice
no *existing PKI* for SMTP, so there is at least one use case where
we're comparing DANE to *nothing* rather than DANE to existing PKI. ]

In any case, the question of the relative merits of DANE in any
particular use-case is rather orthogonal to implementation of the
requisite library support.  The decision to use or not use DANE
will happen above the library layer.  I should note that my code
does not enable DANE by default for any connections, it does not
even do any DNS lookups.  Rather, I provide an API for the application
to explicitly turn on DANE support for a given connection by providing
appropriate parameters (including any TLSA RRs the application
obtained by other means).

> > This took just over 1200 lines of commented code.  It should work
> > with OpenSSL 0.9.8 or newer.  A very recent insight made it possible
> > to remove the need for signing operations and generation of internal
> > private keys in the verifier, so it is now about as simple as it
> > can get.
> >
> 
> 0.9.8 is closed to new functionality, as are some of the more recent
> branches.

I am not changing any existing OpenSSL code, my work is essentially
an add-on library, though tighter integration would be appropriate
in the future and would allow me to simplify the DANE side.

-- 
        Viktor.
_______________________________________________
dane mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/dane

Reply via email to