[AFS3-std] rxgk: The initial packet problem

Simon Wilkinson sxw@inf.ed.ac.uk
Wed, 14 Oct 2009 11:14:27 +0100


This is the first of a couple of emails to raise issues that were  
identified and discussed with rxgk at the Edinburgh Hackathon. I am,  
of course, going to produce a revised document which addresses them,  
but I'm sending this separately in the hope of getting further  
feedback before that document appears.

The initial packet problem is caused by the current behaviour of rx's  
challenge/response system, where the client sends a packet to the  
server using its desired security level. The server then responds with  
a challenge, the client sends a response, and providing the security  
level permitted by the server matches that requested by the client,  
the connection is established. The issue here is if the client is  
trying to do clear but the server requires encryption - the client has  
already sent a cleartext data packet before the server tells it isn't  
permitted to. For RPCs such as StoreData, this can obviously result in  
undesired information disclosure.

The proposal at the meeting was that rxgk should have a 'security  
header', which it prefixes to its payload (whether that payload be a  
cleartext copy, an encrypted block, or a MIC followed by cleartext).  
This header would contain a field indicating the security level of the  
packet, allowing the server to know what security level incoming  
packets have.

A client which has not been challenged by a server would then be  
required to always transmit its packets encrypted until the challenge  
is complete. The server must always accept encrypted packets, even if  
the connection's negotiated security level is lower.

Comments?

Simon.