Anonymous kerberos

From K5Wiki
Revision as of 13:07, 28 December 2009 by SamHartman (talk | contribs) (document anonymous)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Anonymous kerberos provides a mechanism for principals to authenticate to a remote service without disclosing their identity.There are two primary use cases:

# Principals with no Kerberos identity at all authenticating to create an identity or to protect some communication
# Principals authenticating to some external service, disclosing that they are affiliated with a particular realm but not disclosing their full identity.

There are two modes of anonymous Kerberos to meet these objectives: completely anonymous and realm-exposed.

Completely anonymous

In completely anonymous Kerberos, a principal can authenticate to a realm with no Kerberos identity in that realm. Diffie-Hellman key exchange is used to establish a shared secret.. To use completely anonymous Kerberos:

# Configure the KDC to support pkinit, setting at least <t>pkinit_identity</t> on the KDC.
# Set <t>pkinit_anchors</t> so that the client can verify the KDC certificate
# Create the <t>WELLKNOWN/ANONYMOUS</t> principal in the realm to signal that fully anonymous Kerberos is enabled.

On the client use <t> kinit -n @REALM</t> or <t> kadmin -n @REALM</t> to request anonymous tickets. In klist and in service ACLs the resulting authentication will use the <t>WELLKNOWN/ANONYMOUS@WELLKNOWN:ANONYMOUS</t> well known principal.

Realm Exposed Anonymous

Alternatively, clients can authenticate normally to the KDC but request that the KDC return a credential that only exposes the client's realm. The MIT Kerberos client is believed to support this mode as of Kerberos 1.8, although the KDC currently does not support this mode.

On the client, use <t>kinit -n principal</t> to authenticate. A password or other credential will be required just as if the <t>-n</t> flag is not included. However, the resulting principal will be <t>WELLKNOWN/ANONYMOUS@REALM</t>.

Implementation Status


See Projects/Anonymous pkinit for implementation status.