Hi Rainer,

A TLS alert could be sent by the server indicating the error condition.
Would this help? 

Joe

> -----Original Message-----
> From: Rainer Gerhards [mailto:[EMAIL PROTECTED] 
> Sent: Sunday, May 25, 2008 11:46 PM
> To: Joseph Salowey (jsalowey); [email protected]
> Subject: RE: [Syslog] Fingerprint/handshake
> 
> Hi Joe,
> 
> inline
> 
> > -----Original Message-----
> > From: Joseph Salowey (jsalowey) [mailto:[EMAIL PROTECTED]
> > Sent: Friday, May 23, 2008 8:21 PM
> > To: Rainer Gerhards; [email protected]
> > Subject: RE: [Syslog] Fingerprint/handshake
> > 
> > The fingerprint check should be done where certificate validation
> would
> > be done.  This is typically done within the handshake itself,
> 
> I agree to this, but have found this to be problematic with 
> some TLS libraries. Of course, that doesn't mean the standard 
> needs to change, but I would still like to provide some 
> implementation feedback.
> 
> With GnuTLS, for example, you can do the final authentication 
> only after the handshake [1]. With NSS, it can be done during 
> the handshake. As of my understanding, OpenSSL does support 
> it after the handshake only (but I have not actually used 
> OpenSSL, this is based on my understanding after reading 
> doc). This brings me to the conclusion that, at least in some 
> environments I may be forced to delay the authentication 
> check to after the handshake.
> 
[Joe] Its been a while since I used OpenSSL, but if I remember correctly
they do have hooks in the certificate validation code. 

> > because if
> > the validation fails you do not want to send or receive data on the 
> > connection.  I suppose you could implement the check after the 
> > handshake, but you need to make sure you do not send or receive 
> > application before successful validation has occurred.
> 
> This is where it gets really problematic. We get into a race 
> condition here. Remember that syslog is simplex and works 
> without any app-level acks (in -transport-tls).
> 
> If the client authenticates the server, everything is fine.
> Authentication fails, client never sends data and the session 
> is terminated. Everything is fine.
> 
> But if the server authenticates the client (and 
> authentication fails), the client will still receive the 
> server's TLS Finished message. After that, the server drop 
> connection. HOWEVER, the client blindly sending data doesn't 
> know this until at least the second message sent (due to 
> local buffering at the client). *After* some messages, the 
> client gets a connection broken indication, but at this point 
> it is too late to react intelligently. In essence, those 
> messages sent after the initial handshake are lost. Even 
> worse, the client "gets the impression" that the remote 
> server is accepting its connection requests. This is because 
> there is no failure indication after the handshake. This can 
> lead to more frequent retries.
> 
> This problem is rooted in the underlying plain tcp transport. 
> I have described it in [2]. It's inherent to all plain tcp 
> syslog implementations. RFC3195 is a cure for it. With TLS 
> auth, it just gets to a new magnitude as it will now happen 
> every time during a failed authentication.
> 
> This is not a theoretic issue but one I can reliable 
> reproduce in my lab with actual software. Actually, I am 
> unable to NOT reproduce it - there is no work-around for this 
> problem (at least I have found none).
> 
> Again, I am not trying to say we need to change anything. I 
> am providing real world feedback. It may be worth, however, 
> adding a note or two to the I-D describing these issues.
> 
> Rainer
> 
> [1] 
> http://lists.gnu.org/archive/html/help-gnutls/2008-05/msg00017.html
> (full conversation, long)
> [2]
> http://blog.gerhards.net/2008/04/on-unreliability-of-plain-tcp
> -syslog.ht
> ml
> 
> 
_______________________________________________
Syslog mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/syslog

Reply via email to