[TLS] OpenSSL 0.9.8l diffs for draft-mrex-tls-secure-renegotiation-03

Martin Rex <mrex@sap.com> Mon, 07 December 2009 23:15 UTC

Return-Path: <mrex@sap.com>
X-Original-To: tls@core3.amsl.com
Delivered-To: tls@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id 1255F3A6957 for <tls@core3.amsl.com>; Mon, 7 Dec 2009 15:15:48 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -6.191
X-Spam-Level:
X-Spam-Status: No, score=-6.191 tagged_above=-999 required=5 tests=[AWL=0.058, BAYES_00=-2.599, HELO_EQ_DE=0.35, RCVD_IN_DNSWL_MED=-4]
Received: from mail.ietf.org ([64.170.98.32]) by localhost (core3.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id AR9mU-Yvicmi for <tls@core3.amsl.com>; Mon, 7 Dec 2009 15:15:47 -0800 (PST)
Received: from smtpde03.sap-ag.de (smtpde03.sap-ag.de [155.56.68.140]) by core3.amsl.com (Postfix) with ESMTP id 8E2813A69CD for <tls@ietf.org>; Mon, 7 Dec 2009 15:15:46 -0800 (PST)
Received: from mail.sap.corp by smtpde03.sap-ag.de (26) with ESMTP id nB7NFYaw003370 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO) for <tls@ietf.org>; Tue, 8 Dec 2009 00:15:35 +0100 (MET)
From: Martin Rex <mrex@sap.com>
Message-Id: <200912072315.nB7NFTqS017397@fs4113.wdf.sap.corp>
To: tls@ietf.org
Date: Tue, 08 Dec 2009 00:15:29 +0100
MIME-Version: 1.0
Content-Type: text/plain; charset="ISO-8859-1"
Content-Transfer-Encoding: 8bit
X-Scanner: Virus Scanner virwal06
X-SAP: out
Subject: [TLS] OpenSSL 0.9.8l diffs for draft-mrex-tls-secure-renegotiation-03
X-BeenThere: tls@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
Reply-To: mrex@sap.com
List-Id: "This is the mailing list for the Transport Layer Security working group of the IETF." <tls.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/tls>, <mailto:tls-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/tls>
List-Post: <mailto:tls@ietf.org>
List-Help: <mailto:tls-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/tls>, <mailto:tls-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 07 Dec 2009 23:15:48 -0000

Dear TLS,

Here is an implementation of draft-mrex-tls-secure-renegotiation-03:

ftp://ftp.sap.com/pub/ietf-work/tls/

ftp://ftp.sap.com/pub/ietf-work/tls/OpenSSL-0.9.8l-draft-mrex-tls-secure-renegotiation-03-20091207.diff
ftp://ftp.sap.com/pub/ietf-work/tls/OpenSSL-0.9.8l-draft-mrex-tls-secure-renegotiation-03-20091207.zip

It is a diff to OpenSSL-0.9.8l.

It should work for SSLv2-BC ClientHello, SSLv3 and TLS


Implementation notes:
 - it includes fallback for OpenSSL when compiled without TLS Extensions
 - It appears to work for DTLS as well, but I admit to have not yet
   understood how that works exactly.
 - for enabling renegotiation with old peers,
   I copied SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION from newer snapshot
   and removed that bit from SSL_OP_ALL
   since all OP-Bits are gone, the app must provide different OP-values
   for Server and Client SSL_CTX in order to distinguish client/server


I'm having slight troubles with OpenSSL's "s_client" and "s_server"
applications.

It appears that there is insufficient return-code chechking
for the SSL_renegotiate() calls in several places of OpenSSL.

- SSL_renegotiate() might need to reset "new_session" when the
  called renegotiation method fails (rc=0)

- both s_server and s_client call SSL_renegotiate(),
  but do _not_ check the return codes and write confusing/incorrect
  messages to the screen (in particular for 0.9.8l where renegotiation
  has been disabled by default).

- Since SSL_do_handshake() seems to always return "1", independent
  of whether renegotiation is performed or the request rejected,
  the output of "SSL_do_handshake()=1 by s_server is confusing.


-Martin