Re: [xmpp] #39: prohibition on TLS renegotiation

Simon Josefsson <simon@josefsson.org> Sun, 04 July 2010 12:44 UTC

Return-Path: <simon@josefsson.org>
X-Original-To: xmpp@core3.amsl.com
Delivered-To: xmpp@core3.amsl.com
Received: from localhost (localhost [127.0.0.1]) by core3.amsl.com (Postfix) with ESMTP id B42193A67FA for <xmpp@core3.amsl.com>; Sun, 4 Jul 2010 05:44:58 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.456
X-Spam-Level:
X-Spam-Status: No, score=-1.456 tagged_above=-999 required=5 tests=[AWL=-1.457, BAYES_50=0.001]
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 URzY5o2+0L8l for <xmpp@core3.amsl.com>; Sun, 4 Jul 2010 05:44:57 -0700 (PDT)
Received: from yxa-v.extundo.com (yxa-v.extundo.com [83.241.177.39]) by core3.amsl.com (Postfix) with ESMTP id 78C533A65A6 for <xmpp@ietf.org>; Sun, 4 Jul 2010 05:44:57 -0700 (PDT)
Received: from mocca (c80-216-27-64.bredband.comhem.se [80.216.27.64]) (authenticated bits=0) by yxa-v.extundo.com (8.14.3/8.14.3/Debian-5+lenny1) with ESMTP id o64CiorZ010738 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NOT); Sun, 4 Jul 2010 14:44:52 +0200
From: Simon Josefsson <simon@josefsson.org>
To: Peter Saint-Andre <stpeter@stpeter.im>
References: <057.cd3487385f077266653b25eecf323b0d@tools.ietf.org> <4C27CFDC.4060701@stpeter.im>
OpenPGP: id=B565716F; url=http://josefsson.org/key.txt
X-Hashcash: 1:22:100704:stpeter@stpeter.im::r+lBGL8EM0+zKgnP:Vu1
X-Hashcash: 1:22:100704:xmpp@ietf.org::Tvy/BpAnZ/wDX9H9:mQp1
Date: Sun, 04 Jul 2010 14:44:49 +0200
In-Reply-To: <4C27CFDC.4060701@stpeter.im> (Peter Saint-Andre's message of "Sun, 27 Jun 2010 16:25:32 -0600")
Message-ID: <87lj9re7r2.fsf@mocca.josefsson.org>
User-Agent: Gnus/5.110011 (No Gnus v0.11) Emacs/23.1 (gnu/linux)
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 8bit
X-Virus-Scanned: clamav-milter 0.96.1 at yxa-v
X-Virus-Status: Clean
Cc: xmpp@ietf.org
Subject: Re: [xmpp] #39: prohibition on TLS renegotiation
X-BeenThere: xmpp@ietf.org
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: XMPP Working Group <xmpp.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/listinfo/xmpp>, <mailto:xmpp-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/xmpp>
List-Post: <mailto:xmpp@ietf.org>
List-Help: <mailto:xmpp-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/xmpp>, <mailto:xmpp-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sun, 04 Jul 2010 12:44:58 -0000

Peter Saint-Andre <stpeter@stpeter.im> writes:

> On 6/21/10 6:11 PM, xmpp issue tracker wrote:
>> #39: prohibition on TLS renegotiation
>> --------------------------------+-------------------------------------------
>>  Reporter:  stpeter@…           |       Owner:  stpeter@…         
>>      Type:  defect              |      Status:  new               
>>  Priority:  minor               |   Milestone:                    
>> Component:  3920bis             |     Version:                    
>>  Severity:  In WG Last Call     |    Keywords:                    
>> --------------------------------+-------------------------------------------
>>  Regarding Section 5.2.5, Matthew Wild commented: "is it really desired to
>>  put a complete ban on any renegotiation?"
>
> Based on my conversations with TLS mavens and discussion in the TLS WG
> during the interminable threads on the renegotiation vulnerability, I
> would say: yes, it really is desired to put a complete ban on any
> renegotiation.
>
> Can you make an argument for why TLS renegotiation should be allowed in
> XMPP applications?

I would not argue for permitting TLS renegotiation, but there ARE some
reasons for permitting TLS renegotiations:

* Protect client credentials, i.e., first do server-authentication and
  then do client authentication in the protected channel.

* Support sequence number wrapping (unlikely).  From 5246:

   sequence number
      Each connection state contains a sequence number, which is
      maintained separately for read and write states.  The sequence
      number MUST be set to zero whenever a connection state is made the
      active state.  Sequence numbers are of type uint64 and may not
      exceed 2^64-1.  Sequence numbers do not wrap.  If a TLS
      implementation would need to wrap a sequence number, it must
      renegotiate instead.  A sequence number is incremented after each
      record: specifically, the first record transmitted under a
      particular connection state MUST use sequence number 0.

* Refresh encryption keys.

On the whole, I would agree that these small use-cases do not outweigh
the complexity in permitting renegotiation and that it is the right
decision.  But I wouldn't agree that it is a clear-cut obvious decision,
it is a careful trade-off.  Documenting why the decision has been made,
and its pros and cons, is useful.

/Simon