krb5_rd_req return codes for ticket decryption failures

Simo Sorce simo at redhat.com
Mon Apr 28 11:54:51 EDT 2014


On Mon, 2014-04-28 at 11:27 -0400, Greg Hudson wrote:
> I am working on some changes to produce better error messages from
> krb5_rd_req, and while I'm there I want to take a look at its return
> codes.
> 
> As of 1.7, we return KRB5KRB_AP_WRONG_PRINC for most ticket decryption
> failures.  Despite the name, this code does not correspond to an RFC
> 4120 error number, so the krb5 mech's gss_accept_sec_context will
> translate it into KRB_ERR_GENERIC (60) in the KRB-ERROR message.  It
> seems like we would be better off returning actual AP-REQ protocol
> errors (especially because of [1]).  My tentative plan is:
> 
> * KRB5KRB_AP_ERR_NOKEY: The keytab is missing or unreadable, or contains
>   no usable entries (i.e. none of the keytab principals match the
>   application server specification), so we can't decrypt any tickets.
> 
> * KRB5KRB_AP_ERR_NOT_US: The keytab does not contain any usable entries
>   for ticket server principal (and we tried all of the usable entries in
>   case the ticket used an alias, but none of them worked).
> 
> * KRB5KRB_AP_ERR_BADKEYVER: The keytab contains a usable entry for the
>   ticket server principal, but it doesn't match the ticket kvno and
>   enctype (and we tried all of the usable entries anyway but none of
>   them worked).
> 
> * KRB5KRB_AP_ERR_INTEGRITY: The keytab contains a key matching the
>   ticket server principal, kvno, and enctype, but it didn't work (nor
>   did any of the other usable entries).
> 
> If the ticket used an alias for a keytab entry we do have, but uses the
> wrong kvno, we can't really tell that it was a kvno mismatch, so we
> return a principal mismatch.  This is a fundamental limitation of RFC
> 6806 server aliases.
> 
> We can distinguish between different sub-cases using the extended error
> message, but that won't be visible to the client.  For the purpose of
> this thread, I'm only discussing the return code.
> 
> >From [2] I'm aware that we have some old GSSRPC code in the tree which
> reacts to KRB5KRB_AP_WRONG_PRINC; it can be changed to react to
> KRB5KRB_AP_ERR_NOT_US.
> 
> Does this plan seem reasonable?
> 
> [1] http://k5wiki.kerberos.org/wiki/Projects/Graceful_recovery_after_destructive_service_rekey
> [2] http://mailman.mit.edu/pipermail/krbdev/2008-December/007154.html

I do not see any major issues with it.

Simo.

-- 
Simo Sorce * Red Hat, Inc * New York



More information about the krbdev mailing list