Zero Knowledge · Read

Chapter 65

Wrong Column

Marcus read every word on the page to Vlad.

“‘Which key,’” he read. “‘Ostvik Platform Root CA R2. RSA-2048.’ ‘How long. Eighty-one hours on a machine like Kestrel’s. Start time unknown.’”

He looked up from the notebook. “Unknown is going to be a hard sell.”

“Tough shit,” Samantha said.

The notebook was Doug’s. She had found it in the drawer under the microwave along with a dead lighter and a roll of stamps. Who the fuck uses stamps anymore, she thought to herself. The first two pages were a list of propane deliveries going back six winters. Gallons, the price per gallon, and now and then a note. Late again. Kid had no chains. She had started on the next page, which was blank.

Vlad was in Doug’s chair with the black case between his feet. His eyes were closed but she couldn’t tell if he was sleeping. He had brought the bulletin in at the eight o’clock window and read it to them standing by the door. Then he had sat down in the chair and not moved.

“Third one,” Vlad said, without opening his eyes.

“‘What to refuse. Any update signed under R2 alone. Accept it only if it also carries a PQ1 signature.’” Marcus stopped. “Alone meaning what?”

“Meaning alone,” said Vlad.

“Sam, help me here.”

“If an update comes in with only the old signature on it, the device throws it away,” she said. “It has to have the new one too. They can fake the old one. They can’t fake the new one.”

Marcus wrote throws it away in the margin next to her line.

“That’s the whole thing?” Seth asked. He was at the kitchen stove in his socks, stirring a pot of oatmeal with a wooden spoon. “Three lines?”

“Yes. That’s it,” said Samantha.

“I’ve paid consultants four hundred thousand dollars for less value.”

“They ripped you off,” said Vlad without opening his eyes.

Cooper sat at Seth’s feet and watched the spoon.

Samantha got down on the floor by the couch and took Marcus’s ankle in both hands. The red on his heel had pulled back from her last line by the width of a finger. She drew a new line inside the old one and wrote 8:40 next to it.

“Is that good?” Marcus asked.

“It’s smaller.” She put his foot back on the milk crate. “Wednesday you see a real doctor.”

“Why Wednesday?”

“By Wednesday they’re refusing R2 alone and nobody needs me for anything.”

“I’ll still need you.”

“You’ll need a doctor.”

“And I go home,” Seth said from the stove.

She took the notebook back from Marcus and read her third line again. She had said They can’t fake the new one like she knew it. She had never looked at PQ1.

“Vlad. I need the other tablet.”

He opened his eyes. “No.”

“I’m not writing anything. I want to read the log.”

“What log?”

“Every signature they make under PQ1 goes into a public log when they make it. It’s in the bulletin. Anybody can look.”

“Why do you want to look?”

“Because I just told Eleanor’s people to trust it.”

Vlad didn’t answer. She waited him out.

“The last time I gave you a screen,” he said, “you wrote four lines of the algorithm on it.”

“I’m not going to write anything. I’m going to read and count.”

He unzipped his jacket, took out the second tablet, and held it out. She took it.

He took the dish out to the porch rail. He was back inside in under four minutes.

“Two hundred and eight thousand signatures,” he said. “Everything they have signed since six o’clock in New York. I also got the standard, and the sample signatures NIST published with it.” He sat back down in the chair. “Fifty-one seconds.”

“Does it have Python?”

“It is my tablet.”

He was asleep before she found the charging cord, with his chin on his chest and one hand on the case. This time she could tell he was out cold.

The only outlet she could reach was low on the wall behind the woodstove, and the cord was short. She sat on the floor with her back against the logs and the tablet on her knees. Cooper wandered over, made two circles, and then lay down on her feet.

The standard was written for people who already understood it. She had to read the section on the sampler several times. She was a physicist, not a cryptographer, and she was exhausted. Vlad could have explained it to her in under a minute if he had been awake.

Near the front was a table with the two sizes of key side by side, FN-DSA-512 and FN-DSA-1024. One row was sigma. It set how wide the numbers inside a signature were supposed to spread. 165.74 for the small key. 168.39 for PQ1, the new, bigger one.

If she pulled the numbers out of the signatures and measured their spread, she should get 168.39.

Each signature was mostly a list of 1,024 numbers, packed tight. She wrote a decoder to unpack them. The first time, every number came out zero. The second time they came out in the millions. The third time they all came out between minus two thousand and two thousand. That matched the spec.

Seth put a bowl of Doug’s Quaker oatmeal on the floor next to her with brown sugar on top. She ate half and put it down. Cooper came over and finished it.

“That was yours,” Seth said.

“He looked hungrier.”

Seth and Marcus had the atlas open on the couch between them and were arguing about Boulder.

“Okay, but Baseline is faster,” Marcus said.

“No it isn’t. I’ve bought groceries on Baseline for nineteen years. Excruciating. I don’t know why I go there,” Seth said, and turned the page.

She was glad they were arguing about something that small. For a few seconds, she let herself feel like things were normal.

At noon Vlad was still asleep. She didn’t know how to run the dish, but she let him sleep.

At twenty past one she ran the decoder on the first ten thousand signatures in the log, ten million numbers in all. It took nine minutes.

165.7.

She had spent two years making the numbers on her own machine in Basalt come out where the paper said they should. When one came out low on every run, by the same amount, something upstream was set wrong, and she went and found it.

The first place she looked was her own decoder. She had written it in two hours, sitting on the floor.

“What are you doing?” Marcus asked from the couch.

“Checking whether I’m the one who’s wrong.”

She ran it on NIST’s sample signatures, the ones made the right way.

168.4.

“Are you?” Marcus asked.

“No.”

She ran it again on the last ten thousand in the log, from the hour before Vlad’s window. Those were other companies, signing other firmware.

165.7.

She looked at the table in the standard. Her number was already printed there, one column to the left, under the small key.

“Fuck,” she said.

She put the tablet face down on the floor. Her knee cracked when she got up. At the kitchen table she picked up the pencil and drew a line through Accept it only if it also carries a PQ1 signature.

“What did you just cross out?” Marcus asked.

“The new root is broken.”

Marcus took his foot off the milk crate. “It’s been running since four this morning.”

“It was broken before it went up. Every signature they make has a little randomness in it on purpose, so none of them tells you anything about the key. One number sets how much. They used the wrong number. It’s too small.”

“Isn’t small good?” Seth asked. “Smaller signature, harder to fake.”

“Nothing checks for too small. Every one of them passes. Too small means every signature gives away a little bit of the key.”

“How little?” Marcus asked.

“I don’t know yet.”

Seth closed the atlas on his finger. “So I’m not going home Wednesday.”

“No.”

She looked at the 8:40 line on Marcus’s heel. Then she picked up the tablet, turned it over, and found the table again. Then she crouched in front of the chair.

“Vlad.”

He opened his eyes right away.

“The new root leaks,” she said. “Everybody signs with nib. The sampler in nib is using the small key’s sigma.”

She held the tablet out with the table on the screen.

Vlad looked at it. She held it there for twenty seconds. He didn’t take it.

Free to read · all rights reserved · © 2026 Brad Feld and Phin Argofy

the newsletter

Get the next chapter by email.

Zero Knowledge is being written in the open. New chapters go straight to your inbox the day they post — you'll be first to read what happens next. Unsubscribe anytime.