[2900] in Kerberos

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

Re: Replay caches

daemon@ATHENA.MIT.EDU (Tony Lill)
Wed Nov 17 12:10:12 1993

To: lunt@ctt.bellcore.com
Cc: Tony.Lill@riipsdev.waterloo.NCR.COM, kerberos@MIT.EDU
In-Reply-To: Your message of "Mon, 08 Nov 93 12:40:48 EST."
Date: Tue, 16 Nov 93 18:09:01 -0500
From: Tony Lill <ajlill@riipsdev.waterloo.NCR.COM>

>>>>> On Mon, 8 Nov 1993 12:40:48 -0500, Steve Lunt <lunt@ctt.bellcore.com> said:
	Steve> Perhaps for now you could force the client to get another service
	Steve> ticket with the TGT (rather than use the one in the ticket cache).

	Steve> -- Steve

From my reading of the krb5_mk_req_ext code, at about line 141, it
calls generate_authenticator to create a new authent structure on each
call, so it would seem that where the ticket came from is irrelevent.
Or is this not the same structure passed to krb5_auth_to_rep in
krb5_rd_req_decoded?

My problem is that with more that one identical processes starting at
once (especially on a multiprocessor) multiple processes can be
calling generate_authenticator with the same server/client pair during
the same timeslice, and since the cmp function in rc_dfl.c only
uses client, server, ctime, and cusec to distinguish between requests,
I'm toast.

If no-one objects, and if it hasn't  been changed in Beta 3, I'll
modify the replay cache code to handle this situation, and pass the
diffs back.

	Tony> ----- Begin Included Message -----

	Tony> I just had a spot of bother using sendauth/recvauth and replay caches.
	Tony> I'm using Kerberos V, Beta 2, and I have a kerberized program that
	Tony> spawns a bunch of processes that all try to connect to this one
	Tony> service. What happens is that sometimes two off these processes run
	Tony> sendauth close enough together that the server claims that one of the
	Tony> requests is a reply.

	Tony> Looking at the replay cache, it only checks the server, client, ctime
	Tony> and cusec. This means that with the current code, two requests have to
	Tony> be somehow spaced by at least the value of a clock tick to avoid this.
	Tony> I don't think that this is entirely reasonable.

	Tony> A better solution might be to include some other bit on info in the
	Tony> data used in the replay cache. Perhaps the sequence number. That way
	Tony> in systems like mine this can be avoided.

	Tony> For the present, I've just put in a sleep and retry to get around
	Tony> this.


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