I do agree that downloadable code produces a virus potential, but it depends on how you structure the process. You did download the hlds binary right, how do you know that it didn't have a virus? Through careful use of digital signatures you should be able to secure this process (to a reasonable degree). I haven't though about the overheads of this process, but they can't be too demanding.
The problem with a checksum (say MD5 or SHA) is that its a static check. Break it and the client is hacked forever. What cheat detection needs is dynamics. It needs to be agile with respect to the time frame of the hacks so they can be countered. And this means it needs to be able to change hourly... Right now server ops are in a bad place. For ever new hack or update to an existing hack they need to grab a new version of an anti-hack tool. This places a great burden on server ops. The writers of the anti-hack tools also have a hard time keeping up. What is need is some way of removing the overhead from the server ops. In my model Valve (or some subsiduary...) produces anti-hack "codelets". These codelets are distributed to servers when they start up (and on map change) (with digital signatures of course :). A server only needs a selection of codelets, a random set, so that the odds of picking up any hack are good over a few days. Then the server sends the codelet to the client and waits for a response (within tight timelimits). The client can verify the codelet with a CA to make sure its not a virus and then execute it. The output can then be returned to the server and checked against expected values. When a new hack comes out, propagate a new codelet to detect it. When one is overcome remove it from the pool of possible codelets. You can use various methods to make the codelets themselves dynamic. This model is similar (if not the same?) as PB's, and while I do not know the details of how PB works I have chatted with tony about some aspects of it... Now, this scheme can be broken by "hacked" servers. It can't corrupt (put viruses) on clients but it can allow cheating clients without others knowing. The scheme also has some vunerabilities that you need to code around (like hyjacking DNS for eg....) BUT it will provide a low overhead, dynamic (agile) anti-cheat tool :) leming wrote: > Executable code downloaded and run is a spawning pool for viruses, but > good idea nonetheless. Maybe have my original idea of a checksum being > used on the client dll that was loaded by the game client-side, and > compare it to a checksum that the server the player is playing on had. > If the checksums dont match, the client is intervening with the loading > of the proper mod, and/or the server has things messed up. Also an idea > would be to not only stop at checking the client dll being loaded, but > to also do a check on the memory that the mod was loaded into. This > would prevent client-side hacks from changing around the executable > memory to do what they wanted to do. A little extra temporary overhead, > but the process can be run low-profile on the system, thus consuming > less processing power, leaving more for the game rendering etc etc (I > wouldn't want to suggest something that would leave the kids losing 3 > fps to check if they are cheating...) > -- > leming > > At 13:49 1/5/2002 +1100, you wrote: > >> hopefully Valve have some better ideas ;) >> The client should be treated as untrusted and the server trusted (if >> the server is untrusted also then you are screwed :) So you just need >> to implement some checking on the client. >> My idea would be to have executable code be downloaded from the server >> to the client to be run (ala PB), this make a hackers life hard. >> However, it can lead to vunerabilities in the client if the server >> does go bad :( Other models can use Valve (WON,Sierra,etc) as a >> trusted third party for the "codelets", but it means more >> infrastructure for them... > > > _______________________________________________ > To unsubscribe, edit your list preferences, or view the list archives, > please visit: > http://list.valvesoftware.com/mailman/listinfo/hlcoders -- Alfred Reynolds [EMAIL PROTECTED] _______________________________________________ To unsubscribe, edit your list preferences, or view the list archives, please visit: http://list.valvesoftware.com/mailman/listinfo/hlcoders