The acceptor verifies the initiator MIC and then, in its last leg, calls 
GSS_GetMIC on the entire conversation (including both last legs, excepting the 
acceptor MIC) and sends it in an extension token to the initiator. The 
initiator verifies the acceptor MIC before returning GSS_S_COMPLETE. (It is 
true that this approach does require the client and server to maintain the 
entire conversation state.)

Maybe this is just a stupid question, but do they really need to maintain state of the entire conversation? I mean, both parties could just maintain the result of a hash over the conversation so far, built in an iterative way. Something like this:

state' = hash (state, new_message)

At the end of the conversation, they could compute GSS_mic over the state.

May be the overload of computing such hashes is worse than the memory needed to store the entire state.

Regards,
Alejandro
With respect to communicating the mutual authentication state, a new TLV token 
type is defined containing a 32-bit integer in network byte order, which 
consists of req_flags as passed to GSS_Init_sec_context. These flags are masked 
by, currently, GSS_C_MUTUAL_FLAG before encoding. Other flags may be allowed in 
the future; at this stage we do not wish to reveal in plaintext anything more 
than the mutual authentication state.

Once the acceptor returns GSS_S_COMPLETE, it will set the received mutual 
authentication state in ret_flags.

-- Luke
_______________________________________________
abfab mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/abfab
_______________________________________________
abfab mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/abfab

Reply via email to