On Mon, Sep 24, 2007 at 03:01:56PM -0700, David Schwartz wrote:

> 
> > SSL works just fine to prevent MITM with self-signed certs, provided
> > the client has prior knowledge of the self-signed cert.
> 
> Right, but what if they don't?

Create a key management system that makes it so, or deploy a private-label
CA (which is still key management, except that you sweep revocation
under the rug, and pretend it is not a problem, or public revocation
lists, by which point it is often easier to publish a list of valid
unrevoked certs as an online service, but I digress).

> > I strongly disagree. How does the client this "separate detection"
> > step to the protocol handshake.
> 
> Once the SSL handshake finishes, the client software enters a "ready for
> secondary authentication" phase. In this phase, secure data is not
> exchanged, but the secondary authentication can proceed.

Not likely to be MITM-proof, without brilliant programmers and infallible
programmers doing the work.

> The server and client then exchange challenges and responses. The responses
> are signed with a key the client can verify and include the SSL "finshed"
> messages, which a MITM cannot tamper with or control.

An MITM generates a new SSL session with each side, so there is a
perfectly evil SSL finish message in hand, the trick is to now securely
mix this into a protocol handshake that involves some other kind of server
credential, but this is difficult. Note if the process does not end up
authenticating the server, MITM resistance is impossible. If the server
can be authenticated, why not via its cert rather than some additional,
equally difficult to manage credential?

Instead of throwing away TLS and rolling your own, I would consider PSK
(still in development) or any other approach that builds on security
features of SSL, rather than inventing a second authentication protocol
and trying to tie it into the SSL handshake.

> Once each side verifies the other side's response to its challenge and sees
> that the 'finished' values match, both the server and client can enter a
> normal data transfer state.

It is not as simple as you describe.

> > Why ask users to invent very difficult
> > to get right security protocols?
> 
> If you mean end users, they just use the software.

No, toolkit users (programmers).

> If you mean users of the OpenSSL library, the problem is that the standard
> SSL security model doesn't fit every application. In that case, you have to
> do some of your own security work.

This is where I strongly disagree. I have met very people who I would trust
to design a security protocol (I am not one of the ones I would trust).

> > No, self-signed certs don't defeat MITM detection, they defeat the
> > X.509 PKI trust model for server authentication, so authentication of
> > the server cert needs to use a different trust model.
> 
> Whatever you want to call it. The point is, if the client can't validate the
> self-signed cert, you need some other way to make sure the server and client
> have opposite ends of the *same* SSL connection, rather than ends of two SSL
> connections to a MITM. A simple way to do this is to compare each sides
> 'finished' with the other side's 'peer finished'.

No, the challenge is key management. TLS is just fine. If CAs don't solve
key management for you, roll your own key management, but use existing
protocols.

I would like to see GSSAPI support in TLS (so would Microsoft and a
few others). This addresses key management, without requiring secondary
protocols, and ties into the dominant standard intra-mural authentication
system. This would use a certificate-less cipher-suite, but the point
remains that authentication should be within TLS, not an add-on.

Over and out.

-- 
        Viktor.
______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
User Support Mailing List                    openssl-users@openssl.org
Automated List Manager                           [EMAIL PROTECTED]

Reply via email to