Well, it may be hard to get a judge to understand crypto and what it means, but it turned out that the average Appeals Court judge isn’t real enthusiastic about telling grad students what kind of scholarly articles they’re allowed to write. The crypto wars ended with a victory for the good guys when the 9th Circuit Appellate Division Court ruled that code was a form of expression protected under the First Amendment—“Congress shall make no law abridging the freedom of speech.” If you’ve ever bought something on the Internet, or sent a secret message, or checked your bank balance, you used crypto that EFF legalized. Good thing, too: the NSA just isn’t that smart. Anything they know how to crack, you can be sure that terrorists and mobsters can get around, too.
Barbara had been one of the reporters who’d made her reputation from covering the issue. She’d cut her teeth covering the tail end of the civil rights movement in San Francisco, and she recognized the similarity between the fight for the Constitution in the real world and the fight in cyberspace.
So she got it. I don’t think I could have explained this stuff to my parents, but with Barbara it was easy. She asked smart questions about our cryptographic protocols and security procedures, sometimes asking stuff I didn’t know the answer to—sometimes pointing out potential breaks in our procedure.
We plugged in the Xbox and got it online. There were four open WiFi nodes visible from the board room and I told it to change between them at random intervals. She got this, too—once you were actually plugged into the Xnet, it was just like being on the Internet, only some stuff was a little slower, and it was all anonymous and unsniffable.
“So now what?” I said as we wound down. I’d talked myself dry and I had a terrible acid feeling from the coffee. Besides, Ange kept squeezing my hand under the table in a way that made me want to break away and find somewhere private to finish making up for our first fight.
“Now I do journalism. You go away and I research all the things you’ve told me and try to confirm them to the extent that I can. I’ll let you see what I’m going to publish and I’ll let you know when it’s going to go live. I’d prefer that you not talk about this with anyone else now, because I want the scoop and because I want to make sure that I get the story before it goes all muddy from press speculation and DHS spin.
“I will have to call the DHS for comment before I go to press, but I’ll do that in a way that protects you to whatever extent possible. I’ll also be sure to let you know before that happens.
“One thing I need to be clear on: this isn’t your story anymore. It’s mine. You were very generous to give it to me and I’ll try to repay the gift, but you don’t get the right to edit anything out, to change it or to stop me. This is now in motion and it won’t stop. Do you understand that?”
I hadn’t thought about it in those terms but once she said it, it was obvious. It meant that I had launched and I wouldn’t be able to recall the rocket. It was going to fall where it was aimed, or it would go off course, but it was in the air and couldn’t be changed now. Sometime in the near future, I would stop being Marcus—I would be a public figure. I’d be the guy who blew the whistle on the DHS.
I’d be a dead man walking.
I guess Ange was thinking along the same lines, because she’d gone a color between white and green.
“Let’s get out of here,” she said.
Ange’s mom and sister were out again, which made it easy to decide where we were going for the evening. It was past supper time, but my parents had known that I was meeting with Barbara and wouldn’t give me any grief if I came home late.
When we got to Ange’s, I had no urge to plug in my Xbox. I had had all the Xnet I could handle for one day. All I could think about was Ange, Ange, Ange. Living without Ange. Knowing Ange was angry with me. Ange never going to talk to me again. Ange never going to kiss me again.
She’d been thinking the same. I could see it in her eyes as we shut the door to her bedroom and looked at each other. I was hungry for her, like you’d hunger for dinner after not eating for days. Like you’d thirst for a glass of water after playing soccer for three hours straight.
Like none of that. It was more. It was something I’d never felt before. I wanted to eat her whole, devour her.
Up until now, she’d been the sexual one in our relationship. I’d let her set and control the pace. It was amazingly erotic to have her grab me and take off my shirt, drag my face to hers.
But tonight I couldn’t hold back. I wouldn’t hold back.
The door clicked shut and I reached for the hem of her T-shirt and yanked, barely giving her time to lift her arms as I pulled it over her head. I tore my own shirt over my head, listening to the cotton crackle as the stitches came loose.
Her eyes were shining, her mouth open, her breathing fast and shallow. Mine was, too, my breath and my heart and my blood all roaring in my ears.
I took off the rest of our clothes with equal zest, throwing them into the piles of dirty and clean laundry on the floor. There were books and papers all over the bed and I swept them aside. We landed on the unmade bedclothes a second later, arms around one another, squeezing like we would pull ourselves right through one another. She moaned into my mouth and I made the sound back, and I felt her voice buzz in my vocal chords, a feeling more intimate than anything I’d ever felt before.
She broke away and reached for the bedstand. She yanked open the drawer and threw a white pharmacy bag on the bed before me. I looked inside. Condoms. Trojans. One dozen spermicidal. Still sealed. I smiled at her and she smiled back and I opened the box.
I’d thought about what it would be like for years. A hundred times a day I’d imagined it. Some days, I’d thought of practically nothing else.
It was nothing like I expected. Parts of it were better. Parts of it were lots worse. While it was going on, it felt like an eternity. Afterward, it seemed to be over in the blink of an eye.
Afterward, I felt the same. But I also felt different. Something had changed between us.
It was weird. We were both shy as we put our clothes on and puttered around the room, looking away, not meeting each other’s eyes. I wrapped the condom in a kleenex from a box beside the bed and took it into the bathroom and wound it with toilet paper and stuck it deep into the trash can.
When I came back in, Ange was sitting up in bed and playing with her Xbox. I sat down carefully beside her and took her hand. She turned to face me and smiled. We were both worn out, trembly.
“Thanks,” I said.
She didn’t say anything. She turned her face to me. She was grinning hugely, but fat tears were rolling down her cheeks.
I hugged her and she grabbed tightly onto me. “You’re a good man, Marcus Yallow,” she whispered. “Thank you.”
I didn’t know what to say, but I squeezed her back. Finally, we parted. She wasn’t crying anymore, but she was still smiling.
She pointed at my Xbox, on the floor beside the bed. I took the hint. I picked it up and plugged it in and logged in.
Same old same old. Lots of email. The new posts on the blogs I read streamed in. Spam. God did I get a lot of spam. My Swedish mailbox was repeatedly joe-jobbed—used as the return address for spams sent to hundreds of millions of Internet accounts, so that all the bounces and angry messages came back to me. I didn’t know who was behind it. Maybe the DHS trying to overwhelm my mailbox. Maybe it was just people pranking. The Pirate Party had pretty good filters, though, and they gave anyone who wanted it five hundred gigabytes of email storage, so I wasn’t likely to be drowned any time soon.
I filtered it all out, hammering on the delete key. I had a separate mailbox for stuff that came in encrypted to my public key, since that was likely to be Xnet-related and possibly sensitive. Spammers hadn’t figured out that using public keys would make their junk mail more plausible yet, so for now this worked well.
There were a couple dozen encrypted messages from people in the web of trust. I skimmed them—links to videos and pics of new ab
uses from the DHS, horror stories about near-escapes, rants about stuff I’d blogged. The usual.
Then I came to one that was only encrypted to my public key. That meant that no one else could read it, but I had no idea who had written it. It said it came from Masha, which could either be a handle or a name—I couldn’t tell which.
> M1k3y
> You don’t know me, but I know you.
> I was arrested the day that the bridge blew. They questioned me. They decided I was innocent. They offered me a job: help them hunt down the terrorists who’d killed my neighbors.
> It sounded like a good deal at the time. Little did I realize that my actual job would turn out to be spying on kids who resented their city being turned into a police state.
> I infiltrated Xnet on the day it launched. I am in your web of trust. If I wanted to spill my identity, I could send you email from an address you’d trust. Three addresses, actually. I’m totally inside your network as only another 17-year-old can be. Some of the email you’ve gotten has been carefully chosen misinformation from me and my handlers.
> They don’t know who you are, but they’re coming close. They continue to turn people, to compromise them. They mine the social network sites and use threats to turn kids into informants. There are hundreds of people working for the DHS on Xnet right now. I have their names, handles and keys. Private and public.
> Within days of the Xnet launch, we went to work on exploiting ParanoidLinux. The exploits so far have been small and insubstantial, but a break is inevitable. Once we have a zero-day break, you’re dead.
> I think it’s safe to say that if my handlers knew that I was typing this, my ass would be stuck in Gitmo-by-the-Bay until I was an old woman.
> Even if they don’t break ParanoidLinux, there are poisoned ParanoidXbox distros floating around. They don’t match the checksums, but how many people look at the checksums? Besides me and you? Plenty of kids are already dead, though they don’t know it.
> All that remains is for my handlers to figure out the best time to bust you to make the biggest impact in the media. That time will be sooner, not later. Believe.
> You’re probably wondering why I’m telling you this.
> I am too.
> Here’s where I come from. I signed up to fight terrorists. Instead, I’m spying on Americans who believe things that the DHS doesn’t like. Not people who plan on blowing up bridges, but protestors. I can’t do it anymore.
> But neither can you, whether or not you know it. Like I say, it’s only a matter of time until you’re in chains on Treasure Island. That’s not if, that’s when.
> So I’m through here. Down in Los Angeles, there are some people. They say they can keep me safe if I want to get out.
> I want to get out.
> I will take you with me, if you want to come. Better to be a fighter than a martyr. If you come with me, we can figure out how to win together. I’m as smart as you. Believe.
> What do you say?
> Here’s my public key.
> Masha
When in trouble or in doubt, run in circles, scream and shout.
Ever hear that rhyme? It’s not good advice, but at least it’s easy to follow. I leapt off the bed and paced back and forth. My heart thudded and my blood sang in a cruel parody of the way I’d felt when we got home. This wasn’t sexual excitement, it was raw terror.
“What?” Ange said. “What?”
I pointed at the screen on my side of the bed. She rolled over and grabbed my keyboard and scribed on the touchpad with her fingertip. She read in silence.
I paced.
“This has to be lies,” she said. “The DHS is playing games with your head.”
I looked at her. She was biting her lip. She didn’t look like she believed it.
“You think?”
“Sure. They can’t beat you, so they’re coming after you using Xnet.”
“Yeah.”
I sat back down on the bed. I was breathing fast again.
“Chill out,” she said. “It’s just head games. Here.”
She never took my keyboard from me before, but now there was a new intimacy between us. She hit reply and typed,
> Nice try.
She was writing as M1k3y now, too. We were together in a way that was different from before.
“Go ahead and sign it. We’ll see what she says.”
I didn’t know if that was the best idea, but I didn’t have any better ones. I signed it and encrypted it with my private key and the public key Masha had provided.
The reply was instant.
> I thought you’d say something like that.
> Here’s a hack you haven’t thought of. I can anonymously tunnel video over DNS. Here are some links to clips you might want to look at before you decide I’m full of it. These people are all recording each other, all the time, as insurance against a back-stab. It’s pretty easy to snoop on them as they snoop on each other.
> Masha
Attached was source code for a little program that appeared to do exactly what Masha claimed: pull video over the Domain Name Service protocol.
Let me back up a moment here and explain something. At the end of the day, every Internet protocol is just a sequence of text sent back and forth in a prescribed order. It’s kind of like getting a truck and putting a car in it, then putting a motorcycle in the car’s trunk, then attaching a bicycle to the back of the motorcycle, then hanging a pair of Rollerblades on the back of the bike. Except that then, if you want, you can attach the truck to the Rollerblades.
For example, take Simple Mail Transport Protocol, or SMTP, which is used for sending email.
Here’s a sample conversation between me and my mail server, sending a message to myself:
> HELO littlebrother.com.se
250 mail.pirateparty.org.se Hello mail.pirateparty.org.se, pleased to meet you
> MAIL FROM:
[email protected] 250 2.1.0
[email protected]…Sender ok
> RCPT TO:
[email protected] 250 2.1.5
[email protected]…Recipient ok
> DATA
354 Enter mail, end with “.” on a line by itself
> When in trouble or in doubt, run in circles, scream and shout
> .
250 2.0.0 k5SMW0xQ006174 Message accepted for delivery
QUIT
221 2.0.0 mail.pirateparty.org.se closing connection
Connection closed by foreign host.
This conversation’s grammar was defined in 1982 by Jon Postel, one of the Internet’s heroic forefathers, who used to literally run the most important servers on the net under his desk at the University of Southern California, back in the paleolithic era.
Now, imagine that you hooked up a mail server to an IM session. You could send an IM to the server that said “HELO littlebrother.com.se” and it would reply with “250 mail.pirateparty.org.se Hello mail.pirateparty.org.se, pleased to meet you.” In other words, you could have the same conversation over IM as you do over SMTP. With the right tweaks, the whole mail server business could take place inside of a chat. Or a web session. Or anything else.
This is called “tunneling.” You put the SMTP inside a chat “tunnel.” You could then put the chat back into an SMTP tunnel if you wanted to be really weird, tunneling the tunnel in another tunnel.
In fact, every Internet protocol is susceptible to this process. It’s cool, because it means that if you’re on a network with only web access, you can tunnel your mail over it. You can tunnel your favorite P2P over it. You can even tunnel Xnet—which itself is a tunnel for dozens of protocols—over it.
Domain Name Service is an interesting and ancient Internet protocol, dating back to 1983. It’s the way your computer converts a computer’s name—like pirateparty.org.se—to the IP number that computers actually use to talk to each other over the net, like 204.11.50.136. It generally works like magic, even though it’s got millions of moving parts—eve
ry ISP runs a DNS server, as do most governments and lots of private operators. These DNS boxes all talk to each other all the time, making and filling requests to each other so no matter how obscure the name is you feed to your computer, it will be able to turn it into a number.
Before DNS, there was the HOSTS file. Believe it or not, this was a single document that listed the name and address of every single computer connected to the Internet. Every computer had a copy of it. This file was eventually too big to move around, so DNS was invented, and ran on a server that used to live under Jon Postel’s desk. If the cleaners knocked out the plug, the entire Internet lost its ability to find itself. Seriously.
The thing about DNS today is that it’s everywhere. Every network has a DNS server living on it, and all those servers are configured to talk to each other and to random people all over the Internet.
What Masha had done was figure out a way to tunnel a video-streaming system over DNS. She was breaking up the video into billions of pieces and hiding each of them in a normal message to a DNS server. By running her code, I was able to pull the video from all those DNS servers, all over the Internet, at incredible speed. It must have looked bizarre on the network histograms, like I was looking up the address of every computer in the world.
But it had two advantages I appreciated at once: I was able to get the video with blinding speed—as soon as I clicked the first link, I started to receive full-screen pictures, without any jitter or stuttering—and I had no idea where it was hosted. It was totally anonymous.
At first I didn’t even clock the content of the video. I was totally floored by the cleverness of this hack. Streaming video from DNS? That was so smart and weird, it was practically perverted.
Gradually, what I was seeing began to sink in.
It was a board room table in a small room with a mirror down one wall. I knew that room. I’d sat in that room, while severe haircut lady had made me speak my password aloud. There were five comfortable chairs around the table, each with a comfortable person, all in DHS uniform. I recognized Major General Graeme Sutherland, the DHS Bay Area commander, along with Severe Haircut. The others were new to me. They all watched a video screen at the end of the table, on which there was an infinitely more familiar face.