Saturn Run (21 page)

Read Saturn Run Online

Authors: John Sandford,Ctein

Tags: #Science Fiction, #Thriller

Another vagrant thought crossed his mind.
What if the aliens . . .

No.

Crow launched a secure window request to Santeros’s office and cross-conferenced it to the science adviser. At this distance, the round-trip time for a data packet was just shy of two minutes; it’d take a while for the security computers to complete their handshaking. While he waited for them to respond, he reviewed the ship’s logs and status reports. Ten minutes later, he got the three-way alert and switched his attention to Santeros. He kept his report screens open. With a several-minute round-trip time at light speed, this was going to be a slow conversation. Santeros launched without preamble.

“Good morning, Mr. Crow. I presume you’re calling with regards to last night’s power problem on the
Nixon
. Jacob briefed me this morning. I was given to understand it was a singular event and under control.”

“Unfortunately, no. Reactor 2 just safed itself again. Dr. Johansson is proceeding as if it is an engineering fault of some sort, but I don’t think she really believes that. Nor do I.”

Four minutes. Vintner spoke up. “Run us through your thinking on that.”

“One failure could just be a bad byte of data, noise in the line,” Crow said. “That’s not supposed to get through, but it could. Two in twelve hours is statistically unbelievable. Hardware log checks didn’t turn up the phantom pressure drop. It’s a repeating problem that only appears in the control software’s data. The two power systems are supposed to be identical. Physically, it’s not possible to make them
exactly
the same, so there could be a hardware fault or construction error in one that isn’t present in the other. The control code, though, is identical, exactly
duplicated in both systems. There should be no fault in one, that doesn’t show up in the other. If it was a simple fault, we should be able to isolate it and fix it. The engineers have not been able to do that.”

Crow went back to reviewing logs for a bit less than four minutes.

Vintner said, “Got it. If the software’s identical, one set can’t be throwing repeated faults when the other isn’t. Ergo, they’re not identical.”

“Meaning we’re looking at sabotage?” asked Santeros.

Vintner: “It’s possible the two systems are running different software builds. They’re not supposed to be, but mistakes happen. That’ll be easy to check on. Gimme a moment,” he said, as he launched a separate call to the code farm that had written the control systems.

“Crow, short form: What was the objective, if it was sabotage?” asked Santeros.

“There’re several possibilities.” Crow ticked off on his fingers. “On its face value, it slows us down by forcing us to run at half power. The thing is, it doesn’t slow us down enough—we still beat the Chinese there. But whoever is responsible for this may not know that. Or it could be a warning shot across our bow—if we don’t turn back, worse things will happen. Or it could be the sabotage was only partially successful. Maybe both reactors were supposed to go down and one hack didn’t take, or they didn’t have time to finish hacking both systems.

“The problem is, there are so many who have the motive and means. On a venture as ad hoc as this one, there’ll always be opportunities. The Chinese are almost too obvious a candidate. Doesn’t mean they wouldn’t, especially if they were sure we couldn’t trace it back. Then there’s Brazil, India, the United Central American States . . . Did you know most of our code jockeys come from UCAS these days?”

Four minutes and Vintner was back. “The logs check. There’s been version coherency on board for at least two full generations of software. The build uploads are done simultaneously to the ship’s two power systems after they’ve passed QC on Earth.”

“What does that mean?” Santeros asked.

“It means that if it is a software problem, either the version logs have been falsified to spoof coherency or an Easter egg was inserted outside the normal process. Either way, someone’s messing with us,” Crow said.

Minutes passed.

Santeros chewed her pen, an ancient and anxious reflex she kept well hidden from the public. “Okay, fellows. Anything else, Mr. Crow?”

Crow said, “One last point. The timing. If it’s an Easter egg, the egg didn’t go off until we were solidly past solar system escape velocity. If the intent was to shut down both reactors, and if we couldn’t fix it, we wouldn’t ever be coming back. We’d be on a one-way trip into interstellar space.”

24
.

Becca rubbed her eyes, clutched her coffee, and stared at her half-eaten bagel as though it were a life preserver. She could use a life preserver: she was drowning in data.

In this case, no news was bad news. She was no closer to figuring out why the reactor had shut itself down than she’d been twenty hours earlier. Looking around the conference room, she could see that everyone else looked as bad as she felt. No consolation that. Everyone there—Fang-Castro, Crow, Greenberg, a couple of code jockeys, and Darlington, the ever-present videographer, recording the conference for posterity.

Self-consciously, she brushed her fingers over her hair. She was still getting used to having it cropped really close, but with the three-minute shower limit it seemed the most practical thing to do. The blond buzz cut she saw in the mirror each morning still startled her. If the marines took short and fat women . . . heh . . . she yawned: it had been another all-nighter, running on coffee and stims.
Really, I’m too old for this all-nighter shit—that’s grad student stuff,
she thought.

Fang-Castro rapped her glass and Becca forced herself to focus.

“Becca,” Fang-Castro began, “any miracles?”

“No. I’m really sorry, ma’am, but I don’t have anything new to report. I wish I could say we’ve found a flaw in design or in engineering or a bug in the code or something that we just plain did wrong. I can’t say that. Everything looks perfect on Reactor 2, hardware and software. Since we know there’s something wrong, I don’t feel like I dare fire it up again until I understand what the problem is.”

“I agree with Becca, on the hardware side,” said an engineer, Larry Trout, who had her back. She felt upset, frustrated, and irrationally furious at the reactor that wasn’t behaving itself, but she didn’t feel alone. She had the best engineers to work with, ever. “There’s no physical
reason for the safeties to have gone off. Not once, definitely not twice. It’s gotta be a software problem.”

Becca nodded unhappily. “But we haven’t found it. The diagnostics and the test simulations all come up nominal. Maybe they’re faulty, too, but we get identical results from both reactors’ computers, and their codes match down to the last bit.”

Crow raised a finger. Fang-Castro said, “Yes, Mr. Crow?”

“I don’t think you’ll find any difference in the operating code,” Crow said. “I chatted with some of my colleagues, yesterday, about ways we could sabotage the power system, if we’d wanted to. They had some ideas. Especially about hiding the Easter egg even if you went looking for it. Most of the sabotage isn’t buried in the operating code, it’s in the data logs.”

Fang-Castro looked puzzled, but Becca immediately saw the possibilities, and they did not make her happy. “I know where you’re heading with this, Mr. Crow. I don’t like it. Go on . . .”

Crow nodded. “The operating code for both reactors is supposed to be identical and the build versions check. If someone had sabotaged only one of those, it would turn up in a byte-by-byte comparison of the systems. There are gigabytes of operating code, but that kind of comparison only takes seconds. Maybe a minute or so, if you’re looking for something that isn’t resident on the system but in the libraries.”

“The data logs are another matter. These have to be substantial?”

Becca made a mental estimate, then said, “Oh yeah, we log every bit of sensor data we can about the reactor performance in real time. It’s probably a hundred terabytes a day, maybe more.”

“Right. What my colleagues pointed out is that the log records for the two power plants will not be identical, because this is real-time data collected on real physical systems, and they don’t perform exactly the same. You can’t do a simple byte-by-byte comparison of the data logs, because they shouldn’t be the same. That’s where you hide the Easter egg.”

Fang-Castro said, “I’m not quite seeing it. Something has to put the bad data there, right? We should be able to find that.”

Crow smiled. “Ah, that’s the tricky part. The operating system is constantly checking the sensor readings and the data logs to make sure everything’s running within normal parameters. Bad data can creep into such a system. In fact, it’s almost guaranteed to.”

Becca chimed in, “For example, the operating system rejects negative pressure values. A noisy bit might switch the sign on a pressure reading once in a blue moon. You don’t want the system to respond to that and try to kick the pressure on the lines up. So there’ll be a line of code in the software that says, ‘If you see a negative value for pressure, ignore it and go look at the next value.’ Actually the range and type checking is a lot more complicated than that, but that’s the idea. It’s to make sure the system can’t get confused by obviously erroneous data.”

“Just so,” Crow said. “But suppose a small loophole were left in the variable checking. It would just take a few lines of code, but if it let the wrong kind of bad data through, that could trigger a fault or put the operating code into an unexpected state and open it up to all sorts of mischief. It might even be something as simple as a handful of code in the operating system that says something like, ‘If you read a pressure value of exactly 0.1876, then jump to the following library module.’”

Becca jumped in again. “Oh, I could get a lot more devious than that. We played pranks like this back at MIT. If I were being really nasty, I’d trigger a fault that would load code that was buried in the data log itself. Here’s how I’d do it in a couple of lines:

“When the attack code reads the trigger data, it loads the Easter egg code from the log. The Easter egg executes, and the first thing it does is erases its code from the log, along with the trigger data. Then it writes itself and new trigger data back into the log at a different point. That way the Easter egg is a moving target in memory and in time. That’s a lot harder to pinpoint. Next it triggers the reactor shutdown. Once it’s done that, it tells the operating system that it’s finished with this task and it’s relinquishing the block of memory it’s sitting in so that the operating system can load a standard library component back into that chunk of memory. It’s erased its footsteps—nothing to find.

“It’s all just strings of binary. The computer treats what’s in the
operating system as programming instructions and what’s in the logs as data values. But there’s no reason it can’t load data from the logs as a program to be run. Normally, that wouldn’t make any sense, it would just crash the operating system and it would reboot. But if there really is code buried in there . . .”

Crow nodded approvingly. “Considerably simpler than what my colleagues had in mind, but it’s a starting point. Have you ever thought of coming to work for me? I could find a place for you.”

“I like my world fine, thank you very much,” Becca retorted. “But I’ll take the compliment.”

Crow said, “If it is sabotage, we don’t know this is what the saboteur did or exactly how they did it, what they’re using as a trigger. Could be a specific data value, could be an untrapped out-of-bounds fault, there’s a dozen ways to do this. And because it only takes a few lines of code to set it off, looking through the code factory’s maintenance and revision records wouldn’t tell you anything. If the Easter egg were resident in the operating system, there’d be thousands of lines of code, and you’d find the discrepancy in the records. But all that’s in the operating system is the tripwire. A couple of lines of odd code? That gets written every day. It can be as simple as a few typographical errors getting corrected. Nobody reviews the quality control records for a couple of lines of code unless it misbehaves, and this is designed to never misbehave without the trigger.”

Fang-Castro: “So why has this affected only one reactor and not the other?”

Becca responded, “I can think of several reasons. Maybe someone didn’t have time to insert it into the logs on both systems. Or maybe it got inserted in and then flushed and scrubbed in one of the log modifications. The logs are just big repositories for the data that’s collected from the two power plants. Essentially they’re nothing more than storage bins, and beyond making sure that they’re operating the way they’re supposed to, we don’t worry about them much. We don’t treat them exactly the same way.”

Fang-Castro ran her hand through her hair. “So you’re saying we got lucky. Or half lucky, half unlucky.”

Crow said, “I doubt that luck has anything to do with it.”

“And we can’t bring both reactors back online?”

“If I do, I’m pretty sure the second one is just going to shut down again,” Becca said. “I don’t see what we’d gain by it. Plus, these emergency shutdowns are hard on the system. That’s not the way it’s designed to be run. We keep this up and we’re going to break something before the mission is done.”

“How about wiping the data logs and starting from scratch?” Fang-Castro asked.

Becca started to say, “We could try that . . . ,” but Crow cut her off in mid-sentence.

“That’s such an obvious thing to do that if I were in charge of this little hack, it’s the first thing I’d make sure wouldn’t work,” Crow said. “It’d be very easy to circumvent.”

Fang-Castro sighed. “So we’re stuck with half power indefinitely. Assuming that, and that things don’t get worse, I had Navigation work up a revised trajectory for us.” She pulled up an orbit plot on the wallscreen. “The dashed line is our old trajectory. The solid one our new course. You can see there isn’t much difference.” She zoomed in on the part of the trajectory near the sun. “The main difference is we don’t need to come in quite as tight by the sun, because we won’t be traveling as fast. A perihelion of thirty-five million kilometers will be close enough for the sun’s gravity to swing us onto the right vector for Saturn. That should make you a little happier, Becca.”

Becca smiled just a bit. “I’ll take what good news I can get, Captain. It’ll put a little less strain on the radiators. Plus, since we will be running at half power anyway, we won’t need to throttle back when we’re close to the sun, like we had to in our original plans. The radiators have more than enough capacity to shed the waste heat, even that close to the sun.”

Fang-Castro continued. “That’s good. Of course, the bad news is that with only half the thrust we had before, we’re not going to get there as
quickly. Fortunately we were already moving at a decent clip, fifty kilometers per second relative to the sun, when we lost Reactor 2. Consequently, the impact isn’t as bad as it could’ve been. When all is said and done, we’re going to arrive at Saturn about thirty days later than we’d originally planned. Our new ETA is January 23, 2068. That’s still more than three months ahead of the Chinese.”

She continued: “Mr. Crow, please have your colleagues put in some more thought on this problem and let me know if they come up with any ideas for eliminating the Easter egg from System 2. If there is one. In the meantime, Dr. Johansson, I suggest you reassign most of the System 2 personnel to System 1. Just keep as many people on 2 as you think you need to continue looking for the source of our problems there, but I want the priority to be pampering our one remaining power system and keeping it as happy as possible. So—let’s go.

“Ahh, Dr. Johansson?” Becca looked at Fang-Castro, who was tapping her slate. “I’m reinstating your med computer regimen. No more all-nighters. In fact, as soon as you finish reassigning personnel, and I’m giving you exactly one half hour to do that, I’m ordering you to go shower and get at least two hours’ sleep.” Fang-Castro looked at Becca more closely. “No, make that three hours. We’re out of crisis mode, and I need you in the best possible physical and mental shape to see that we don’t slip back into it. That’s all.”

Becca started to protest, but the look in Fang-Castro’s eye made it very clear that this was not a negotiating point. She closed her mouth, nodded, smiled a wan smile, and left the conference room.

Other books

Race to Refuge by Craig, Liz
Enigma of China by Qiu Xiaolong
Cuando éramos honrados mercenarios by Arturo Pérez-Reverte
Born Bad by Vachss, Andrew
Sanctuary of Mine by S. Pratt, Emily Dawson
The Death Dealers by Mickey Spillane
Burnt Paper Sky by Gilly MacMillan
The Commander's Daughter by Morganna Williams