Re: [TLS] GSS-API extension draft available

Bodo Moeller <bmoeller@acm.org> Wed, 20 December 2006 13:49 UTC

Received: from [127.0.0.1] (helo=stiedprmman1.va.neustar.com) by megatron.ietf.org with esmtp (Exim 4.43) id 1Gx1of-0001ju-5P; Wed, 20 Dec 2006 08:49:05 -0500
Received: from [10.91.34.44] (helo=ietf-mx.ietf.org) by megatron.ietf.org with esmtp (Exim 4.43) id 1Gx1oc-0001gO-JI for tls@ietf.org; Wed, 20 Dec 2006 08:49:02 -0500
Received: from moutng.kundenserver.de ([212.227.126.174]) by ietf-mx.ietf.org with esmtp (Exim 4.43) id 1Gx1ob-0003RG-6B for tls@ietf.org; Wed, 20 Dec 2006 08:49:02 -0500
Received: from [134.147.40.251] (helo=tau.invalid) by mrelayeu.kundenserver.de (node=mrelayeu5) with ESMTP (Nemesis), id 0ML25U-1Gx1oX00ZC-0001N7; Wed, 20 Dec 2006 14:48:57 +0100
Received: by tau.invalid (Postfix, from userid 1000) id 91674101B3; Wed, 20 Dec 2006 14:48:56 +0100 (CET)
Date: Wed, 20 Dec 2006 14:48:56 +0100
From: Bodo Moeller <bmoeller@acm.org>
To: Jeffrey Altman <jaltman@secure-endpoints.com>
Subject: Re: [TLS] GSS-API extension draft available
Message-ID: <20061220134856.GA24847@tau.invalid>
References: <45883A8F.1090801@secure-endpoints.com> <200612192026.VAA21427@uw1048.wdf.sap.corp> <20061220122616.GA21201@tau.invalid> <4589306D.5030809@secure-endpoints.com>
Mime-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Disposition: inline
In-Reply-To: <4589306D.5030809@secure-endpoints.com>
User-Agent: Mutt/1.5.9i
X-Provags-ID: kundenserver.de abuse@kundenserver.de login:2100a517a32aea841b51dac1f7c5a318
X-Spam-Score: 0.0 (/)
X-Scan-Signature: 00e94c813bef7832af255170dca19e36
Cc: tls@ietf.org
X-BeenThere: tls@lists.ietf.org
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: "This is the mailing list for the Transport Layer Security working group of the IETF." <tls.lists.ietf.org>
List-Unsubscribe: <https://www1.ietf.org/mailman/listinfo/tls>, <mailto:tls-request@lists.ietf.org?subject=unsubscribe>
List-Archive: <http://www1.ietf.org/pipermail/tls>
List-Post: <mailto:tls@lists.ietf.org>
List-Help: <mailto:tls-request@lists.ietf.org?subject=help>
List-Subscribe: <https://www1.ietf.org/mailman/listinfo/tls>, <mailto:tls-request@lists.ietf.org?subject=subscribe>
Errors-To: tls-bounces@lists.ietf.org

On Wed, Dec 20, 2006 at 07:45:33AM -0500, Jeffrey Altman wrote:
> Bodo Moeller wrote:

>> It appears to me that when we use the GSS-API PRF for Kerberos V 
>> (RFC 4402) as suggested in draft-santesson-tls-gssapi-01.txt, we have
>> solved the wrong problem.  Using the PRF will give use a unique
>> premaster secret for each session, which we don't really need.  Using
>> the PRF will not include any additional *secret* entropy, which is what
>> we actually need -- at least if the main worry is the lack of entropy in
>> the Kerberos session key.
>> 
>> I may have misunderstood what the proposed GSS-API based handshake would
>> be doing in the Kerberos V case.  But if it works the way I think it
>> works (without mixing in secret entropy from a key exchange such as
>> DH/ECDH), then to improve the level of security compared with RFC 2712
>> as apparently is desired, we'd still have to perform an immediate
>> renegotiation to benefit from an appropriate key exchange mechanism.

> Currently the input to the GSS PRF would be:
> 
> OM_uint32  minor_status;
> gss_ctx_id_t  gss_context;
> gss_buffer_t  prf_in;
> gss_buffer_t  prf_out;
> ssize_t       output_len = sizeof(pre-master-secret);
> 
> GSS_Pseudo_random( &minor_status,
>   		   gss_context,
> 		   GSS_C_PRF_KEY_FULL,
> 		   prf_in,
> 	           output_len,
>                    prf_out);
> 		
> where prf_in is the concatenation of all of the previous TLS messages
> in the exchange up until the completion of the GSS handshake:
> 
>   prf_in = ClientHello || ServerHello || ....

I see.  This is something that I had not managed to gather from
draft-santesson-tls-gssapi-01.txt.  (Why not use just
ClientHello.random and ServerHello.random instead of the complete TLS
handshake data collected so far?)


> What I hear you saying is that we should add an ephemeral-ephemeral DH
> exchange in which case the prf_in will become:
> 
>   prf_in = g^xy mod p || ClientHello || ServerHello || ....
> 
> where g^xy mod p is the DH key.
> 
> 
> Correct?

Yes, this looks much better -- at least when the key exchange
mechanism is used with Kerberos V.  For other GSS-API mechanisms,
the DH computation might just be overhead.

The renegotiation approach, while appearing somewhat ad-hoc, has some
advantages in terms of flexibility at the cost of some extra protocol
rounds (but little extra computational effort): It can accomodate DH
and ECDH and any other key exchanges.  For GSS-API mechanisms for
which an additional key exchange is not necessary, there simply
wouldn't have to be a second handshake.  (Of course, to ensure
interoperability, the specification would have to provide appropriate
instructions.)

Still it probably would be the best to integrate all components of the
key exchange into a single TLS handshake.  I am just not sure what the
best protocol design would be: Have separate ciphersuites without 
a ServerKeyExchange, with DH, with ECDH?  Or use some additional
negotiation mechanism (based on TLS extensions) to choose if and how
ServerKeyExchange (and ClientKeyExchange) should be used?

Bodo


_______________________________________________
TLS mailing list
TLS@lists.ietf.org
https://www1.ietf.org/mailman/listinfo/tls