that manipulative or just natural?'

'Thank you.' Taya forced a smile. 'I didn't… I didn't like the way Emelie talked about him.'

'Neither did I.' He stood, reached down, paused, and then opened his hand. 'Stand up.'

She took it, grateful for the contact. His hand was cold but steady, his fingers thinner and harder than his brother's. She let him pull her to her feet.

'Okay.' She squeezed his hand, then wiped her face one last time. 'I think I'm all right now.'

'Good.'

She took a moment to adjust her flight suit, shoving his handkerchief into her pocket. Then she straightened her shoulders and walked back to the programmers. He followed.

'Is everything okay?' Kyle asked, giving her a quick glance.

'Yes. Just — just delayed reaction.' She bit her lip and looked down at the punch cards lined up on the table. 'So, what are they?'

'Well, they're obviously Great Engine cards.' Kyle made room for her and Cristof. 'You can tell because they're wider and longer than normal cards and made out of tin instead of heavy paper. The numbers on the edge identify the card's order in the program. You've got twenty-five cards out of a deck of a hundred here.'

'Is that a lot? A hundred?'

'No. In fact, it's a very small program, for the Engine.'

'What good would part of a program do anybody?' Cristof asked, pushing up his glasses as he leaned over the table to study the numbers. 'What's the code in front of the number?'

'It tells the operator which program the card belongs to,' Victor said. 'After you've dropped a box of cards the first time, you realize how important it is to label them correctly.'

'OCAE stands for Oporphyr Council Analytical Engine, the official name of the Great Engine,' Isobel explained.

'SA stands for Security Access,' Victor added. 'Also known as Labyrinth Code.'

Kyle tapped the numbers that followed. 'Version three, copy two, card twelve of one hundred. We're not sure what these numbers are, but we think it's part of a randomizing formula.'

'The Labyrinth Code is the Engine's security program, right?' Taya picked up one of the cards, examining its block of punches with wonder. She'd never seen the Great Engine or one of its cards before. 'So if somebody got this, they could use the Engine?'

'Well, they'd need seventy-five more cards, first,' Lars said. 'My guess is that whoever stole these couldn't get the rest. A deck of tin cards gets heavy fast, so they're probably stored in four boxes of twenty-five each, and your thief only had a chance to grab one.'

'It'd be easier to smuggle the program out one box at a time,' Victor added. 'He might have been planning to go back for the rest later.'

'Since these cards are labeled as copy two, our guess is that they're part of the backup copy, which would be stored someplace on site in case one of the original cards got damaged,' Emelie said. 'A backup would be easier to steal than a working program. It could take months before anybody noticed a backup was missing.'

Cristof straightened.

'How hard would it be to reconstruct the whole program if all you had were these twenty-five cards?'

The programmers looked at each other.

'Impossible,' Kyle said at last. 'It's called Labyrinth Code for a reason. Five different teams worked on it, each team under orders to create a code with no recognizable pattern. Then one high-security team assembled a metaprogram to govern each of the other five codes.'

'People say it's impossible to write a program that's entirely random,' Victor said, stroking his beard. 'Humans aren't random creatures. But five teams trying to be random will create a program that's random enough for most purposes.'

'But this set must include more than one team's work,' Taya said. 'I mean, if each team created equal programs, then each team would have twenty cards each, right?'

'If each part were exactly equal; but that may not be the case. Even if it is, it still leaves three teams’ subroutines unknown, and the metaprogram would have required some rewriting of the original code. In addition, if we're right about the last numbers on the cards, this code can be fed into the Engine in different orders, which would make it even harder to replicate.' Lars saw that he was losing her. 'Okay, let me explain. Labyrinth Code is fed into the Great Engine once a day and once a night to make sure nobody can just dance into the Engine Room and run a new program while nobody's looking. The first time unlocks the Engine, the second time locks it again. Each of the five subroutines in the Code needs to be run, but they can be run in different orders. So let's say you're trying to guess a code with five variables. One's a number, one's a letter, one's a color, one's the name of animal, and one's, uh—'

'A musical note,' Isobel suggested.

'Right. Pretty tough to crack, right? Lots of possible answers for each variable. But the code is going to be even harder to crack if the order of the five variables is shuffled each day — one day the musical note is the first key, and the next day the animal is the first key, and so on.'

Taya nodded.

'So even if your thief manages to get all hundred cards, meaning he knows the note and animal and color and whatever else I said, he's still got to know which order to run the cards in on any given day. There are five variables — the subroutines — which means twenty-five possible order permutations.' Lars shook his head. 'Your thief sneaks in some night when the guards aren't looking and runs the program to unlock the Engine. Let's say it takes half an hour to run the cards through, and that's a modest projection. He doesn't get the order right the first time, so he's got to run the cards through in the next configuration. If his luck is really rotten, it could take him seven and a half hours to hit the right order. Figure about four hours on average.'

'That's a long time to be feeding cards into the Engine.' Emelie folded her arms over her chest. 'Someone's sure to notice the thief working — a technician, or a lictor, or somebody.'

'And then, don't forget that the thief still has to run whatever program he broke into the Engine to use in the first place,' Lars finished. 'Which could take several more hours. And then another half hour to reset Labyrinth Code so nobody knows he was there.'

'Assuming he cares,' Victor added.

'He'd save time if he knew what order he needed to run the program in. Who would know?' Taya asked. The programmers shrugged, looking at each other.

'That's not our area,' Kyle said.

'The chief technician, maybe,' Lars ventured.

'I'd randomize the order,' Isobel said. 'Toss some dice each evening to decide. That would make it even harder to guess.'

'Dice have six sides. The program only has five subroutines,' Kyle pointed out.

'Okay, draw lots. You know what I mean.'

'Would anyone on the Council know what order the cards should be run in?' Cristof asked.

'I don't see why,' Lars replied. 'Decaturs don't work on the mighty machine. Even Alister handed his programs over to the engineers when he was done. None of us have ever fed a program into the Great Engine ourselves.'

'You said Alister helped write the Labyrinth Code,' Taya said, looking at Emelie. The programmer nodded and Victor looked vindicated.

'That's what he told me. He was just starting University. He said one of his professors was so impressed by his portfolio that she brought him onto the project to do code clean-up, and in no time at all he was on one of the teams.'

'Is this his piece of code?' Cristof asked.

'Hard to say.' Kyle sat down and poured himself a fresh mug of beer. As if it were a signal, the rest of the programmers sorted themselves out and began refreshing their drinks. 'Do you know anything about programming, exalted?'

'I don't need another lecture,' Cristof said, with a touch of his usual acerbity. 'A simple yes or no will suffice.'

Kyle grinned.

Вы читаете Clockwork Heart
Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату