[TLS] Re: the use cases for GSS-based TLS and the plea for integrating
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[TLS] Re: the use cases for GSS-based TLS and the plea for integrating



There is currently one proposal from Microsoft available as an ID and
I'm planning to come up with an ID in the September/October timeframe
based on the comments that I've made.

The two approaches are in some aspect fundamentally different.
One thing that I particularly dislike about the current ID is its
total silence/ignorance about the necessary changes to add this
to existing implementations and software architectures.


Personally, this impact on the installed base, existing implementations
and existing modularization and software architecture is a significant
concern when comparing the merits of different approaches. YMMV.


 a) draft-ietf-santesson-tls-gssapi:

    - uses GSS-API as a key distribution scheme in order to
      seed a TLS-PSK cihpersuite.  So the (PS)Key is not really
      pre-shared, it is created for and distributed with the
      very same TLS handshake

    # of round-trips: 
       without optimistic gssapi context token
              tls-handshake + gssapi-handshake
       with optimistic gssapi context token (e.g. SPNEGO+optimistic token):
              correct guess: tls-handshake + gssapi-handshake - 1
              wrong   guess: tls-handshake + gssapi-handshake

    advantages:
     * if the gssapi mechanism uses PK-ops-free context establishment
       the the TLS handshake can be performed entirely without PK-ops

    disadvantages:
     * works only with gssapi mechanisms that establish a shared
       session key during security context establishment
       (which essentially means: offer confidentiality message protection)
     * is currently limited to new gssapi mechanisms implementing
       the optional GSS_prf API extension
     * the entire GSS-API security context establishment MUST
       be performed completely inside the TLS handshake
     * requires major re-enginering of the TLS state machine and
       new handshake messages
     * will add at least one round-trip to the TLS-handshake if
       negotiation of gssapi mechanisms should be done and
       _NO_ optimistic gssapi context token scheme is used
     * will mess severly with the protocol stack software architecture
       because the calling application will likely want to
       get access to gssapi extensions/features/attributes
       from the gssapi context and object handles that
       are being using deeply within and owned/managed by TLS during
       the TLS handshake

     * does not provide identity protection for the client
     * does not improve security (weaknesses) over a regular
       gssapi authentication without TLS


 b) my (developing) concept/idea which I have been buiding up during
    my numerous postings last week on the TLS mailing list.

  - uses GSS-API as an additional or alternative authentication method
    for one or both peers on top of a regular TLS ciphersuite and
    after an almost vanilla TLS handshake (using a TLS Hello extension
    for determining availabilty of the protocol extension and selection
    of a common gssapi mechanism), plus three additions to TLS:

     - (preferably) an additional content type at the SSL/TLS record layer
       and API calls/extensions to exchange gssapi context establishment
       tokens following the TLS handshake between the peers

     - the possibility to update (using XOR) the pre-master secret and
       re-generate a new session key of a newly established SSL session
       synchronously (maybe this should use yet another content type
       similar to change_cipher_spec).

     - the possibility to attach an opaque (size-limited) flat-memory
       object to an SSL session (+session cache entry) where
       a seperate software module "TLSplus" above TLS can store those
       gssapi attributes which the application caller might
       want or need on SSL/TLS session resume
       I think it would be good to combine the attaching of
       additional attributes and the update of the pre-master secret
       and keying material

   # of round-trips:
       regular (and this includes mech negotiation):
             tls-handshake + gssapi-handshake
       with TLS-finished piggyback optim.:
             tls-handshake + gssapi-handshake - 1

   the additional TLSplus module will have to implement most of what
   represents gssapi-over-tls, i.e. set up the (simple OID) list of gssapi
   mechanisms for the TLS Hello extension, determine after the
   TLS handshake whether gssapi-over-tls and which mechanism OID
   was negotiated in the Hello extension, perform the GSS-API
   handshake when the TLS handshake is finished (optionally
   using the (clients) TLS finished message(s) as channel bindings,
   update the TLS session crypto keys if the gssapi mechanism can
   provide entropy for a cryptographic binding, collect gssapi
   attributes which the app cares about, serialize them into
   a flat memory object and ask TLS to attach them to the SSL session.

   disadvantages:
     * will incur the (CPU) overhead of a regular TLS handshake in
       addition to the gssapi authentication exchange, which normally
       means a TLS ciphersuite with PK-ops
     * will require one additional round-trip if NO optimization is
       implemented for the client to piggyback the messagee with
       the initiators first gssapi context token onto the
       clients TLS finished message

   advantages:
     * should work with most existing and future TLS cipher suites
     * will work with the entire installed based of gssapi mechs,
       no changes necessary (aside from potential ABI issues).
     * obviates SPNEGO and multi-mech-glues
     * should work with authentication-only gssapi mechanism just fine
       (it doesn't improve the security of the gssapi authentication
        exchange itself, though)
     * should work with SASL instead of GSS-API authentication
       handshakes (at least non-interactive ones)
     * requires only mild modifications of existing TLS implementations
     * should be doable even as a low-impact SSLv3 extension,
       not only TLS v1.x
     * client identity protection because the entire gssapi handshake
       is performed under TLS protection
     * a combination of server-authentication based on SSL server cert
       and client authentication based on gssapi client authentication
       is quite possible, 
     * high orthogonality to the TLS protocol, permitting completely
       independent evolution of gss-api and the TLS protocol stack
     * clear seperation of protocol stacks and abstractions,
       TLS doesn't have to mess with GSS-API, GSS-API doesn't have
       to mess with TLS, TLSplus can be custom tailored to provide
       the amount of gssapi attribute persistence that the application
       needs.

   
   in order to improve interoperability and to ease the use in heterogeneous
   environments, the TLSplus layer should have a self-signed certificate
   generated in case the customer does not (want to) setup a PKI so
   that non-anonymous TLS ciphersuites can be used.


-Martin

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




Note: Messages sent to this list are the opinions of the senders and do not imply endorsement by the IETF.