Stories
Slash Boxes
Comments

News for nerds, stuff that matters

Slashdot Log In

Log In

[ Create a new account ]

ESR on Quake 1 Open Source Troubles

Posted by CmdrTaco on Mon Dec 27, 1999 11:31 AM
from the stuff-to-read dept.
ESR as chimed in to say his bit on the recent quake problems that popped up following the source release. Its definitely a problem that will happen again and something that needs to be handled. Read what he has to say about it.

The following was written by ESR. You know who he is already ;)

The case of quake cheats

The open-source community got a lump of coal in its Yule 1999 stocking from renowned hacker John Carmack, the genius behind id Software and such games as Castle Wolfenstein, Doom, and the Quake series. Carmack's .plan file noted a problem that has swiftly emerged since the Quake 1 source was released under GPL; it seems that some people have used their ability to modify the Quake client as a mechanism for cheating.

This may at first sight seem a trivial issue -- who cares if a few testoterone-pumped teenagers cheat at a shoot-em-up game? But in today's internetworked world, countermeasures against Quake cheating arguably provide an important laboratory model for cases that are decidedly not trivial, such as electronic commerce, securities trading, and banking.

The Quake model is made particularly relevant by its open-source connection. Open source advocates (including me) have been making a strong argument over the last two years that open-source software such as Linux and Apache is fundamentally more secure than its closed-source competitors. Cryptographers have long understood that no encryption system can really be considered well-tested until it has been energetically and repeatedly attacked by experts who have full knowledge of the algorithms it uses. Open-source advocates argue that there is nothing special about cryptography but its high stakes -- that, in general, open peer review is the only road to systems which are not merely accidentally secure by obscurity, but robustly secure by design.

Carmack, therefore, caused a bit of a flutter on Slashdot when he went on to to suggest that only a pair of closed-source encryption programs could solve the Quake-cheating problem. The problem, as he correctly pointed out, is that asking the open-source client to verify its own correctness won't work; a sufficiently clever cracker could always write a client that would simulate the right kinds of responses and then cheat.

A debate ensued, with several people pointing out that trusting the client half of a client-server pair is bad security policy whether the client code is open or closed. Fundamentally, there's no way for the server to be sure it isn't talking to a clever simulation of `correct' behavior. Thus, opening the source to Quake 1 didn't create security problems, it merely exposed one that was already present (and exploitable, and for all anyone knew already secretly exploited) in the design of the game.

Carmack weighed in to make clear that the Quake-cheating problem is subtler than many of the debators were assuming. It's not possible for a cheating client to give a player infinite ammunition or life points; the server does not in fact trust the client about these things, and manages them itself. This is correct design; whether or not it's open-source, a bank should not depend on a customer's client software to tell the bank what the cutomer's balance is!

Carmack observes that "the [cheating] clients/proxies focus on two main areas -- giving the player more information than they should have, and performing actions more skillfully."

The serious "more information" cheats depend on a performance hack. In order to hold down the number of updates of the Quake world it has to pass to the client, the server gives the client information about the location of objects and opponents that the player can't yet see, but might be able to see before the next update. The server then counts on the client not to make those things visible until they "should" be (e.g, until the user gets to a particular location in the maze the client is simulating). A cheating client can reveal an opponent seconds before the player would turn the corner and expose himself to fire.

The "more skillfully" cheats substitute the computer's speed and accuracy for tasks that the server and other players expect the player's hands and brain to be performing. Carmack talks about "aim bots" which automatically lock the player's gun onto visible opponents and fire it with inhuman accuracy.

And indeed it's hard to see how either of these sorts of cheats can be prevented given an open-source client and no way independent of the client itself to check that the client is honest. Thus Carmack's suggestion of a closed-source Quake-launcher program that would take a checksum of the client binary, communicate with the server to make sure the binary is on an approved list, and then handle communication with the server over a cryptographically-secured channel.

Carmack's argument seems watertight. What's wrong with this picture? Are we really looking at a demonstration that closed source is necessary for security? And if not, what can we learn about securing our systems from the Quake case?

I think one major lesson is simple. It's this: if you want a really secure system, you can't trade away security to get performance. Quake makes this trade by sending anticipatory information for the client to cache in order to lower its update rate. Carmack read this essay in draft and commented "With a sub-100 msec ping and extremely steady latency, it would be possible to force a synchronous update with no extra information at all, but in the world of 200-400 msec latency [and] low bandwidth modems, it just plain wouldn't work." So it may have been a necessary choice under the constraints for which Quake was designed, but it violates the first rule of good security design: minimum disclosure.

When you do that, you should expect to get cracked, whether your client is open or closed -- and, indeed, Carmack himself points out that the see-around-corners cheat can be implemented by a scanner proxy sitting between a closed client and the server and filtering communicatiuons from server to client.

Closing the source of the client may obscure the protocol between client and server, but that won't stop a clever cracker with a packet sniffer and too much time on his hands. Carmack confirms that even without the packet sniffer or access to source there are a variety of ways to flush out anticipatory information, ranging from tweaking the gamma and brightness on your screen to banish shadows to hacking your graphics card's device drivers to do transforms of the world model (such as making walls transparent).

We're back in familiar territory here; the history of computer security is littered with the metaphorical (and in some cases maybe literal) corpses of people who thought security through obscurity was sufficient. Crackers love that kind of naivete and prey on it ruthlessly.

The aim-bot cheat is trickier to prevent. The difference between human and aim-bot actions is measured only in milliseconds of timing. Changing the protocol to stop it from leaking information won't banish aim-bots; it would take the server doing statistical analysis of player action timings to even detect them, and (as Carmack points out) "that is an arms race that will end with skilled human players eventually getting identified as subtle bots."

Fortunately, the aim-bot cheat is also much less interesting from a general security point of view. It's hard to imagine anything but a twitch game in which the client user can cheat effectively by altering the millisecond-level timing of command packets. So the real lesson of both cheats may be that a closed-source program like Carmack's hypothetical secured program launcher is indeed a good idea for security -- but only if you're a hyperadrenalized space marine on a shooting spree.

(Any computer game at which computers are better than most humans has analogous cheats, some of which aren't even detectable in principle. Carmack observes "correspondence chess has been subverted from its original intent by players using computers." This isn't something security design can fix.)

If Quake had been designed to be open-source from the beginning, the performance hack that makes see-around-corners possible could never have been considered -- and either the design wouldn't have depended on millisecond packet timing at all, or aim-bot recognition would have been built in to the server from the beginning. This teaches our most important lesson -- that open source is the key to security because it changes the behavior of developers.

Open source keeps designers honest. By depriving them of the crutch of obscurity, it forces them towards using methods that are provably secure not only against known attacks but against all possible attacks by an intruder with full knowledge of the system and its source code. This is real security, the kind cryptographers and other professional paranoids respect.

It's the kind of security the Linux kernel and the Apache webserver have, and the kind people victimized by the Melissa and Chernobyl viruses and Back Orifice and the latest Microsoft-crack-of-the-week don't have. If you're betting your personal privacy or your business's critical functions on the integrity of software, it's the kind of security you want, too.

To recap, the real lessons of the Quake cheats are (a) never trust a client program to be honest, (b) you can't have real security if you trade it away to get performance, (c) real security comes not from obscurity but from minimum disclosure, and most importantly (d) only open source can force designers to use provably secure methods.

So, far from being a telling strike against open source, the case of the Quake cheats actually highlights the kinds of biases and subtle design errors that creep into software when it's designed for closed-source distribution and performance at the expense of security. These may be something we can live with in a shoot-em-up, but they're not tolerable in the running gears of the information economy. Avoiding them is, in fact, a good reason for software consumers to demand open source for anything more mission-critical than a Quake game.

Eric S. Raymond

This discussion has been archived. No new comments can be posted.
ESR on Quake 3 Troubles | Log In/Create an Account | Top | 339 comments (Spill at 50!) | Index Only | Search Discussion
Display Options Threshold:
The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
(1) | 2 | 3 | 4
  • Quake1, not Quake3 by D|sturbed (Score:2) Monday December 27 1999, @06:37AM
  • Quake cheating by jormurgandr (Score:1) Monday December 27 1999, @06:38AM
  • Whee-hoo by Foogle (Score:2) Monday December 27 1999, @06:42AM
  • Re:Quake cheating by giuoco (Score:1) Monday December 27 1999, @06:42AM
  • by billybob jr (106396) on Monday December 27 1999, @06:44AM (#1442485)
    Quake was written for single player and for multiplayer over a lan like doom. When internet play became an issue and quake's inability to do it well, especially for modem connections, quakeworld was written. Keep in mind that Quake wasn't designed with internet play in mind. It was hacked in afterwards.
  • Right by Yebyen (Score:1) Monday December 27 1999, @06:44AM
  • Re:NETREK by Foogle (Score:2) Monday December 27 1999, @06:45AM
  • Saw this coming by Sludge (Score:1) Monday December 27 1999, @06:45AM
  • All due respect . . . by gnarphlager (Score:2) Monday December 27 1999, @06:46AM
  • That's what I said yesterday! by Anonymous Coward (Score:1) Monday December 27 1999, @06:46AM
  • Re:Quake cheating by RainbowSix (Score:1) Monday December 27 1999, @06:46AM
  • ESR bright ideas appear once again! by papo (Score:1) Monday December 27 1999, @06:47AM
  • Nitpicks (Score:5)

    by CrusadeR (555) on Monday December 27 1999, @06:47AM (#1442493) Homepage
    Some issues with this article:

    A) This is the Quake 1 source Rob, not Quake 3 :)
    B) ESR states:
    If Quake had been designed to be open-source from the beginning, the performance hack that makes see-around-corners possible could never have been considered -- and either the design wouldn't have depended on millisecond packet timing at all, or aim-bot recognition would have been built in to the server from the beginning. This teaches our most important lesson -- that open source is the key to security because it changes the behavior of developers.
    I fail to see how if Quake had been open source software from the beginning, how the situation would be any different. Quake is a fast action game that is often played over connections with high latency, the dependency on "millisecond packet timing" is inherent to the game itself due to how quickly entities manuever in the game world. Similarly, trying to build aim bot detection into the server from the beginning, as you suggested, would run into the same wall its hitting now: some players have enough skill that some form of statistical analysis would conclude they are using an aiming proxy.
  • Quake 1 src no lump of coal by poopie (Score:2) Monday December 27 1999, @06:48AM
  • Nice handwave (Score:5)

    by Tim Behrendsen (89573) on Monday December 27 1999, @06:49AM (#1442495) Homepage

    Fortunately, the aim-bot cheat is also much less interesting from a general security point of view. It's hard to imagine anything but a twitch game in which the client user can cheat effectively by altering the millisecond-level timing of command packets. So the real lesson of both cheats may be that a closed-source program like Carmack's hypothetical secured program launcher is indeed a good idea for security -- but only if you're a hyperadrenalized space marine on a shooting spree.

    Uh, with all due respect, THAT IS THE MAJOR PROBLEM!! You in essense admit that this problem is unsolvable, then go on to say that it's really not a problem that anyone that's important (to you) cares about. Well, trivializing the problem by mocking quake fans doesn't make the problem go away, and it doesn't change the fact that open source has made the problem infinitely worse.

    Then, of course, you go on to conclude that open source is the ultimate answer (while giving no evidence).

    ESR, normally I'm with you, but this essay was major smoke and mirrors.


    ---

  • Re:That's what I said yesterday! by Foogle (Score:1) Monday December 27 1999, @06:49AM
  • Re:Quake cheating by giuoco (Score:1) Monday December 27 1999, @06:50AM
  • ESR hits home once again by Johan Jonasson (Score:2) Monday December 27 1999, @06:51AM
  • Re:Whee-hoo by lnovak (Score:2) Monday December 27 1999, @06:51AM
  • by taniwha (70410) on Monday December 27 1999, @06:53AM (#1442501) Homepage Journal
    People want to be able to distribute encrypted IP (chip designs) to customers for simulation. There are a couple of reasons for this - IP providers want to protect their product - and they want to protect themselves from liability should the customer change the source and then blow a lot of money on building a bogus chip.

    Traditionally this problem has been handled in a closed source world with a public key/private key sort of setup with the private key (for decryption) and encryption algorithm embedded in the compiler binary somewhere.

    This leaves the IP provider's product at the mercy of the vendor of the CAD tool

    A few years back this all fell apart for Verilog, a popular simulation compiler, for various reasons the language runtime is extensible, it was also interpreted - this left a version of the compiler which contained symbols. An anonymous poster to comp.lang.verilog pointed out how to write a gdb script that set a breakpoint in 'yylex' and extracted the decrypted token from IP.

    All hell broke loose .... eveyone who'd ever sent encrypted IP to customers was now open to the world...

    So - back to the topic - does anyone have any idea how one can do this sort of thing in an Open Source world - send people secret stuff to be used by an OS program without giving away the secret? Given that the only schemes I've seen to do this rely on security-by-obscurity (as above) I suspect it just can't be done.

  • Aimbot problem by color of static (Score:2) Monday December 27 1999, @06:54AM
  • by Binestar (28861) on Monday December 27 1999, @06:55AM (#1442505) Homepage
    It was the original Netquake v1.06. You know, with no client-side prediction and lag on your movements. The trade offs that John Carmack and crew made were made to make the gameplay better, not to make it so you can't cheat. I for one would rather risk the remote chance that I would be playing against someone who rewrote part of the code to cheat, than play with a 250ms delay to all of my input on the game again.

    One thing that isn't really taken into account in all the stories are that most quake servers (Mine included) have a steady base of regular players, and that player base pretty much stays the same. We are all good friends who play and wouldn't play with cheat things like that and if they did we would know shortly after they started because they would get instantly better than they were the day before. Improvments like that don't happen in games like this.

    I would say that ESR doesn't play quake much, and just wants to get his jabs in to give the closed source development sceme a blacker eye than it already has.
  • This could happen even if Quake remained closed by jsm (Score:1) Monday December 27 1999, @06:55AM
  • Quake BotScript? by spRed (Score:1) Monday December 27 1999, @06:55AM
  • well, yes, but. by Kaht (Score:2) Monday December 27 1999, @06:56AM
  • Hacker Game -- Best Kung Foo by Anonymous Coward (Score:1) Monday December 27 1999, @06:56AM
  • He already made that point by xant (Score:2) Monday December 27 1999, @06:56AM
  • Open source would change nothing. by Adversary (Score:2) Monday December 27 1999, @06:56AM
  • Re:OpenSource Doesn't work by phil reed (Score:2) Monday December 27 1999, @06:56AM
  • Real problem. by Zurk (Score:1) Monday December 27 1999, @06:56AM
  • No big deal by bkeeler (Score:2) Monday December 27 1999, @06:57AM
  • crack.quake.g.pl by Jikes (Score:1) Monday December 27 1999, @06:58AM
  • mabye it's just me by asad (Score:2) Monday December 27 1999, @06:58AM
  • Re:That's what I said yesterday! by phil reed (Score:2) Monday December 27 1999, @06:58AM
  • Re:Whee-hoo by zyklone (Score:1) Monday December 27 1999, @06:59AM
  • Re:Whee-hoo by Judah Diament (Score:1) Monday December 27 1999, @06:59AM
  • What's Important to Carmack is Unimportant to ESR by humphrm (Score:2) Monday December 27 1999, @07:00AM
  • Re:Nice handwave by lnovak (Score:1) Monday December 27 1999, @07:00AM
  • Re:Quake 1 src no lump of coal by UnclPedro (Score:1) Monday December 27 1999, @07:00AM
  • Re:OpenSource Doesn't work by Judah Diament (Score:1) Monday December 27 1999, @07:01AM
  • Re:Whee-hoo (Score:3)

    by Nimmy (5552) on Monday December 27 1999, @07:01AM (#1442524) Homepage
    I disagree completely. It is true that ESR is making a big stretch, one that many people would think is invalid. And it is true that Quake has little to do with e-commerce per se. But ESR is not actually comparing Quake to e-commerce. He is comparing development methodologies and their outcome. His points (such as "Don't trust a client") apply just as well to E-commerce as they do to Quake. This is why we see very few client-side e-commerce sites (I can't think of any).

    ESR is not saying very much about the Quake problem. He gives no solutions of further insight into Quake. What he is trying to warn people about is that this is nothing new, that Quake still has a closed-source security method that only now has been opened. One can't expect the magical "Open Source" pixie dust to fix fundemental security flaws.

    The most important point which ESR makes (or at least hints at) is the crux of the open-source security paradym (sorry, I know people hate that word, but it does fit here): Open Source Makes Security Problems Easier to Find for BOTH GOOD AND EVIL. That last clause is what makes the "debate" between open and closed source security types interesting. Big companies see that it is easier for crackers to break an open source solution and shy away. Open source types see it makes it easier to make a quality product and embrace it. BOTH VIEW ARE CORRECT. That is the crux of the issue, so well demonstrated by Quake. That is not quite ESR's point, but he at least implies it. With this in mind, ESR makes much more sense.
  • The Real World (Score:3)

    by SheldonYoung (25077) on Monday December 27 1999, @07:02AM (#1442526)
    There is no way to make software that runs on the client side totally secure. It is always possible to hack the client to your advantage because it runs on your computer, and you can fiddle the bits in your computer any way you want.

    No matter what kind of proxy or checksummed client they use it'll be hackable because it's runnable. It's the same reason that copy-protection, secure audio formats and DVD can all be cracked... at some point code has to be executed that the user can change.

    Even if Carmack does as ESR suggests and only send full world updates, that will not prevent a proxy that jumps every time a rocket is fired at your feet or any number of other subtle helpers.

    The only solution might be to run all the code on the server. Yes, really. Imagine the client side just being a 2D graphical dumb terminal just drawing frames from the server. It can't be 3D because it would be hackable at the driver-level again.

    I didn't say it would be easy, just the only way to make it truly secure.
  • Re:Aimbot problem by phil reed (Score:2) Monday December 27 1999, @07:02AM
  • Why retreat? by pwagle (Score:2) Monday December 27 1999, @07:04AM
  • Re:Hacker Game -- Best Kung Foo by eh (Score:1) Monday December 27 1999, @07:04AM
  • Re:He already made that point by Zigg (Score:2) Monday December 27 1999, @07:05AM
  • Re:Open Source: Choice of the Cheater's Generation by Judah Diament (Score:1) Monday December 27 1999, @07:06AM
  • It *IS* a game by mr (Score:1) Monday December 27 1999, @07:06AM
  • Who cares about Quake? What about day-trading bots by NateTG (Score:2) Monday December 27 1999, @07:07AM
  • Re:Whee-hoo by Foogle (Score:1) Monday December 27 1999, @07:08AM
  • Re:OpenSource Doesn't work by MikeBabcock (Score:2) Monday December 27 1999, @07:09AM
  • ...but performance is critical! by Skyshadow (Score:2) Monday December 27 1999, @07:09AM
  • And the conclusions were much the same. That time, it was with cheating on Netrek. (Script Kiddies seem more interested in big numbers than learning skills.)

    The solution there was to distribue the source as Open Source, but only allow "blessed" binaries to connect to "blessed" servers.

    This hasn't been fool-proof. Plenty of people have cracked Netrek's security, and whilst it's good at keeping the drearier riff-raff out, all that really does is give you a better class of riff-raff. It doesn't solve anything.

    How, then, to prevent cheating? That depends on how much the client does, and what counts as cheating. The server can always prevent cheating, with anything under it's direct management, by simply controlling throughput. No more than N operations per unit of time effectively prevents souped-up clients with super-human reflexed, for example.

    Controlled throughput also gives you much better Quality Control, as you can effectively ensure that no connection suffers undue lag at your end.

    As for anything else, this calls for the ability to access points in the code by address. If you can do that, then the server can call routines to check for validity in a way that can't easily be bypassed by simply rigging the checks.

  • Re:Here's a similar problem from the vlsi cad worl by Nimmy (Score:1) Monday December 27 1999, @07:10AM
  • Re:That's what I said yesterday! by Foogle (Score:1) Monday December 27 1999, @07:10AM
  • Re:Nice handwave by billybob jr (Score:1) Monday December 27 1999, @07:11AM
  • Ahem, this is KINDA SILLY. by Shanoyu (Score:1) Monday December 27 1999, @07:12AM
  • Re:Here's a similar problem from the vlsi cad worl by Rei (Score:2) Monday December 27 1999, @07:13AM
  • Re:Aimbot problem by color of static (Score:2) Monday December 27 1999, @07:13AM
  • Can Someone Explain This to Me? by Roofus (Score:2) Monday December 27 1999, @07:17AM
  • Re:Quake 1 src no lump of coal by ESR (Score:1) Monday December 27 1999, @07:18AM
  • Re:Nice handwave by Sloppy (Score:2) Monday December 27 1999, @07:18AM
  • Opening up vs. developing openly by Lalo Martins (Score:1) Monday December 27 1999, @07:18AM
  • Re:Nice handwave by Tim Behrendsen (Score:2) Monday December 27 1999, @07:20AM
  • Re:mabye it's just me by ranton (Score:2) Monday December 27 1999, @07:20AM
  • Re:NETREK by Unbeliever (Score:2) Monday December 27 1999, @07:21AM
  • Re:We had the version of Quake that ESR refers to. by law (Score:1) Monday December 27 1999, @07:21AM
  • Re:He already made that point by Foogle (Score:1) Monday December 27 1999, @07:22AM
  • Not strictly true... by Tim Behrendsen (Score:1) Monday December 27 1999, @07:23AM
  • Re:You can't be serious by KaosDG (Score:2) Monday December 27 1999, @07:25AM
  • Re:Here's a similar problem from the vlsi cad worl by Tim Behrendsen (Score:1) Monday December 27 1999, @07:25AM
  • Re:Right by sracer9 (Score:1) Monday December 27 1999, @07:25AM
  • Re:Here's a similar problem from the vlsi cad worl by taniwha (Score:2) Monday December 27 1999, @07:26AM
  • by SuperKendall (25149) on Monday December 27 1999, @07:28AM (#1442573)
    I think ESR has got it wrong, the AimBot is by far a much worse problem than a player being able to see around corners - a good player essentially can tell where people are anyway based on sound cues or knowing how far behind him someone was. It might give a slight advantage, but not the godlike ability to clean out a room that an AimBot gives.

    However, I thought of a possible solution - one way to stop AimBots might be for the server to send a few "fake" players to the client with either transparent skins, or embedded in the walls, or perhaps randomly "clone" the user just behind himself every now and then. A real player would never see these "shadows" but an AimBot would fire at these pahntom targets and that could trigger the server to shut him down.

    As an added bonus, an AimBot set to use the rocket launcher firing at a fake target a foot away would bring a little justice to the bot user.
  • How? by Anonynous Coward (Score:2) Monday December 27 1999, @07:29AM
  • Open Source Commercial Games? by semiriot (Score:1) Monday December 27 1999, @07:30AM
  • Re:...but performance is critical! by Sloppy (Score:1) Monday December 27 1999, @07:32AM
  • Re:Nice handwave by Tim Behrendsen (Score:1) Monday December 27 1999, @07:33AM
  • Just more obscure ..... by taniwha (Score:1) Monday December 27 1999, @07:35AM
  • A Launcher program will not suffice. by victim (Score:2) Monday December 27 1999, @07:38AM
  • Opening Source for Windows by musique (Score:2) Monday December 27 1999, @07:39AM
  • Wouldn't work by Tim Behrendsen (Score:1) Monday December 27 1999, @07:40AM
  • Re:Stopping AimBots - a possible solution. by Anonynous Coward (Score:2) Monday December 27 1999, @07:42AM
  • ESR, just stick to counting your fscking millions by Anonymous Coward (Score:1) Monday December 27 1999, @07:43AM
  • ESR is less and less credible by the second by Dan Guisinger (Score:1) Monday December 27 1999, @07:43AM
  • Not exactly by IntlHarvester (Score:2) Monday December 27 1999, @07:45AM
  • Re:ESR fails to mention other cheats by Anonynous Coward (Score:1) Monday December 27 1999, @07:47AM
  • Re:NETREK by pberry (Score:1) Monday December 27 1999, @07:48AM
  • Re:ESR fails to mention other cheats by Anonynous Coward (Score:1) Monday December 27 1999, @07:48AM
  • Thoughts by Hard_Code (Score:2) Monday December 27 1999, @07:50AM
  • Re:Not strictly true... by billybob jr (Score:1) Monday December 27 1999, @07:51AM
  • Re:Whee-hoo by Nimmy (Score:1) Monday December 27 1999, @07:51AM
  • I'm already working on a CS/ss bot APT by Mongoose (Score:1) Monday December 27 1999, @07:56AM
  • by David A. Madore (30444) on Monday December 27 1999, @07:57AM (#1442601) Homepage

    ...is just something that has never worked, will never work, and cannot work. Every now and then someone tries to use it (the DVD Consortium for example), arguing that ``yes, in general security through obfuscation is bad, but in this particular case it will work''; wrongo: it always fails.

    This is made abundantly clear in Bruce Schneier's famous book on cryptography.

    This is not an open source vs. proprietary software problem, it is a disclosed source vs. obfuscation problem. This is not an ethical issue, it is a completely practical one, and it seems that the lesson needs to be learned one more time.

    Carmack's suggested closed-source binary loader can be spoofed much more easily than by using a proxy. Indeed, it contains an obvious race condition: how is the loader to check that the program hasn't been altered between the time it is checksumed and the time it is run? A simple ptrace() should do the trick for that, and, in fact, anything invented along similar lines.

    As another poster pointed out, what we need is to have Quake clients act as simple 2D rendering clients. But that means the server would have to perform all the 3D calculations and that is hopeless. We want the client to perform the calculations without being able to spoof them; so the problem amounts to the following:

    (``Computing in `hostile environment' ''). You are given a powerful computer and you want to use it to perform a computation. However, you cannot trust the computer. You want to perform the computation in such a way that the computer should be (a) unable to fool you (i.e. give a wrong answer and make you think it is the right answer), and (b) unable to learn anything from the computation (in the Quake case, learn more than the final, 2D, result). The computer can refuse to carry out the computation, of course, and you cannot prevent this, but it cannot make you think it carried out the computation whereas in fact it is fooling you.

    This is a purely theoretical problem, and it has been studied. A cryptologist told me (but was unable to give a reference, unfortunately) that the problem is solved in the theoretical sense: computation in hostile environment is possible (using strong crypto). This makes it theoretically possible to have a solution to the problem using just one secret key, stored on the server and everything else being disclosed (basically: the server sends the encrypted computation to the client, the client performs the computation without knowing what it is calculating, sends it back to the server, the server verifies that the computation was correctly carried out, and sends the decrypted result to the client). Unfortunately, this solution is completely unpractical (the bandwidth required is simply too large).

    So, the Right Thing fails. IMHO, this is not, however, an excuse to do the Wrong Thing. If the problem has no solution, then the problem is not a problem!

  • Re:NETREK by nweaver (Score:1) Monday December 27 1999, @08:00AM
  • Re:NETREK by Gosub (Score:1) Monday December 27 1999, @08:03AM
  • Re:The Real World, Quake, and ESR's article. by Sketch (Score:2) Monday December 27 1999, @08:04AM
  • Re:Quake1, not Quake3 by clyons (Score:1) Monday December 27 1999, @08:04AM
  • Silk Purse from a Sows Ear is just manipulation. by Cvandal (Score:1) Monday December 27 1999, @08:07AM
  • The Art of War by csfenton (Score:2) Monday December 27 1999, @08:07AM
  • by Tony Hammitt (73675) on Monday December 27 1999, @08:10AM (#1442608)
    Guess what would happen if the windows source code suddenly became open? All kinds of cracks would appear. We've just proven it.

    They open the source for Quake1, and within days, there's people out there playing cheat clients. It wouldn't take even hours for the world's windoze boxes to all be cracked if they opened the source code. Anyone depending on windoze would simply be out of business.

    You can't go from 'security' through obscurity to open source. That is the main problem. All of this other stuff about the details of how people cheat when it happens are not the core issue. The core issue is that the development model cannot change from closed to open source without exposing all of the security flaws. Suddenly there are thousands of eyes looking at the code for weaknesses where before there were only dozens (who were mainly interested in functionality, not security. Why should they care; it's closed source?)

    So, how do we fix it? We could develop games entirely open source. Who's going to pay for that? People don't buy support contracts for games; they rarely buy the manuals.

    We could try to convince Carmack to release the code in stages. Release the server code first to get all of the bugs and cracks worked out. Then release the clients after most of the hacks have been anticipated. This is still suboptimal, with optimality being the unlikely open-source case. Anyone have any better ideas?

    Yes, I know, there are plenty of open source projects. They usually only have a dozen developers at most. I doubt they would pass a security audit. I know most open source net games are crackable, I've done it myself.

    Maybe in the future they will give the code a security audit before they release it. They're doing this as a publicity stunt anyway, they might as well get the most out of it.
  • How about the netcode in "Starsiege Tribes?" by Kit Lo (Score:1) Monday December 27 1999, @08:15AM
  • Re:NETREK by bnenning (Score:1) Monday December 27 1999, @08:19AM
  • hmm... by ph43drus (Score:1) Monday December 27 1999, @08:23AM
  • Re:Here's a similar problem from the vlsi cad worl by toast0 (Score:1) Monday December 27 1999, @08:24AM
  • Cheating for what gain? by jelwell (Score:2) Monday December 27 1999, @08:25AM
  • Re:Quake1, not Quake3 by Ghistelwcholm (Score:2) Monday December 27 1999, @08:25AM
  • Moderate UP => Can Someone Explain This to Me? by SLOfuse (Score:1) Monday December 27 1999, @08:30AM
  • Re:NETREK by Unbeliever (Score:2) Monday December 27 1999, @08:30AM
  • Re:Open Source Commercial Games? by whoop (Score:1) Monday December 27 1999, @08:33AM
  • Re:Here's a similar problem from the vlsi cad worl by bhurt (Score:2) Monday December 27 1999, @08:37AM
  • The lesson to be learned . . . by palutke (Score:1) Monday December 27 1999, @08:37AM
  • Re:NETREK by Unbeliever (Score:2) Monday December 27 1999, @08:42AM
  • Re:Wouldn't work (well, maybe it would) by Edward Kmett (Score:1) Monday December 27 1999, @08:42AM
  • Protocols for online worlds by Bryce (Score:2) Monday December 27 1999, @08:45AM
  • OT: Now a new game by dsweet (Score:1) Monday December 27 1999, @08:46AM
  • Re:Open Source Commercial Games? by Edward Kmett (Score:1) Monday December 27 1999, @08:47AM
  • The bigger picture by gilga_mesh (Score:1) Monday December 27 1999, @08:47AM
  • Re:Can Someone Explain This to Me? by Anonymous Coward (Score:1) Monday December 27 1999, @08:48AM
  • Aimbots by magi (Score:1) Monday December 27 1999, @08:49AM
  • Re:Quake 1 src no lump of coal by seyed (Score:1) Monday December 27 1999, @08:51AM
  • Re:ESR bright ideas appear once again! by Dfiant (Score:1) Monday December 27 1999, @08:52AM
  • ESR your missing the oppertunity.. by Weezul (Score:2) Monday December 27 1999, @08:52AM
  • Re:How? by ppanon (Score:1) Monday December 27 1999, @08:54AM
  • Re:Aimbot problem by rhk (Score:1) Monday December 27 1999, @08:55AM
  • Re:The Art of War by rhk (Score:1) Monday December 27 1999, @09:05AM
  • pre-made/signed binaries - a solution? by Coventry (Score:1) Monday December 27 1999, @09:13AM
  • Re:Nice handwave by funaho (Score:2) Monday December 27 1999, @09:15AM
  • Distributed.net has the same problem by Paul Lamere (Score:2) Monday December 27 1999, @09:16AM
  • Rules of the game by BeerBaron (Score:1) Monday December 27 1999, @09:16AM
  • Well, let's see where we are. by Animats (Score:1) Monday December 27 1999, @09:17AM
  • ESR is out of his field, and completely wrong. by kbonin (Score:2) Monday December 27 1999, @09:18AM
  • Re:Quake BotScript? by J Story (Score:2) Monday December 27 1999, @09:19AM
  • Why not fix it? by archmedes5 (Score:1) Monday December 27 1999, @09:29AM
  • Re:Here's a similar problem from the vlsi cad worl by taniwha (Score:1) Monday December 27 1999, @09:30AM
  • Re:Nitpicks by Mao (Score:1) Monday December 27 1999, @09:33AM
  • Let's do this the way Doom is done... by talonyx (Score:1) Monday December 27 1999, @09:33AM
  • Re:Stopping AimBots - a possible solution. by BigD42 (Score:1) Monday December 27 1999, @09:37AM
  • proposal by pavel (Score:1) Monday December 27 1999, @09:38AM
  • Re:Nice handwave by otomo_1001 (Score:1) Monday December 27 1999, @09:43AM
  • Re:Can Someone Explain This to Me? by TrentC (Score:1) Monday December 27 1999, @09:46AM
  • Security needs to be *designed* in. by cananian (Score:1) Monday December 27 1999, @09:47AM
  • Re:Moderate UP => Can Someone Explain This to Me? by drew (Score:2) Monday December 27 1999, @09:48AM
  • Re:Not strictly true... by Defiler (Score:1) Monday December 27 1999, @09:49AM
  • Re:Nitpicks (Score:4)

    by WNight (23683) on Monday December 27 1999, @09:55AM (#1442664) Homepage
    Designing Quake in open source wouldn't solve the problem of writing aim bots. Aim bots take that knowledge the play has, or could easily have (by looking behind them) and acting upon it.

    But, designing Quake as open source, and seeing how easy a hack like making players show through walls, for instance, would be could be expected to lead to different design choices.

    Quake uses the PVS and PHS (potentially visible/hearable sets. The PVS is the list of all 'areas' visible from the player's location, and the PHS is the PVS and all PVSes...) for knowing when to send information about one player to the next. In some fairly connected levels, the PHS is *huge* and the client knows where the other players are far in advance. This could be changed to use an algorithm to determine the quickest route for both entities to take before being visible to each other, and if that's under the update delay (ie, likely to happen before the next upate) then the information would be sent. Otherwise, it wouldn't. Thus, cheaters would have a much smaller window of opportunity.

    One other 'bug' is that if the player models are replaces with a big pointy model, where each axis has a big arrow, you can see these arrows far ahead of the actual player, even through walls and floors (in the other player is in your PHS). Writing the code, in many spots, to generate errors if the models were above a certain maximum reasonable size, and if they passed through world brushes, would make this a non-trivial hack, unlike now where you load the models into an editor, add a couple of points, and boom, can see people through walls.

    The skin, the image that wraps around the wireframe, can be altered. A white skin naturally shows up better in shadows than a dark one. In Quake some colors are 'full bright', meaning that they 'emit light'... A skin made up on these literally is visible in complete darkness. If they changed the renderer to not use these drawing modes for characters skins, this would eliminate this easy for of cheating. A skilled programmer could add this in, but it would take a lot more work than simply opening up MS Paint and flood-filling a PCX...

    Also, the design of the basic game could change a little. Quake 1 had few instant-hit weapons. The shotgun and the lightning gun are the only ones. Bots of course favor instant-hit weapons because they don't have to predict the enemy's movements, they simply line up the crosshairs and fire. The shotgun isn't a big deal because it's fairly low damage and the spread makes it less effective at medium or long range. The lightning gun is a Quake1 bot's favorite weapon. Knowing this, they could have designed the game to reduce the effectiveness of the lightning gun in such a way.

    Perhaps it's heavy and induces some movement lag on the character, preventing instant-turn shot... These are many ways the game could have been changed to prevent there from being a perfect weapon for the bots. And really, the lightning gun, and later the railgun, are no-brainer guns. All it takes are reflexes and a fast computer/vid card. Other weapons take thought, to predict the enemy movements, something a bot isn't good at.

    There are *many* design changes they could have, and pretty well, would have to have made, if Quake 1 was designed with open source in mind.

  • Re:It'll take a LOT more than a cable modem.. by Defiler (Score:2) Monday December 27 1999, @09:55AM
  • by WNight (23683) on Monday December 27 1999, @10:03AM (#1442666) Homepage
    And, there's the problem. An untrustable system being expected to run a trusted program. It's theoretically impossible, even given perfect implementation.

    If they want this to work, they'd need to sell black-box PCs, which exist for this purpose only, and can be passed an encrypted file, decrypt it, check for bugs, and return a 'yes' or 'error in area x,y'...

    The system doesn't need to be, and in fact, shouldn't be, closed source.

    It just has to be designed in such a way that any tampering with it will render it unoperable before it's opened to the point where data can be read off of it. Nothing is 100%, so they'd need to set a target budget, like the model that is simply encased in black plastic is rated to take $100k to break, the model shipped in plastic, in a safe, guarded by the marines, is estimate to take $5M to break, etc.

    But the machine can't be modifiable by anyone 'untrusted' at any point. All modification need to be done by the trusted vendor of the product, who one expects to be bonded and insured, etc etc..

    Only then can trusted programs be run on the system and be expected to be safe.
  • how netrek really works by tap (Score:2) Monday December 27 1999, @10:03AM
  • What's really going on here. 'Cheating' (whatever) by Coleco (Score:1) Monday December 27 1999, @10:05AM
  • Slashdotters thinking like PHBs by JabberWokky (Score:2) Monday December 27 1999, @10:14AM
  • Re:ESR is out of his field, and completely wrong. by ESR (Score:1) Monday December 27 1999, @10:31AM
  • by John Carmack (101025) on Monday December 27 1999, @10:33AM (#1442678)
    Thank you.

    Lots of people were just waving their hands saying "Netreck solved this years ago" without being specific.

    As you say, it isn't really a solution. If there were a couple million people playing netrek, there would be cheat proxies for it just like there are for Quake.

    I think everyone can agree that it just isn't possible to solve the problem completely, you can only make it more difficult, which is exactly what the netrek solution is -- release binaries without the exact source and make it difficult to decypher.

    John Carmack
  • Looking for solution: open generated closed code by magi (Score:1) Monday December 27 1999, @10:36AM
  • Re:Stopping AimBots - a possible solution. by Hard_Code (Score:2) Monday December 27 1999, @10:36AM
  • Digitally signed binaries by philg (Score:1) Monday December 27 1999, @10:37AM
  • Ranked play? by kenro (Score:1) Monday December 27 1999, @10:46AM
  • Re:And you people wanted to open the Windows sourc by EAVY (Score:1) Monday December 27 1999, @10:47AM
  • Re:ESR hits home once again by rapett0 (Score:1) Monday December 27 1999, @10:47AM
  • Re:Can Someone Explain This to Me? by Inoshiro (Score:2) Monday December 27 1999, @10:48AM
  • Re:Security through obfuscation... by osmanb (Score:1) Monday December 27 1999, @10:53AM
  • If you can run it, you can copy it by Gleef (Score:2) Monday December 27 1999, @10:55AM
  • Re:And you people wanted to open the Windows sourc by iCEBaLM (Score:2) Monday December 27 1999, @10:57AM
  • This can't be solved with technology alone... by tietokone-olmi (Score:1) Monday December 27 1999, @10:58AM
  • Re:Here's a similar problem from the vlsi cad worl by Gleef (Score:2) Monday December 27 1999, @11:01AM
  • This is a question of community more than security by Deven (Score:1) Monday December 27 1999, @11:04AM
  • Re:It'll take a LOT more than a cable modem.. by SheldonYoung (Score:2) Monday December 27 1999, @11:19AM
  • Re:The Real World by Gleef (Score:2) Monday December 27 1999, @11:21AM
  • Re:Here's a similar problem... by cnflctd (Score:1) Monday December 27 1999, @11:23AM
  • Re:Nitpicks by C=64 (Score:1) Monday December 27 1999, @11:25AM
  • Re:This argument has been hashed out before by ClarkEvans (Score:1) Monday December 27 1999, @11:31AM
  • A reply to some of the issues raised in replies... by SuperKendall (Score:2) Monday December 27 1999, @11:34AM
  • I know... by Enahs (Score:1) Monday December 27 1999, @11:38AM
  • Re:Quake1, not Quake3 by Cramer (Score:1) Monday December 27 1999, @11:41AM
  • Re:how netrek really works by Unbeliever (Score:1) Monday December 27 1999, @11:43AM
  • Re:Moderate UP => Can Someone Explain This to Me? by rcw-work (Score:2) Monday December 27 1999, @11:44AM
  • Re:Here's a similar problem from the vlsi cad worl by sjames (Score:2) Monday December 27 1999, @12:07PM
  • Irrelevant by Anonymous Coward (Score:1) Monday December 27 1999, @12:08PM
  • Player Responsibility by evil_deceiver (Score:1) Monday December 27 1999, @12:11PM
  • Am I nuts? or could it be this easy? by Anonymous Coward (Score:2) Monday December 27 1999, @12:11PM
  • Re:Digitally signed binaries by Jamie Zawinski (Score:2) Monday December 27 1999, @12:17PM
  • Re:how netrek really works by sheldon (Score:1) Monday December 27 1999, @12:23PM
  • Re:NETREK by sheldon (Score:1) Monday December 27 1999, @12:28PM
  • Netrek is different from Quake in many ways... by sheldon (Score:1) Monday December 27 1999, @12:37PM
  • Re:ESR is out of his field, and completely wrong. by Artie FM (Score:1) Monday December 27 1999, @01:02PM
  • BotQuake by Shadox Tsurien (Score:1) Monday December 27 1999, @01:02PM
  • Re:Can Someone Explain This to Me? by Talonius (Score:1) Monday December 27 1999, @01:06PM
  • Untrusted Clients Can be secure.. by sysop (Score:1) Monday December 27 1999, @01:06PM
  • The only solution is social by ziegler (Score:1) Monday December 27 1999, @01:12PM
  • Security through obscurity *does* work by Ian Bicking (Score:2) Monday December 27 1999, @01:38PM
  • Re:Here's a similar problem from the vlsi cad worl by _peter (Score:1) Monday December 27 1999, @01:45PM
  • Open source ideal from this point of view? No. by khaladan (Score:2) Monday December 27 1999, @01:58PM
  • Why not Armbots? by pdp8 (Score:1) Monday December 27 1999, @01:58PM
  • Re:Just more obscure ..... by Rei (Score:1) Monday December 27 1999, @01:58PM
  • Re:ESR is out of his field, and completely wrong. by kbonin (Score:1) Monday December 27 1999, @01:59PM
  • see the reply below by Rei (Score:1) Monday December 27 1999, @02:02PM
  • Wrong. by Convergence (Score:1) Monday December 27 1999, @02:03PM
  • Re:Thoughts by Rei (Score:1) Monday December 27 1999, @02:15PM
  • Quake cheating - nothing new by turnstep (Score:1) Monday December 27 1999, @02:30PM
  • I have a problem with this essay by Capt Dan (Score:2) Monday December 27 1999, @02:31PM
  • We need to compromise.... by skrew (Score:1) Monday December 27 1999, @02:53PM
  • The sky isn't falling! by pingbak (Score:1) Monday December 27 1999, @02:54PM
  • A New Form of Quake by kaniff (Score:1) Monday December 27 1999, @03:04PM
  • Re:The Art of War by skrew (Score:1) Monday December 27 1999, @03:10PM
  • Re:Stopping AimBots - a possible solution. by thantos (Score:1) Monday December 27 1999, @03:26PM
  • Re:The Real World by SheldonYoung (Score:2) Monday December 27 1999, @03:44PM
  • You can't fix the cheating problems. Here's why. by Ricardo Casals (Score:1) Monday December 27 1999, @03:47PM
  • This is about people and policy, not code by Stinking Pig (Score:1) Monday December 27 1999, @04:03PM
  • Quake vrs Real Life by MikeFM (Score:1) Monday December 27 1999, @04:20PM
  • Re:The Real World by Gleef (Score:2) Monday December 27 1999, @04:42PM
  • Re:Just more obscure ..... by taniwha (Score:1) Monday December 27 1999, @05:54PM
  • Re:ESR bright ideas appear once again! by gregm (Score:1) Monday December 27 1999, @06:05PM
  • Re:Stopping AimBots - a possible solution. by SuperKendall (Score:1) Monday December 27 1999, @06:05PM
  • Re:Stopping AimBots - a possible solution. by SurfsUp (Score:2) Monday December 27 1999, @06:23PM
  • Security is an illusion by gregm (Score:2) Monday December 27 1999, @06:37PM
  • Grow up! by EEEthan (Score:1) Monday December 27 1999, @06:41PM
  • It cannot be done. by Squeamish Ossifrage (Score:1) Monday December 27 1999, @07:05PM
  • FWIW by GFD (Score:2) Monday December 27 1999, @07:28PM
  • Re:A Launcher program will not suffice. by matso (Score:1) Monday December 27 1999, @08:10PM
  • Re:The Real World by SheldonYoung (Score:2) Monday December 27 1999, @08:35PM
  • Re:Nitpicks by WNight (Score:2) Monday December 27 1999, @09:26PM
  • Re:Here's a similar problem...maybe not impossible by WNight (Score:2) Monday December 27 1999, @09:31PM
  • Re:Here's a similar problem... by WNight (Score:2) Monday December 27 1999, @09:35PM
  • A Question of Speed by nsonneveld (Score:1) Monday December 27 1999, @09:37PM
  • Re:Nitpicks by WNight (Score:2) Monday December 27 1999, @09:38PM
  • Re:Nitpicks by WNight (Score:2) Monday December 27 1999, @09:44PM
  • Re:This could happen even if Quake remained closed by Billings (Score:1) Monday December 27 1999, @10:29PM
  • "the real lessons of the Quake cheats" by evil_deceiver (Score:1) Monday December 27 1999, @10:50PM
  • Re:Quake1, not Quake3 by RainBrot (Score:1) Monday December 27 1999, @11:36PM
  • Obscurity vs. disclosure - just a sliding scale by tc (Score:1) Tuesday December 28 1999, @12:14AM
  • Re:NETREK by clyons (Score:1) Tuesday December 28 1999, @01:47AM
  • Idea (don't bother flaming me) by LordLobo (Score:1) Tuesday December 28 1999, @02:54AM
  • I have the solution! by Sq (Score:1) Tuesday December 28 1999, @03:09AM
  • Re:Stopping AimBots - a possible solution. by LarsG (Score:2) Tuesday December 28 1999, @03:27AM
  • Re:hmm... by lnovak (Score:1) Tuesday December 28 1999, @03:31AM
  • Re:Stopping AimBots - a possible solution. by Otto (Score:2) Tuesday December 28 1999, @04:02AM
  • Re:And you people wanted to open the Windows sourc by Otto (Score:1) Tuesday December 28 1999, @04:06AM
  • Re:Wrong. by tomk (Score:1) Tuesday December 28 1999, @04:06AM
  • Re:Here's a similar problem from the vlsi cad worl by bogado (Score:1) Tuesday December 28 1999, @04:09AM
  • Re:Not strictly true... by Otto (Score:2) Tuesday December 28 1999, @04:17AM
  • Why is it that software designers are too Leet? by Lumpy (Score:1) Tuesday December 28 1999, @04:22AM
  • Re:We had the version of Quake that ESR refers to. by BigTom (Score:1) Tuesday December 28 1999, @04:37AM
  • Re:Security through obfuscation... by David A. Madore (Score:2) Tuesday December 28 1999, @04:58AM
  • How about a closed compiler? by cr0sh (Score:1) Tuesday December 28 1999, @06:09AM
  • Statistical analysis of cheats and CRYPTONOMICON by NZheretic (Score:1) Tuesday December 28 1999, @06:44AM
  • Re:Whee-hoo by dweezil (Score:1) Tuesday December 28 1999, @07:22AM
  • Quake Robot wars. Quakemon - got to blat them all! by NZheretic (Score:1) Tuesday December 28 1999, @07:34AM
  • Re:Quake cheating by theonetruekeebler (Score:1) Tuesday December 28 1999, @08:24AM
  • Open source would not have helped by Kenneth L. Hamer (Score:1) Tuesday December 28 1999, @09:38AM
  • Re:ESR hits home once again by sql*kitten (Score:1) Tuesday December 28 1999, @11:12PM
  • Lumps of coal by slim (Score:2) Wednesday December 29 1999, @03:24AM
  • Re:Security through obscurity *does* work by slim (Score:2) Wednesday December 29 1999, @03:27AM
  • Re:Can Someone Explain This to Me? by slim (Score:2) Wednesday December 29 1999, @03:45AM
  • Re:No big deal by slim (Score:2) Wednesday December 29 1999, @03:49AM
  • Re:And you people wanted to open the Windows sourc by D. Taylor (Score:1) Sunday January 02 2000, @10:01AM
  • Re:NETREK by sdt (Score:2) Monday January 03 2000, @10:53AM
  • Re:Stopping AimBots - a possible solution. by Raphael (Score:2) Monday January 10 2000, @04:53AM
  • 83 replies beneath your current threshold.
(1) | 2 | 3 | 4