[[This chapter is dedicated to Anderson's Bookshops, Chicago's
legendary kids' bookstore. Anderson's is an old, old family-run
business, which started out as an old-timey drug-store selling some
books on the side. Today, it's a booming, multi-location kids' book
empire, with some incredibly innovative bookselling practices that get
books and kids together in really exciting ways. The best of these is
the store's mobile book-fairs, in which they ship huge, rolling
bookcases, already stocked with excellent kids' books, direct to
schools on trucks -- voila, instant book-fair!]]
[[Anderson's Bookshops
http://www.andersonsbookshop.com/search.php?qkey2=doctorow+little+
brother&sid=5156&imageField.x=0&imageField.y=0 123 West Jefferson,
Naperville, IL 60540 USA +1 630 355 2665]]
What would you do if you found out you had a spy in your midst? You
could denounce him, put him up against the wall and take him out. But
then you might end up with another spy in your midst, and the new spy
would be more careful than the last one and maybe not get caught quite
so readily.
Here's a better idea: start intercepting the spy's communications and
feed him and his masters misinformation. Say his masters instruct him
to gather information on your movements. Let him follow you around and
take all the notes he wants, but steam open the envelopes that he sends
back to HQ and replace his account of your movements with a fictitious
one. If you want, you can make him seem erratic and unreliable so they
get rid of him. You can manufacture crises that might make one side or
the other reveal the identities of other spies. In short, you own them.
This is called the man-in-the-middle attack and if you think about it,
it's pretty scary. Someone who man-in-the-middles your communications
can trick you in any of a thousand ways.
Of course, there's a great way to get around the man-in-the-middle
attack: use crypto. With crypto, it doesn't matter if the enemy can see
your messages, because he can't decipher them, change them, and re-send
them. That's one of the main reasons to use crypto.
But remember: for crypto to work, you need to have keys for the people
you want to talk to. You and your partner need to share a secret or
two, some keys that you can use to encrypt and decrypt your messages so
that men-in-the-middle get locked out.
That's where the idea of public keys comes in. This is a little hairy,
but it's so unbelievably elegant too.
In public key crypto, each user gets two keys. They're long strings of
mathematical gibberish, and they have an almost magic property.
Whatever you scramble with one key, the other will unlock, and
vice-versa. What's more, they're the *only* keys that can do this -- if
you can unscramble a message with one key, you *know* it was scrambled
with the other (and vice-versa).
So you take either one of these keys (it doesn't matter which one) and
you just *publish* it. You make it a total *non-secret*. You want
anyone in the world to know what it is. For obvious reasons, they call
this your "public key."
The other key, you hide in the darkest reaches of your mind. You
protect it with your life. You never let anyone ever know what it is.
That's called your "private key." (Duh.)
Now say you're a spy and you want to talk with your bosses. Their
public key is known by everyone. Your public key is known by everyone.
No one knows your private key but you. No one knows their private key
but them.
You want to send them a message. First, you encrypt it with your
private key. You could just send that message along, and it would work
pretty well, since they would know when the message arrived that it
came from you. How? Because if they can decrypt it with your public
key, it can *only* have been encrypted with your private key. This is
the equivalent of putting your seal or signature on the bottom of a
message. It says, "I wrote this, and no one else. No one could have
tampered with it or changed it."
Unfortunately, this won't actually keep your message a *secret*. That's
because your public key is really well known (it has to be, or you'll
be limited to sending messages to those few people who have your public
key). Anyone who intercepts the message can read it. They can't change
it and make it seem like it came from you, but if you don't want people
to know what you're saying, you need a better solution.
So instead of just encrypting the message with your private key, you
*also* encrypt it with your boss's public key. Now it's been locked
twice. The first lock -- the boss's public key -- only comes off when
combined with your boss's private key. The second lock -- your private
key -- only comes off with your public key. When your bosses receive
the message, they unlock it with both keys and now they know for sure
that: a) you wrote it and b) that only they can read it.
It's very cool. The day I discovered it, Darryl and I immediately
exchanged keys and spent months cackling and rubbing our hands as we
exchanged our military-grade secret messages about where to meet after
school and whether Van would ever notice him.
But if you want to understand security, you need to consider the most
paranoid possibilities. Like, what if I tricked you into thinking that
*my* public key was your boss's public key? You'd encrypt the message
with your private key and my public key. I'd decrypt it, read it,
re-encrypt it with your boss's *real* public key and send it on. As far
as your boss knows, no one but you could have written the message and
no one but him could have read it.
And I get to sit in the middle, like a fat spider in a web, and all
your secrets belong to me.
Now, the easiest way to fix this is to really widely advertise your
public key. If it's *really* easy for anyone to know what your real key
is, man-in-the-middle gets harder and harder. But you know what? Making
things well-known is just as hard as keeping them secret. Think about
it -- how many billions of dollars are spent on shampoo ads and other
crap, just to make sure that as many people know about something that
some advertiser wants them to know?
There's a cheaper way of fixing man-in-the-middle: the web of trust.
Say that before you leave HQ, you and your bosses sit down over coffee
and actually tell each other your keys. No more man-in-the-middle!
You're absolutely certain whose keys you have, because they were put
into your own hands.
So far, so good. But there's a natural limit to this: how many people
can you physically meet with and swap keys? How many hours in the day
do you want to devote to the equivalent of writing your own phone book?
How many of those people are willing to devote that kind of time to
you?
Thinking about this like a phonebook helps. The world was once a place
with a lot of phonebooks, and when you needed a number, you could look
it up in the book. But for many of the numbers that you wanted to refer
to on a given day, you would either know it by heart, or you'd be able
to ask someone else. Even today, when I'm out with my cell-phone, I'll
ask Jolu or Darryl if they have a number I'm looking for. It's faster
and easier than looking it up online and they're more reliable, too. If
Jolu has a number, I trust him, so I trust the number, too. That's
called "transitive trust" -- trust that moves across the web of our
relationships.
A web of trust is a bigger version of this. Say I meet Jolu and get his
key. I can put it on my "keyring" -- a list of keys that I've signed
with my private key. That means you can unlock it with my public key
and know for sure that me -- or someone with my key, anyway -- says
that "this key belongs to this guy."
So I hand you my keyring and provided that you trust me to have
actually met and verified all the keys on it, you can take it and add
it to your keyring. Now, you meet someone else and you hand the whole
ring to him. Bigger and bigger the ring grows, and provided that you
trust the next guy in the chain, and he trusts the next guy in his
chain and so on, you're pretty secure.
Which brings me to keysigning parties. These are *exactly* what they
sound like: a party where everyone gets together and signs everyone
else's keys. Darryl and I, when we traded keys, that was kind of a
mini-keysigning party, one with only two sad and geeky attendees. But
with more people, you create the seed of the web of trust, and the web
can expand from there. As everyone on your keyring goes out into the
world and meets more people, they can add more and more names to the
ring. You don't have to meet the new people, just trust that the signed
key you get from the people in your web is valid.
So that's why web of trust and parties go together like peanut butter
and chocolate.
"Just tell them it's a super-private party, invitational only," I said.
"Tell them not to bring anyone along or they won't be admitted."
Jolu looked at me over his coffee. "You're joking, right? You tell
people that, and they'll bring *extra* friends."
"Argh," I said. I spent a night a week at Jolu's these days, keeping
the code up to date on indienet. Pigspleen actually paid me a non-zero
sum of money to do this, which was really weird. I never thought I'd be
paid to write code.
"So what do we do? We only want people we really trust there, and we
don't want to mention why until we've got everyone's keys and can send
them messages in secret."
Jolu debugged and I watched over his shoulder. This used to be called
"extreme programming," which was a little embarrassing. Now we just
call it "programming." Two people are much better at spotting bugs than
one. As the cliche goes, "With enough eyeballs, all bugs are shallow."
We were working our way through the bug reports and getting ready to
push out the new rev. It all auto-updated in the background, so our
users didn't really need to do anything, they just woke up once a week
or so with a better program. It was pretty freaky to know that the code
I wrote would be used by hundreds of thousands of people, *tomorrow*!
"What do we do? Man, I don't know. I think we just have to live with
it."
I thought back to our Harajuku Fun Madness days. There were lots of
social challenges involving large groups of people as part of that
game.
"OK, you're right. But let's at least try to keep this secret. Tell
them that they can bring a maximum of one person, and it has to be
someone they've known personally for a minimum of five years."
Jolu looked up from the screen. "Hey," he said. "Hey, that would
totally work. I can really see it. I mean, if you told me not to bring
anyone, I'd be all, 'Who the hell does he think he is?' But when you
put it that way, it sounds like some awesome 007 stuff."
I found a bug. We drank some coffee. I went home and played a little
Clockwork Plunder, trying not to think about key-winders with nosy
questions, and slept like a baby.
Sutro baths are San Francisco's authentic fake Roman ruins. When it
opened in 1896, it was the largest indoor bathing house in the world, a
huge Victorian glass solarium filled with pools and tubs and even an
early water slide. It went downhill by the fifties, and the owners
torched it for the insurance in 1966. All that's left is a labyrinth of
weathered stone set into the sere cliff-face at Ocean Beach. It looks
for all the world like a Roman ruin, crumbled and mysterious, and just
beyond them is a set of caves that let out into the sea. In rough
tides, the waves rush through the caves and over the ruins -- they've
even been known to suck in and drown the occasional tourist.
Ocean Beach is way out past Golden Gate park, a stark cliff lined with
expensive, doomed houses, plunging down to a narrow beach studded with
jellyfish and brave (insane) surfers. There's a giant white rock that
juts out of the shallows off the shore. That's called Seal Rock, and it
used to be the place where the sea lions congregated until they were
relocated to the more tourist-friendly environs of Fisherman's Wharf.
After dark, there's hardly anyone out there. It gets very cold, with a
salt spray that'll soak you to your bones if you let it. The rocks are
sharp and there's broken glass and the occasional junkie needle.
It is an awesome place for a party.
Bringing along the tarpaulins and chemical glove-warmers was my idea.
Jolu figured out where to get the beer -- his older brother, Javier,
had a buddy who actually operated a whole underage drinking service:
pay him enough and he'd back up to your secluded party spot with
ice-chests and as many brews as you wanted. I blew a bunch of my
indienet programming money, and the guy showed up right on time: 8PM, a
good hour after sunset, and lugged the six foam ice-chests out of his
pickup truck and down into the ruins of the baths. He even brought a
spare chest for the empties.
"You kids play safe now," he said, tipping his cowboy hat. He was a fat
Samoan guy with a huge smile, and a scary tank-top that you could see
his armpit- and belly- and shoulder-hair escaping from. I peeled
twenties off my roll and handed them to him -- his markup was 150
percent. Not a bad racket.
He looked at my roll. "You know, I could just take that from you," he
said, still smiling. "I'm a criminal, after all."
I put my roll in my pocket and looked him levelly in the eye. I'd been
stupid to show him what I was carrying, but I knew that there were
times when you should just stand your ground.
"I'm just messing with you," he said, at last. "But you be careful with
that money. Don't go showing it around."
"Thanks," I said. "Homeland Security'll get my back though."
His smile got even bigger. "Ha! They're not even real five-oh. Those
peckerwoods don't know nothin'."
I looked over at his truck. Prominently displayed in his windscreen was
a FasTrak. I wondered how long it would be until he got busted.
"You got girls coming tonight? That why you got all the beer?"
I smiled and waved at him as though he was walking back to his truck,
which he should have been doing. He eventually got the hint and drove
away. His smile never faltered.
Jolu helped me hide the coolers in the rubble, working with little
white LED torches on headbands. Once the coolers were in place, we
threw little white LED keychains into each one, so it would glow when
you took the styrofoam lids off, making it easier to see what you were
doing.
It was a moonless night and overcast, and the distant streetlights
barely illuminated us. I knew we'd stand out like blazes on an infrared
scope, but there was no chance that we'd be able to get a bunch of
people together without being observed. I'd settle for being dismissed
as a little drunken beach-party.
I don't really drink much. There's been beer and pot and ecstasy at the
parties I've been going to since I was 14, but I hated smoking (though
I'm quite partial to a hash brownie every now and again), ecstasy took
too long -- who's got a whole weekend to get high and come down -- and
beer, well, it was all right, but I didn't see what the big deal was.
My favorite was big, elaborate cocktails, the kind of thing served in a
ceramic volcano, with six layers, on fire, and a plastic monkey on the
rim, but that was mostly for the theater of it all.
I actually like being drunk. I just don't like being hungover, and boy,
do I ever get hungover. Though again, that might have to do with the
kind of drinks that come in a ceramic volcano.
But you can't throw a party without putting a case or two of beer on
ice. It's expected. It loosens things up. People do stupid things after
too many beers, but it's not like my friends are the kind of people who
have cars. And people do stupid things no matter what -- beer or grass
or whatever are all incidental to that central fact.
Jolu and I each cracked beers -- Anchor Steam for him, a Bud Lite for
me -- and clinked the bottles together, sitting down on a rock.
"You told them 9PM?"
"Yeah," he said.
"Me too."
We drank in silence. The Bud Lite was the least alcoholic thing in the
ice-chest. I'd need a clear head later.
"You ever get scared?" I said, finally.
He turned to me. "No man, I don't get scared. I'm always scared. I've
been scared since the minute the explosions happened. I'm so scared
sometimes, I don't want to get out of bed."
"Then why do you do it?"
He smiled. "About that," he said. "Maybe I won't, not for much longer.
I mean, it's been great helping you. Great. Really excellent. I don't
know when I've done anything so important. But Marcus, bro, I have to
say. . ." He trailed off.
"What?" I said, though I knew what was coming next.
"I can't do it forever," he said at last. "Maybe not even for another
month. I think I'm through. It's too much risk. The DHS, you can't go
to war on them. It's crazy. Really actually crazy."
"You sound like Van," I said. My voice was much more bitter than I'd
intended.
"I'm not criticizing you, man. I think it's great that you've got the
bravery to do this all the time. But I haven't got it. I can't live my
life in perpetual terror."
"What are you saying?"
"I'm saying I'm out. I'm going to be one of those people who acts like
it's all OK, like it'll all go back to normal some day. I'm going to
use the Internet like I always did, and only use the Xnet to play
games. I'm going to get out is what I'm saying. I won't be a part of
your plans anymore."
I didn't say anything.
"I know that's leaving you on your own. I don't want that, believe me.
I'd much rather you give up with me. You can't declare war on the
government of the USA. It's not a fight you're going to win. Watching
you try is like watching a bird fly into a window again and again."
He wanted me to say something. What *I* wanted to say was, *Jesus Jolu,
thanks so very much for abandoning me! Do you forget what it was like
when they took us away? Do you forget what the country used to be like
before they took it over?* But that's not what he wanted me to say.
What he wanted me to say was:
"I understand, Jolu. I respect your choice."
He drank the rest of his bottle and pulled out another one and twisted
off the cap.
"There's something else," he said.
"What?"
"I wasn't going to mention it, but I want you to understand why I have
to do this."
"Jesus, Jolu, *what*?"
"I hate to say it, but you're *white*. I'm not. White people get caught
with cocaine and do a little rehab time. Brown people get caught with
crack and go to prison for twenty years. White people see cops on the
street and feel safer. Brown people see cops on the street and wonder
if they're about to get searched. The way the DHS is treating you? The
law in this country has always been like that for us."
It was so unfair. I didn't ask to be white. I didn't think I was being
braver just because I'm white. But I knew what Jolu was saying. If the
cops stopped someone in the Mission and asked to see some ID, chances
were that person wasn't white. Whatever risk I ran, Jolu ran more.
Whatever penalty I'd pay, Jolu would pay more.
"I don't know what to say," I said.
"You don't have to say anything," he said. "I just wanted you to know,
so you could understand."
I could see people walking down the side trail toward us. They were
friends of Jolu's, two Mexican guys and a girl I knew from around,
short and geeky, always wearing cute black Buddy Holly glasses that
made her look like the outcast art-student in a teen movie who comes
back as the big success.
Jolu introduced me and gave them beers. The girl didn't take one, but
instead produced a small silver flask of vodka from her purse and
offered me a drink. I took a swallow -- warm vodka must be an acquired
taste -- and complimented her on the flask, which was embossed with a
repeating motif of Parappa the Rapper characters.
"It's Japanese," she said as I played another LED keyring over it.
"They have all these great booze-toys based on kids' games. Totally
twisted."
I introduced myself and she introduced herself. "Ange," she said, and
shook my hand with hers -- dry, warm, with short nails. Jolu introduced
me to his pals, whom he'd known since computer camp in the fourth
grade. More people showed up -- five, then ten, then twenty. It was a
seriously big group now.
We'd told people to arrive by 9:30 sharp, and we gave it until 9:45 to
see who all would show up. About three quarters were Jolu's friends.
I'd invited all the people I really trusted. Either I was more
discriminating than Jolu or less popular. Now that he'd told me he was
quitting, it made me think that he was less discriminating. I was
really pissed at him, but trying not to let it show by concentrating on
socializing with other people. But he wasn't stupid. He knew what was
going on. I could see that he was really bummed. Good.
"OK," I said, climbing up on a ruin, "OK, hey, hello?" A few people
nearby paid attention to me, but the ones in the back kept on chatting.
I put my arms in the air like a referee, but it was too dark.
Eventually I hit on the idea of turning my LED keychain on and pointing
it at each of the talkers in turn, then at me. Gradually, the crowd
fell quiet.
I welcomed them and thanked them all for coming, then asked them to
close in so I could explain why we were there. I could tell they were
into the secrecy of it all, intrigued and a little warmed up by the
beer.
"So here it is. You all use the Xnet. It's no coincidence that the Xnet
was created right after the DHS took over the city. The people who did
that are an organization devoted to personal liberty, who created the
network to keep us safe from DHS spooks and enforcers." Jolu and I had
worked this out in advance. We weren't going to cop to being behind it
all, not to anyone. It was way too risky. Instead, we'd put it out that
we were merely lieutenants in "M1k3y"'s army, acting to organize the
local resistance.
"The Xnet isn't pure," I said. "It can be used by the other side just
as readily as by us. We know that there are DHS spies who use it now.
They use social engineering hacks to try to get us to reveal ourselves
so that they can bust us. If the Xnet is going to succeed, we need to
figure out how to keep them from spying on us. We need a network within
the network."
I paused and let this sink in. Jolu had suggested that this might be a
little heavy -- learning that you're about to be brought into a
revolutionary cell.
"Now, I'm not here to ask you to do anything active. You don't have to
go out jamming or anything. You've been brought here because we know
you're cool, we know you're trustworthy. It's that trustworthiness I
want to get you to contribute tonight. Some of you will already be
familiar with the web of trust and keysigning parties, but for the rest
of you, I'll run it down quickly --" Which I did.
"Now what I want from you tonight is to meet the people here and figure
out how much you can trust them. We're going to help you generate
key-pairs and share them with each other."
This part was tricky. Asking people to bring their own laptops wouldn't
have worked out, but we still needed to do something hella complicated
that wouldn't exactly work with paper and pencil.
I held up a laptop Jolu and I had rebuilt the night before, from the
ground up. "I trust this machine. Every component in it was laid by our
own hands. It's running a fresh out-of-the-box version of
ParanoidLinux, booted off of the DVD. If there's a trustworthy computer
left anywhere in the world, this might well be it.
"I've got a key-generator loaded here. You come up here and give it
some random input -- mash the keys, wiggle the mouse -- and it will use
that as the seed to create a random public- and private key for you,
which it will display on the screen. You can take a picture of the
private key with your phone, and hit any key to make it go away forever
-- it's not stored on the disk at all. Then it will show you your
public key. At that point, you call over all the people here you trust
and who trust you, and *they* take a picture of the screen with you
standing next to it, so they know whose key it is.
"When you get home, you have to convert the photos to keys. This is
going to be a lot of work, I'm afraid, but you'll only have to do it
once. You have to be super-careful about typing these in -- one mistake
and you're screwed. Luckily, we've got a way to tell if you've got it
right: beneath the key will be a much shorter number, called the
'fingerprint'. Once you've typed in the key, you can generate a
fingerprint from it and compare it to the fingerprint, and if they
match, you've got it right."
They all boggled at me. OK, so I'd asked them to do something pretty
weird, it's true, but still.
&&&