The door to John Marris's lab was open, but Asher knocked anyway.
"Come in," the cryptologist said.
Marris had the neatest lab in the Facility. Not a speck of dust was visible. Other than a half dozen manuals stacked carefully in one corner, his desk was empty except for keyboard and flat-screen terminal. There were no photographs, posters, or personal mementos of any kind. But, Asher reflected, that was typical of Marris: shy, withdrawn, almost secretive about his personal life and opinions alike. Wholly devoted to his work. Perfect qualities for a cryptologist.
What a shame, then, that his current project-such a short and apparently simple code-was proving so elusive.
Asher closed the door behind him, sat down in the sole visitor's chair. "I got your message," he said. "Any luck on the brute-force attacks?"
Marris shook his head.
"The random-byte filters?"
"Nothing intelligible."
"I see." Asher slumped in the chair. When he'd gotten the e-mail from Marris asking him to stop by at his earliest convenience, he'd felt a surge of hope that the man had deciphered the code. Coming from the phlegmatic Marris, "earliest convenience" was practically a shouted plea for immediate consultation. "What is it, then?"
Marris glanced at him, then looked away again. "I was wondering if, perhaps, we were approaching this decryption from the wrong angle."
Asher frowned. "Explain."
"Very well. Last night I was reading a book on the life of Alan Turing."
This was no surprise to Asher. A consummate academic, Marris was working toward a second doctorate, this time in the history of computing-and Alan Turing was a seminal figure in early computer theory. "Go on."
"Well…do you know what a Turing machine is?"
"You'd better refresh my memory."
"In the 1930s, Alan Turing posited a theoretical computer known as a Turing machine. It was composed of a 'tape,' a paper ribbon of arbitrarily extendable length. This tape was covered with symbols from some finite alphabet. A 'head' would run over the tape, reading the symbols and interpreting them, based on a lookup table. The state of the head would change, depending on the symbols it read. The tape itself could store either data or 'transitions,' by which he meant small programs. In today's computers, the tape would be the memory and the head the microprocessor. Turing declared this theoretical computer could solve any calculation."
"Go on," Asher said.
"I started thinking about this code we're trying to decrypt." And Marris waved his hand at the computer screen, where the signal emitted by the sentinel's pulses of light sat, almost taunting in its brevity and opacity:
"I wondered: what if this was a Turing tape?" Marris continued. "What would these zeros and ones do if we ran them through a Turing machine?"
Slowly, Asher sat forward. "You're suggesting those eighty bits…are a computer program?"
"I know it sounds crazy, sir-"
No crazier than the very fact of our being down here, Asher thought. "Please continue."
"Very well. First, I had to break the string of zeros and ones down into individual commands. I made the assumption that the initial values, five zeros and five ones, were placeholders to signify the length of each instruction-each digital 'word' thus being five bits in length. That left me with fourteen five-bit instructions." Marris tapped a key, and the long string of numbers vanished, to be replaced by a series of ordered rows:
Asher stared at the screen. "Awfully short for a computer program."
"Yes. Clearly, it would have to be a very simple computer program. And in machine language-the most basic, and universal, of digital languages."
Asher nodded. "And then?"
"When I got to my office this morning, I wrote a short routine that would compare these values against a master list of standard machine-language instructions. The routine assigned all possible instructions to the values, one after another, and then checked to see if any workable computer program emerged."
"What makes you think these-whoever is sending us the message uses the same kind of machine language instructions that we do?"
"At a binary level, sir, there are certain irreducible digital instructions that would be common to any conceivable computing device: increment, decrement, jump, skip if zero, Boolean logic. So I let the routine run and went on with my other work."
Asher nodded.
"About twenty minutes ago, the routine completed its run."
"Did those fourteen lines of binary translate to any viable computer programs?"
"Yes. One."
Asher felt his interest suddenly spike. "Really?"
"A program for a simple mathematical expression. Here it is." Marris punched another key, and a series of instructions appeared on his monitor.
Asher bent eagerly toward it.
"What does the program do?" Asher asked.
"You'll notice that it's written as a series of repeated subtractions, coded in a loop. That's the way you do division in machine language: by repeated subtraction. Well, it's one way-you could also do an arithmetic shift right-but that would require a more specialized computing system."
"So it's a division statement?"
Marris nodded.
Asher felt surprise and mystification mingle with the sudden, intense excitement. "Don't hesitate, man. What's the number they're dividing?"
"One."
"One. And it's being divided by what?"
Marris licked his lips. "Well, you see, that's the problem, sir…"