[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

The transparent cache problem


> > And just how should that work if he doesn't have the key?
> OK, I assumed you were talking about a scenario like this:


> If I have missed something please point it out.

We're talking about different scenarios there. You're right in saying that the
client can do with the data whatever it wants as long as it has got the key,
and this is why it shouldn't get the key until shortly before it will be needed.

> > Having the source code won't help you there. Most of those algorithms are well
> > documented, so anyone who knows how something is encrypted can decrypt it-
> > provided that he has the correct key.
> I know that - my assumption is that the client actually -decrypts- the
> information, and that the player has access to the client code.

This is true, but the client isn't supposed to have the key until shortly
before it needs to know about the game data.

> I have a feeling I am not understanding you here. Please explain.

The thing I'm suggesting is not a solution, but an improvement over the current
situation; and it is only applicable to more or less static data. It won't help
with player stats, since those are needed in real-time, but it's useful for
game maps, where the player shouldn't know about areas he hasn't discovered
yet, but where client-side caching is required. The idea is to store the
player's immediate surroundings encrypted; with a different key for different
segments of the map. This way, the server only needs to transmit a key if the
client has requested to move the player's avatar. Since such a key is usually
smaller than the data it encrypts, the server can start transferring it shortly
before it is actually needed, thus reducing the advantage a player has from
cheating. The quality of cheat reduction then depends on the granularity of the
encrypted information and on the time span between the sending of the key and
the time at which the player actually needs it.

Obviously, this is a very specific 'solution'. It will only help for complex
worlds; simple worlds with big tiles won't need a lot of caching anyway.