What happened to PKCROSS?
Nico Williams
nico at cryptonector.com
Thu Oct 23 17:41:13 EDT 2014
On Mon, Oct 20, 2014 at 09:04:18AM +0200, Rick van Rein wrote:
> Hello Nico,
>
> Are you still working on your neo-PKCROSS draft? I’d love to see it
I'll update the I-D soon, but I still don't have cycles for
implementing.
> move forward!
Me too.
> You may have seen draft-vanrein-dnstxt-krb1 pop up; it arranges that a
No, I hadn't.
> client (or its KDC) can figure out under what realm to address for a
> given hostname. This is based on DNS TXT RR + DNSSEC. This will
> cause realm crossover inquiries, even for hitherto unknown realms. To
> enable the KDC to resolve such inquiries, we’ll need some form of
> PKCROSS based on “remote KDC credentials in DNSSEC”.
Well, I envision two options:
- client-driven PKCROSS (as described earlier)
- TGS-driven PKCROSS, which would work for existing, unmodified
clients, and which would not create persistent, long-term symmetric
cross-realm trust principals.
Here the TGS would use the client-drivern PKCROSS protocol as a
client, but would obtain a cacheable, short-lived cross-realm
credential that can be used to issue cross-realm TGTs for the given
x-realm TGS principal name.
In both cases using DANE as much as possible, with stapled DANE as
Google wanted to do for HTTPS (though they've backed off for now).
> My thoughts were:
> * KDC’s peer to cross realms
> * publish the KDC server key using DANE
> * employ PKINIT with DH to establish a one-sided krbtgt
Yes.
> Your thoughts were (AFAIK):
> * clients hold a certificate (possibly from their local KX509 service)
> * clients connect to remote KDC’s
> * publish CA certs for clients using DANE
>
> The first is tighter on security, the second supports more flows.
The first can be implemented on the basis of the second: the TGS uses
PKINIT at the remote realm to acquire a special (because of the TGS'
client principal name in its PKINIT certificate) cross-realm TGT whose
purpose is to enable the client TGS to issue x-realm TGTs for that one
x-realm.
> Mixing the two will probably lead to mutual weakening, so I am
> thinking that it might be useful to split the two, but ensuring that
> they remain as compatible as can be. Does that sound wise to you?
I don't agree.
A client-driven PKCROSS is feasible now. In fact, I heard earlier this
week of a couple of environments where it actually *is* used in
practice. (The user has a TGT in a given realm, uses kx509/kca to get a
certificate, then PKINIT to get a TGT at the remote realm.) I don't
have specifics, and I gather that the AS at the remote realm had to have
local enhancements added to make this possible.
A client-driven PKCROSS is deployable even if you use a KDC whose vendor
isn't likely to add KDC-driven PKCROSS any time soon. That's
convenient!
A client-driven PKCROSS protects the client's privacy relative to its
home KDC.
A client-driven PKCROSS is sub-optimal though: a TGS-driven PKCROSS can
significantly reduce the number of PK operations needed, compared to a
client-driven PKCROSS.
The TGS-driven PKCROSS can be substantially similar to the client-driven
one, with the TGS being the client.
Nico
--
More information about the Kerberos
mailing list