Log in

No account? Create an account
Previous Entry Share Next Entry
"Thompson hack"
I'm reading a novel by Charles Stross on my Palm called Accelerando (which was recommended to me by icedrake, by the bye, and is, like Cory Doctorow's Down and Out in the Magic Kingdom, free for download). I just read a line and had to broadcast my geeky glee at understanding a bit of dialogue about a backdoor in an AI by way of the Thompson hack.

The "Thompson hack" (as it's called in the book, though I've never heard it directly referred to as such) refers to a hack that Ken Thompson, the creator of Unix (which is a story in itself—Multics wouldn't run his game, so he wrote his own OS) is reputed to have hacked the login program such that it would always let him in on a certain account name and password, even if that account didn't exist on the machine in question. Since Unix source code was easy for any system admin to get a hold of then, the problem was making this personal backdoor undetectable even when someone audited the source code. So, he hacked the C compiler to notice when it was being asked to compile login and secretly insert the code that would make the backdoor work.

The result is a program which does one thing, but has source code with says it does another. Of course, you might wonder, what if the system admin reads the source code for the C compiler and notices what it's written to do? What else: Thompson hacked a copy of the C compiler to recognise itself being compiled and to insert the appropriate code into the final executable compiler.

It makes me wonder whether Charles Stross just wrote a smart book, or if he just indulged himself by hiding geeky Easter eggs, knowing his target audience so well.

Edit: The original source of this story is noted in the Jargon File entry for "backdoor".

  • 1
You're a big nerd, my love :)

No one could ever prove the story true or false.
(some evidence suggests "true" however)
Amusing as all heck and why open-source compilers are suggested.... but also why they can bootstrap from other types of systems. Somewhere or another it can be proven the code hasn't had that introduced :)

  • 1