[AFS3-std] removing SetCallBackKey from the rxgk-afs document

Benjamin Kaduk kaduk@MIT.EDU
Mon, 31 Mar 2014 17:42:04 -0400 (EDT)


Hi all,

Simon and I got a lot of time to chat last week at the EAKC.  (Hooray!)

In particular, Simon had a few ideas for how to render SetCallBackKey 
unnecessary (one of which is used by YFS), and neither of us particularly 
like having the RPC around.

The summary after analysis is: with the current SetCallBackKey, the file 
server must maintain a mapping of PrAuthName<>s to (key, token) pairs 
(though the token can be empty if the CM wishes it to be).  This mapping 
is used when creating callbacks as a result of RPCs during normal 
operation, and the PrAuthName<> being looked up is one that was cached in 
the server connection state, since the name vector comes from the token, 
which is only seen in the rx response.  This is the important part, that 
data from the response  must be cached in the server connection state.

But there's no real reason to involve an extra lookup -- the (key, token) 
pair could itself be stored in the server connection state, and all 
callbacks generated as a result of that connection would use that callback 
key.  It turns out that we have a built-in way to get application-specific 
data into a response packet -- the 'appdata' field of the authenticator. 
Currently rxgk-afs just sets that to the CM uuid, but it could also 
include a key/token (and also the uuid of the server we're trying to talk 
to, as an extra consistency check).  The file server can pull the 
key/token from the authenticator and cache it directly.

Alternatively, we could keep SetCallBackKey but require that it be called 
on a connection before any secure callbacks are issued on that connection, 
and have the key that is set apply only to that connection (again, being 
cached in the server connection state).  There would need to be some 
thought about when the key comes into effect and what sequencing 
guarantees are made, though, so this approach seems less interesting to 
me.

I plan for the next upload of draft-wilkinson-afs3-rxgk-afs to take the 
first approach, omitting RXAFS_SetCallBackKey and putting key information 
in the appdata field.  The token format will change back to having just a 
single list of identities (but the key combination portion will remain 
unchanged, for the same reasons it is currently present).

-Ben