IETF-SSH archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: GSS-APIv2 Extension for Storing Delegated Credentials



On Thu, Sep 11, 2003 at 04:28:02PM +0200, Martin Rex wrote:
> Nicolas Williams wrote:
> > 
> > > to the abstract it seems to address similar area as the "GSS-API Extensions"
> > > draft by GGF (available from
> > > http://www.ietf.org/internet-drafts/draft-engert-ggf-gss-extensions-00.txt).
> > > Perhaps it would make sense to coordinate the effort with GGF?
> > 
> > Unfortunately, the GGF's export-credential-to-environment-variable
> > proposal has a problem: it imposes the use of environment variables as
> > the method for referencing credentials stores, as well as the "current"
> > credential store.
> 
> I would very much like to give some feedback on the proposal,
> however I completely underwater these days. :(
> 
> Here are a few quick problems that come to my mind:

Thanks, I very much appreciate the fedback.

> GSS-API doesn't distinguish different credential stores, although
> the new I-D claims that it would.  With GSS-API a mechanism is
> free to use an arbitrary number of different credential stores
> and employ whatever implementation-specific magic it desires
> to decide individually which credential stores to use each time 
> an application asks to acquire a credentials handle.

Right, the GSS-API does not distinguish between credential stores - it
merely expects that there is a single credential store available when
GSS_Acquire/Add_cred() are invoked or when GSS_C_NO_CREDENTIAL is
referenced.

But for multi-user platforms there have to be multiple credential
stores, even if only one can be currently available for any given call
to GSS_Acquire/Add_cred() or reference to GSS_C_NO_CREDENTIAL.

The problem is that delegated credentials are not obtained from any
store and so are not available for acquisition by GSS_Acquire/Add_cred()
or use through references to GSS_C_NO_CREDENTIAL.

Making GSS_Accept_sec_context() store delegated credentials in some
store would be inappropriate for multi-user platforms - the credential
store context for storing delegated credentials should be selected by
the application.

> My biggest criticism about the SPKM design was that it uses
> the keypair of the longterm credentials to perform each
> GSS-API level authentication.  This causes some problems when
> an implementation wants to use RSA-SmartCards for credential
> storage and crypto-operations:
> 
> - "Smart"Cards that deserve their name do not ever reveal the private
>   RSA key that they hold.  So it is completely impossible to copy
>   credentials that are stored on such smartcards.

Using secret keys is not the same as revealing them.

I.e., it is perfectly possible to implement SPKM w/ smartcards by
proxying the relevant encryption/decryption or signature/verification
operations to the smartcard.

> - Since every single gssapi-level authentication requires access to
>   the longterm credentials, the use of SmartCards in Single Sign-On

Not true for user-2-user situations.

>   environments that perform a large amount of gssapi-level security
>   context establishments require unrestricted access to the cards
>   signing/encryption capabilities without additional user intervention,
>   rendering the contained keypair utterly useless for any kind of
>   legally relevant digital signature operations

See above about proxying crypto operations to smartcards.

> - SPKM 1/2 (rfc2025) doesn't support credential delegation, and
>   when smartcards are used it is physically impossible

PKI credential delegation could be performed by passing a contact
address and secret session key where the receipient of the delegated
credential would have to proxy uses of the credential to a service at
the contact address and use the session key to derive sub-session keys
and to authenticate itself.

I've described a similar system for Kerberos V credential forwarding in
the past either here or at the MIT Kerberos lists (or both - I forget).

> - Common PC SmartCard (TCos 1.2 and 2.0) readers and SmartCard interfaces
>   use a serial communication interface with 9600 or 19200 baud, which
>   makes all operations involving the SmartCard *EXTREMELY* slow,
>   and the software has to solve the issue of multiple concurrent
>   access from different processes in a Single Sign-On environment
>   (a mutual authentication involving two smartcards with 1024-bit
>    RSA keys take about 20 Seconds...)

I can't speak to this.  I really don't see the relevance of the
smartcard issues to my proposal for GSS_Store_cred().

[...]

> Also keep in mind that GSS-API was designed to cover GSS-API mechanisms
> that live entirely in a TCB and do not reveal krypto keys or credentials
> (in whatever shape or form and for whatever (political) reason),
> so both, credential delegation and copying credentials can never be
> a generic concept for GSS-API fitting the level of the abstraction
> of the current spec.

The GSS_Store_cred() interface does not imply that "physical"
credentials (i.e., longterm secrets) are actually stored, nor does it
imply that the store is a file, a smartcard or punched cards - not
anymore than the GSS-API implies the same.

Cheers,

Nico
-- 



Home | Main Index | Thread Index | Old Index