[2346] in Kerberos

home help back first fref pref prev next nref lref last post

Local password validation (was: kerberizing xlock)

daemon@ATHENA.MIT.EDU (Clifford Neuman)
Thu Nov 5 18:36:06 1992

Date: Thu, 5 Nov 92 15:04:35 PST
From: Clifford Neuman <bcn@ISI.EDU>
To: bf4grjc@socrates.MIT.EDU 595-8439)
Cc: bjaspan@Athena.MIT.EDU, kerberos@Athena.MIT.EDU
In-Reply-To: Ravi Ganesan (301's message of Thu, 5 Nov 92 14:00:50 EST <9211051900.AA01169@ramanujam.bell-atl.com>

  From: bf4grjc@socrates.MIT.EDU (Ravi Ganesan (301) 595-8439)
  Date: Thu, 5 Nov 92 14:00:50 EST

  I feel that getting a ticket and then getting a service ticket and using that
  service - under the condition the service is on the same machine, is a 
  theoretically messy, but practically convenient solution. (To recap a 
  hyper-kludgy hyper-quick and hyper-dirty way of doing this would be to 
  replace login with a combination of a kinit, a chown on the ticket, and then 
  a quick rlogin into the same machine. Naturally in practice you would set 
  up a dummy server that does something trivial like retun a YES/No 
  repsonse to your login program.

Note that if all you want is to verify the password locally, and if
you do not have a use for subsequent Kerberos authentication, then you
can request a ticket for the "local verification" service in your
first request to Kerberos.  There is no need to first request a ticket
granting ticket.

Also, there is no need to actually contact the local verification
service out of band.  The verification can be done entirely by the
login program.  

What you would do is initially request a ticket for the verification
service, use that ticket to construct an authenticator, then
immediately verify the ticket and authenticator from within the login
program using the "local verification" services key which is
presumably available to the login program since it runs as root.

You could simplify this even further if you were willing to write your
own code to do the verification, instead of using the code in the
Kerberos library.  To do this, you would:

   Make an initial request for a "local verification" server ticket

   Decrypt the response using the password entered by the user

   Decrypt the ticket using the key of the "local verification" server

   Check to make sure the ticket is not expired

   Compare the session key from the ticket with that from the
   response from the KDC.

If they match, and the ticket has not expired, then you have verified
the identity of the user.

	~ Cliff

home help back first fref pref prev next nref lref last post