I'm not a part of the dev team (yet ?

There are some points that needs to be clarified before designing any anti-cheat system. I'll try here to put some ideas without being technical - just in case "security by obfuscation" is chosen.
What is "cheating" ?
(I'm here assuming we are talking about network play, I don't think there is any trustable way to prevent solo cheats - nor there is any interest in doing so)
Cheating can mean "using modified files", "modifying program data while runing", and "exploiting bugs or weaknesses in game engine".
For the first, how can a file be said "original" ? What can be called a reference file ? The one on the server we are playing, or the one originaly bundled with the engine ?
For the second, there are 2 ways I know : Either check that the data in the engine is correct (how ?) or prevent processes from modifying the memory.
For the last, I'm afraid there is no solution. And if glitches exploits can't be avoided, what should be the official position of the devteam ? Are they "features" - somehow disturbing to admit - or are they "situations players must avoid" - with the risk that an innocent can be caught by accident using an exploit.
Once a cheater is discovered, what should be done ?
The options here are quite vast, from suddently shutting down his game and reporting him as a cheater on a public place, to increasing some kind of "cheat point" account to make false positives less critical. To make a soft that people believe, something between those two extremes should be chosen : detect cheaters, but don't flame innocents.
What are the available network resources ?
Where our anti-cheat will be able to gather and transmit information ? The P2P model is quite problematic, because we can't trust all the peers. The client/server model is quite better, but is based on the assumption that the server is honest. The client/server/master server model is even better, but requires at least one "master server".
Here is a small explanation about the "master server" thing :
client : the client game, connection to a game server
server : the game server
master server : a trusted server, reachable from both the client and the server
When the server starts, he registers with the master server. Each client, when it connects to a server, registers with the master server, telling which server they joined. On client connection, the server asks if the master server knows the client that joined. If it does, it allows the connection, if not it refuses it.
Now that there is a trusted server (the master server), checks can be done with a great accuracy, and the client & server are equal from an anti-cheat point of view.
Choices I made in the last version (3rd) of my anti-cheat (which was never released, because I was exhausted of working alone on that project) :
-Architecture : client/server/master server
-Cheating is having files that are not known by the master server
-Every cheat is reported and the cheater is imediatelly kicked & flamed

That cunjunction of choices made it possible to have more than one master server : the important thing is that the clients & servers trust their master server. And the master server rewards their trust by telling them everything it detects.
If anybody from the dev team is interested with technical details, please PM me
