Jim Basney | 16 May 17:03
Favicon

saml-ec gss implementation

Hi,

I mentioned in a post a few months ago that we've been working on a
GSS-API mechanism implementation according to
draft-ietf-kitten-sasl-saml-ec. We've now got it working with the MIT
GSS example programs and Shibboleth identity provider using HTTP Basic
Authentication, so I figure it's a good time to send around a pointer to
our code:

  https://github.com/jbasney/mech_saml_ec

If you have a chance to give it a try, please let me know. Any
contributions (patches, bug reports, etc.) are very welcome.

Next we're going to try to get it working with OpenSSH.

-Jim
_______________________________________________
Kitten mailing list
Kitten <at> ietf.org
https://www.ietf.org/mailman/listinfo/kitten

Simon Josefsson | 15 May 21:55
Favicon
Gravatar

Re: channel binding?

William Mills <wmills <at> yahoo-inc.com> writes:

> I'd prefer to go with two mechanisms.  It makes the logic MUCH
> simpler.  Policy is then implemented by the mechanism you advertise.

Thinking about how SAML20 and SAML20EC could be collapsed into one
mechanism (it would become quite complex), I am inclined to agree.  I
guess it depends on the underlying protocol, for SCRAM it makes sense to
have both variants in the same document, but for complex environments
like SAML and OAuth it might not make sense.

/Simon

> -bill
>
>
>
>
>>________________________________
>> From: Simon Josefsson <simon <at> josefsson.org>
>>To: Nico Williams <nico <at> cryptonector.com> 
>>Cc: William Mills <wmills <at> YAHOO-INC.COM>; "kitten <at> ietf.org" <kitten <at> ietf.org> 
>>Sent: Tuesday, May 15, 2012 6:57 AM
>>Subject: Re: channel binding?
>> 
>>Nico Williams <nico <at> cryptonector.com> writes:
>>
>>> On Mon, May 14, 2012 at 7:02 PM, William Mills <wmills <at> yahoo-inc.com> wrote:
>>>> What's the prevailing wisdom on channel binding, is it still the case that
>>>> we SHOULD define SASL mechanisms that support channel binding along with
(Continue reading)

Simon Josefsson | 15 May 20:22
Favicon
Gravatar

Re: OAUTH/SASL and the format debate

William Mills <wmills <at> yahoo-inc.com> writes:

> I'm not rabidly against NULL, though it makes life harder for the
> producer of the string to have to embed nulls and it's more annoying
> in other languages than C variants.  C variants can easily replace
> some other fencepost with NULL for in place string handling.  Agreed
> that EOL conversion is a PITA.  If it's not CRLF I would be more
> inclined to pick a control character like control-A or control-C
> (which has the tag EOT in ascii and so is weirdly pleasing).

We are firmly in bikeshedding land here, but what about TAB as the
separator?

/Simon
_______________________________________________
Kitten mailing list
Kitten <at> ietf.org
https://www.ietf.org/mailman/listinfo/kitten

Simon Josefsson | 15 May 18:33
Favicon
Gravatar

Re: OAUTH/SASL and the format debate

William Mills <wmills <at> yahoo-inc.com> writes:

>>Why digits as keys?  Some consistency with RFC 5801/RFC5802 would be
>>nice, so how about something like the following, in pseudo ABNF/regexp
>>language:
>>
>>   key = [A-Za-z0-9_-]+
>>   value = [^,]*
>>   kvpair = key "=" value
>>   msg = kvpair ("," kvpair)*
>>
>>This allows descriptive names for the "key" names.
>
>
> Descriptive key names I like.  "=" instead of "SP" is fine too.  Comma
> separated means that the authorization header value will have to be
> base64 encoded, and I'm not sure I'm a big fan of that.  CRLF won't
> appear in the auth header.
>
> Re-using the parser from 5801/5802 is attractive though.  Not sure
> what I prefer there.

Is there some other character that isn't used in authorization headers
that could be used as a separator?

I also dislike having to base64 encode values if it can be avoided.
Another option is to escape "," but escaping is often troublesome as
well.

What I don't like about CRLF is that in some environments you may end up
(Continue reading)

Simon Josefsson | 15 May 15:57
Favicon
Gravatar

Re: channel binding?

Nico Williams <nico <at> cryptonector.com> writes:

> On Mon, May 14, 2012 at 7:02 PM, William Mills <wmills <at> yahoo-inc.com> wrote:
>> What's the prevailing wisdom on channel binding, is it still the case that
>> we SHOULD define SASL mechanisms that support channel binding along with
>> non-bound ones?
>
> Very much so, yes.  But that doesn't mean that you can't create new
> SASL mechanisms that can't do channel binding.  The key is that if a
> mechanism could support it given its fundamentals, then it must
> support it.

+1

What hasn't been clear to me if there is any way to achieve channel
binding with OAuth.  Possibly it is in a similar situation as SAML which
resulted in the two SASL mechanisms SAML20 and SAML20EC, namely, that
the traditional and most common deployment of the protocol does not
easily support it, but it may be possible to use some extension to
achieve channel bindings.  If this is the case, I think it would be nice
if both variants could be achieved within the same SASL mechanism.
Unless that becomes very ugly.  If it becomes ugly, it may be simpler to
have two SASL mechanisms that each become less complex.

/Simon
_______________________________________________
Kitten mailing list
Kitten <at> ietf.org
https://www.ietf.org/mailman/listinfo/kitten

(Continue reading)

Simon Josefsson | 15 May 15:53
Favicon
Gravatar

Re: OAUTH/SASL and the format debate

William Mills <wmills <at> yahoo-inc.com> writes:

> Having inquired of a number of folks that have implemented the XOAUTH
> mechanism and getting no reply, I'm planning to go with "silence ==
> consent" and presume there's no big objection to moving away form the
> HTTP format style for the SASL messages.  I' planning on a key/value
> pair format, which is easily extensible.  My plan was something like:

Great.  I like a key=value approach.  To me, it is better than JSON
since it is easier to parse when you don't have external libraries
available.

>     NONZERO ::=  %x31-39
>     key ::= NONZERO *DIGIT 
>     value ::= *(SP HTAB VCHAR)
>
>     msg_line ::= key SP value CRLF
>     sasl_msg ::= +msg_line CRLF
>
> We would need an IANA registry for keys.  Objections?  Other preferred
> formats?

Why digits as keys?  Some consistency with RFC 5801/RFC5802 would be
nice, so how about something like the following, in pseudo ABNF/regexp
language:

   key = [A-Za-z0-9_-]+
   value = [^,]*
   kvpair = key "=" value
   msg = kvpair ("," kvpair)*
(Continue reading)

William Mills | 15 May 02:02
Picon
Favicon

channel binding?

What's the prevailing wisdom on channel binding, is it still the case that we SHOULD define SASL mechanisms that support channel binding along with non-bound ones?

Thanks,

-bill
_______________________________________________
Kitten mailing list
Kitten <at> ietf.org
https://www.ietf.org/mailman/listinfo/kitten
William Mills | 14 May 23:59
Picon
Favicon

OAUTH/SASL and the format debate

Having inquired of a number of folks that have implemented the XOAUTH mechanism and getting no reply, I'm planning to go with "silence == consent" and presume there's no big objection to moving away form the HTTP format style for the SASL messages.  I' planning on a key/value pair format, which is easily extensible.  My plan was something like:

    NONZERO ::= %x31-39
    key ::= NONZERO *DIGIT 
    value ::= *(SP HTAB VCHAR)
    msg_line ::= key SP value CRLF
    sasl_msg ::= +msg_line CRLF

We would need an IANA registry for keys.  Objections?  Other preferred formats?

-bill

_______________________________________________
Kitten mailing list
Kitten <at> ietf.org
https://www.ietf.org/mailman/listinfo/kitten
Nico Williams | 8 May 23:28

Proposal: extension to GSS_Acquire/Add_cred_from()

Recap: Simo and I have a proposal to add three new functions dealing
with acquisition of creds from "credential stores" and storing
credentials into credential stores.  A credential store is a sequence
of key/value pairs where the keys are URNs and the value syntaxes
given by the keys.  Among the possible keys as "password file" and
such.

Simo intends to use these functions in a context where the key/value
pairs come from a configuration file.  It would be inappropriate to
allow passwords/keys/PINs/secrets of any kind to be encoded in a
configuration file, so he proposes that no URNs be provided by which
to pass secret values to the mechanism.

But I see a general replacement for gss_acquire_cred_with_password()
in these new functions and I don't want to either preclude such a use
or force apps to write secrets into temporary files.  At the same time
I completely agree that no secrets should be stored in configuration
files...

So I'd like to propose an extension to the GSS_Acquire/Add_cred_from()
functions such that the mechanism can tell if any secrets in the
cred_store are to be allowed or not.

Recall that the form of a cred store in the C bindings would be:

typedef struct gss_cred_store_element_struct {
    const char *urn;
    const char *value;
} gss_cred_store_element, *gss_cred_store_element_t;
typedef const struct gss_cred_store_element *gss_const_cred_store_element_t;

typedef struct gss_cred_store_struct {
    OM_uint32 count;
    gss_const_cred_store_element_t *elements;
} gss_cred_store, *gss_cred_store_t;
typedef const struct gss_cred_store_struct *gss_const_cred_store_t;

I can see several possible extensions for allowing secret values here.
 My preference would be to have a per-element flag field because it
that would allow the app/mech to distinguish the origin of each
element.

Perhaps cred stores should be opaque and should have accessor by which
to add key/value pairs, then the accesspor could have an argument
indicating the origin of the key/value pair.  If we wanted to have a
function for learning what the current cred store is then we'd need to
concern ourselves with memory management, and then the lessons of
gss_buffer_t and friends should push us to using an opaque object type
here!

I do realize that in order to use GSS_Acquire/Add_cred_from() as the
basis for a GSS-API interactive initial credential acquisition
interface we'd need a way to tell the app what cred store elements the
mechanism needs, and that perhaps this is not the best approach to a
generic initial cred acquisition API.  However, I also don't want to
make it harder to re-use the cred store functions later on if we
should want to use them as the basis of an interactive initial
credential acquisition API.

So my proposal, then, is to make the gss_cred_store_t into an opaque
type and to provide a constructor, a destructor, a function by which
to add elements, and a function by which to iterate elements, with
elements consisting of: key, value, flag, and one flag defined to
indicate that the value was obtained interactively or from an
appropriate store of secrets.

Comments?

Nico
--
_______________________________________________
Kitten mailing list
Kitten <at> ietf.org
https://www.ietf.org/mailman/listinfo/kitten

Tom Yu | 26 Apr 23:18
Picon
Favicon

draft Kitten WG IETF83 minutes

I've uploaded draft minutes of the Kitten WG IETF83 session to the
Meeting Materials website:

http://www.ietf.org/proceedings/83/minutes/minutes-83-kitten.txt

Please let me know if there are corrections that I should make.
Thanks.
_______________________________________________
Kitten mailing list
Kitten <at> ietf.org
https://www.ietf.org/mailman/listinfo/kitten

Sam Hartman | 17 Apr 22:24
Picon
Favicon

Please review draft-ietf-abfab-gss-eap-06

Hi.
The ABFAB working group has just started a last call on
draft-ietf-abfab-gss-eap-06. This defines a GSS-API/SASL mechanism and
so it would be desirable to get kitten's review.
Comments should be sent to abfab <at> ietf.org by May 1.

Simon has already pointed out that we got our SASL registration off.
_______________________________________________
Kitten mailing list
Kitten <at> ietf.org
https://www.ietf.org/mailman/listinfo/kitten


Gmane