[TLS] Analysis of Interop scenarios TLS extension RI w/MCSV
Martin Rex <mrex@sap.com> Wed, 09 December 2009 20:21 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 596873A6846 for <tls@core3.amsl.com>; Wed, 9 Dec 2009 12:21:14 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -6.192
X-Spam-Level:
X-Spam-Status: No, score=-6.192 tagged_above=-999 required=5 tests=[AWL=0.057, 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 ttxkMMEM+zPB for <tls@core3.amsl.com>; Wed, 9 Dec 2009 12:21:10 -0800 (PST)
Received: from smtpde03.sap-ag.de (smtpde03.sap-ag.de [155.56.68.140]) by core3.amsl.com (Postfix) with ESMTP id EEA913A68DF for <tls@ietf.org>; Wed, 9 Dec 2009 12:21:09 -0800 (PST)
Received: from mail.sap.corp by smtpde03.sap-ag.de (26) with ESMTP id nB9KKvlk013248 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO) for <tls@ietf.org>; Wed, 9 Dec 2009 21:20:57 +0100 (MET)
From: Martin Rex <mrex@sap.com>
Message-Id: <200912092020.nB9KKu39003981@fs4113.wdf.sap.corp>
To: tls@ietf.org
Date: Wed, 09 Dec 2009 21:20:56 +0100
MIME-Version: 1.0
Content-Type: text/plain; charset="ISO-8859-1"
Content-Transfer-Encoding: 8bit
X-Scanner: Virus Scanner virwal05
X-SAP: out
Subject: [TLS] Analysis of Interop scenarios TLS extension RI w/MCSV
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: Wed, 09 Dec 2009 20:21:14 -0000
Here is my analysis of the requirements and implementation efforts
for TLS extension RI with magic cipher suites value (MCSV), based on my
recent experiences from implementing draft-mrex-tls-secure-renegotiation-03
in OpenSSL-0.9.8l and looking at the early implementation of draft-rescorla
in the OpenSSL-0.9.8-snapshot.
The purpose of the MCSV is:
- provide interop with installed base of old, extensions-intolerant
servers (original&correct SSLv3 and "defective" TLSv1.0)
- provide protection from downgrade attacks
(extension-less ClientHello or SSLv2 ClientHello)
- provide protection in backwards interop scenarios
(renegotiation requested by old servers).
in order to reliably provide this,
- MCSV is defined to represent an empty TLS extension RI
- MSCV MUST be included in *ALL* initial ClientHello handshakes
messages _plus_ all renegotiation ClientHellos in backwards
interop scenarios (independent of full handshake or session resume).
- empty TLS extension RI MUST NOT be sent, ever!
- TLS extension RI with Client.Finished.verify_data in ClientHello
- MUST NOT be sent on renegotiation handshakes in backward
interop scenarios with old servers which could otherwise break
- MUST be sent in all other renegotiations
If the spec would require that an empty TLS extension RI in a
ClientHello MUST be completely ignored, then _everyone_ can save 5-10 LoC.
There is a significant difference between extensions-tolerant and
extensions-support. Extensions tolerant means, that a server
will not choke on a ClientHello handshake message, but instead
simply ignore all data following compression methods compliant
to the provision in the updated-but-never-published SSLv3,
TLSv1.0 and TLSv1.1 specs.
In order to implement secure renegotiation with TLS extension RI
a "generic" TLS extensions parser (~150 LoC) is necessary to
find the TLS extension RI among other extensions, process it
and create and process the TLS extension RI reply. Support
for other TLS extensions and API-level access to TLS extensions
is completely out-of-scope for the following.
Adding MCSV to ClientHello on the client and parsing MCSV from
the ClientHello on the server will typically be <10 LoC each.
Creating an processing an empty TLS extension RI on the ServerHello
is also typically <10 LoC each for extension-less implementations.
Types of TLS peers in the current installed base:
1.) old TLS client, no extensions, no renegotiation
2.) old TLS client, no extensions, renegotiation
3.) old TLS client, extensions, no renegotiation
4.) old TLS client, extensions, renegotiation
5.) old TLS server, extensions-intolerant, no renegotiation
6.) old TLS server, extensions-intolerant, renegotiation
7.) old TLS server, no extensions, no renegotiation
8.) old TLS server, no extensions, renegotiation
9.) old TLS server, extensions, no renegotiation
10.) old TLS server, extensions, renegotiation
The server patches that are currently applied in the field are
(6) -> (5)
(8) -> (7)
(10) -> (9)
Additional types of TLS peers when TLS extension RI is implemented:
11.) updated TLS client, RI-minimal, no renegotiation
12.) updated TLS client, RI-only, renegotiation
13.) updated TLS client, extensions, no renegotiation
14.) updated TLS client, extensions, renegotiation
15.) updated TLS server, RI-minimal, no renegotiation
16.) updated TLS server, RI-only, renegotiation
17.) updated TLS server, extensions, no renegotiation
18.) updated TLS server, extensions, renegotiation
Effect of requiring MCSV on implementation effort
-- for non-renegotiating servers:
If we require MSCV on _every_ ClientHello
then the update (5),(6),(7),(8) -> (15) amounts to ~20 LoC
the update (9),(10) -> (17) amounts to ~40 LoC
If we do not require MCSV on _every_ ClientHello
then the update (5),(6),(7),(8) -> (15) amounts to ~80 LoC
the update (9),(10) -> (17) amounts to ~60 LoC
Effect of requiring MCSV on implementation effort
-- for non-renegotiating clients:
If we require MCSV on _every_ ClientHello,
then the update (1),(2) -> (11) amounts to ~20 LoC
(3) -> (13) amounts to ~40 LoC
If we do not require MCSV on _every_ ClientHello,
then the update (1),(2) -> (11) amounts to ~80 LoC
(3) -> (13) amounts to ~60 LoC
guestimates about secure rengotiation efforts:
Servers: these are independent of whether MCSV is required
(10) -> (18) maybe ~180 LoC
(6),(8) -> (16) maybe ~200 LoC
(6),(8) -> (18) maybe ~250 LoC
Clients: these are independend of whether MCSV is required.
(4) -> (14) maybe ~180 LoC
(2) -> (12) maybe ~200 LoC
(2) -> (14) maybe ~250 LoC
-Martin
- [TLS] Analysis of Interop scenarios TLS extension… Martin Rex
- Re: [TLS] Analysis of Interop scenarios TLS exten… Marsh Ray
- Re: [TLS] Analysis of Interop scenarios TLS exten… Martin Rex
- Re: [TLS] Analysis of Interop scenarios TLS exten… Martin Rex
- Re: [TLS] Analysis of Interop scenarios TLS exten… Michael Gray
- Re: [TLS] Analysis of Interop scenarios TLS exten… Marsh Ray
- Re: [TLS] Analysis of Interop scenarios TLS exten… Dieter Bratko
- Re: [TLS] Analysis of Interop scenarios TLS exten… Martin Rex
- Re: [TLS] Analysis of Interop scenarios TLS exten… Marsh Ray
- Re: [TLS] Analysis of Interop scenarios TLS exten… Martin Rex
- Re: [TLS] Analysis of Interop scenarios TLS exten… Martin Rex
- Re: [TLS] Analysis of Interop scenarios TLS exten… Nelson B Bolyard
- Re: [TLS] Analysis of Interop scenarios TLS exten… Nelson B Bolyard
- Re: [TLS] Analysis of Interop scenarios TLS exten… Martin Rex
- Re: [TLS] Analysis of Interop scenarios TLS exten… Nelson B Bolyard
- Re: [TLS] Analysis of Interop scenarios TLS exten… David-Sarah Hopwood
- Re: [TLS] Analysis of Interop scenarios TLS exten… Michael Gray
- Re: [TLS] Analysis of Interop scenarios TLS exten… Martin Rex
- Re: [TLS] Analysis of Interop scenarios TLS exten… Martin Rex
- Re: [TLS] Analysis of Interop scenarios TLS exten… Marsh Ray
- Re: [TLS] Analysis of Interop scenarios TLS exten… Martin Rex
- Re: [TLS] Analysis of Interop scenarios TLS exten… David-Sarah Hopwood
- Re: [TLS] Analysis of Interop scenarios TLS exten… tom.petch
- Re: [TLS] Analysis of Interop scenarios TLS exten… Nelson B Bolyard
- Re: [TLS] Analysis of Interop scenarios TLS exten… Martin Rex
- Re: [TLS] Analysis of Interop scenarios TLS exten… Nelson B Bolyard
- Re: [TLS] Analysis of Interop scenarios TLS exten… Steve Checkoway
- [TLS] Black hole was Re: Analysis of Interop scen… tom.petch
- Re: [TLS] Analysis of Interop scenarios TLS exten… Michael Gray
- Re: [TLS] Analysis of Interop scenarios TLS exten… David-Sarah Hopwood
- Re: [TLS] Analysis of Interop scenarios TLS exten… Michael Gray
- Re: [TLS] Analysis of Interop scenarios TLS exten… Pasi.Eronen
- Re: [TLS] Black hole was Re: Analysis of Interop … Martin Rex
- Re: [TLS] Black hole was Re: Analysis of Interop … Pasi.Eronen
- Re: [TLS] Black hole was Re: Analysis of Interop … Martin Rex
- Re: [TLS] Black hole was Re: Analysis of Interop … Bill Frantz
- Re: [TLS] Analysis of Interop scenarios TLS exten… Martin Rex
- Re: [TLS] Analysis of Interop scenarios TLS exten… Marsh Ray