Every boy remembers his first magic trick. I bought mine from Astroworld’s magic shop back while in junior high. It was a gag called “The Money Maker”. Just a couple of pinch rollers in an open frame. You rolled a blank sheet of paper through and it magically printed a genuine U.S. Dollar! It was a brilliant effect. So good, it lit up the imaginations of even my most skeptical friends.
I took the money maker down from the shelf that day after class. There wasn’t a reason to. I guess I just needed something for my fingers to twiddle while my mind cleared. I’d stumbled all the way back from Assembly class in a stupor.
“What does this do?” Dr. Early had asked as he chalked three lines on the blackboard. I don’t remember him ever giving an explanation. He just sat back to watch who’d switch to a business major.
XOR R1, R2
XOR R2, R1
XOR R1, R2
It’s called the XOR Swap and is a computer science rite of passage. There are only two possible responses. Students either go, “I don’t get it?” or they go, “Holy Shit!” and become a bit catatonic.
I twisted the money maker’s rollers back and forth pondering reality. The money maker, of course, didn’t physically transform blank paper into dollar bills. It just made you perceive that it had.
The XOR swap, on the other hand, was true magic. There was no slight of hand. It physically turned R1 into R2… Or maybe R2 and R1 logically passed through each other…? I understood the process completely yet still had trouble perceiving what was happening.
Everything in computer science had been taught by analogy. A file is like a piece of paper… A directory is like a folder… This is like a pipe… a stream… a stack… a queue… a signal… a semaphore… a tree… a branch… a fork.
I’d searched for a physical analogy to help visualize the XOR swap. There simply wasn’t one. One variable “magically” became the other after a brief stint of being neither. All with zero extra swap space.
It broke foundational metaphors taught in CS 101…
(Just the uncontrollable reflex my mouth makes while my brain wanders off to ponder something compelling)
Fourteen years of engineering software bought deep respect for the creativity of peer-to-peer systems. Distributed search, file hashing, Merkle trees, swarming downloads, DHTs… Taken as as set, P2P apps pushed the technological envelope in every direction.
But despite progress technologically, sociologically P2P was still trapped in a maze of twisty little passages. RIAA lawyers painted each new network as “just another Napster.” Their media arm branded every user an evil pirate. The public parroted back their schtick. Then… Bill Murray woke up to start “Groundhog Day” all over again.
Napster’s March injunction hit the news just days before Kazaa and Morpheus popped up. The RIAA threatened them while Grokster launched. Napster shut down in July and eDonkey popped up. Each day’s headline repeated the previous changing only a couple names. KaZaA, Morpheus, Grokster—hell even Replay TV! By November, I’d lost track of how many were being sued.
But that was no longer my problem. The war was a lost cause. I’d given up. Or at least that is what I kept telling myself.
And anyway, I was busy researching privacy. Not the exciting kind of privacy. The boring government mandated kind.
HIPAA regulations came with a set of rules designed seemingly only to make software engineers’ lives a living hell. “Encryption! Everything needs to be encrypted. Even fields in the database!” That was what the customer told my boss and that was what he told me.
“WTF?” I thought. It sounded like a crazy misunderstanding. I briefly considered implementing ROT-13 and waiting for it to pass. But hell, encryption was sexy and I needed a diversion.
“Yeah right!” I thought incredulously.
Some phrases just pop out from the middle of a search result. Phrases like:
“…the only known unbreakable encryption system…”
I usually have a pretty good sense of when I’m being trolled. Nonetheless, some links just beg to be clicked.
“You OK?” Philip asked.
“Because you’ve been sitting catatonic for ten minutes now.”
The idea seemed to pop into my head fully formed. I’d started out reading about One-Time Pad Cipher then suddenly realized I’d been perceiving something else…something Magical. I’d long since passed the money maker down to my kids, but I found myself mentally twiddling its knobs as my mind pondered the possibilities.
All existing P2P systems shared the same critical weakness. Paraphrasing the great Buckaroo,
“No matter where infringing files go… there they are.”
Files are the most common metaphor in computing. Ask anyone—They’ll tell you files are where you store things. One-time pad ciphers break that metaphor. Instead of covertly hiding meaning inside files, OTP opts to not store any meaning at all!
Examine the money maker closely enough and you’ll eventually find the cleverly hidden dollar. Analyze OTP cipher-text till the cows come home. There’s simply nothing to find.
“And if nothing’s there,” I thought to myself. “How could cipher-text ever be infringing?”
It was an absurd idea. Just one of those silly associations that sparks into your head like a clever pun. I smiled a crooked smile waiting for it to pass…
The one-time pad’s magic was a close kin to the XOR swap’s. Both worked by temporarily storing, not the data itself, but a mathematical distance between two chunks of data. It was like broadcasting your location by saying “I’m 5 miles North.” By itself that phrase is valueless. Unless the receiver knows exactly where you measured from, he has zero hope of finding where you measured to.
“Everywhere is 5 miles North of someplace.”
It was a curious thought that kept the silly smile on my face a little longer…
Not only is the phrase useless because it contains no meaning. It’s multi-useless because it’s tells so little about so many things! I’m 5 miles north of Houston. You’re 5 miles north of LA.
“Whose data is infringing who?” I thought to myself.
Thing were even worse for the Houston and LA files. Millions of people simultaneously referenced those each for their own reasons. They certainly couldn’t be claimed by any particular individual.
Houston + 5 miles North = Me
Houston + 10 miles East = Jack
LA + 5 miles North = You
LA + 10 miles East = Steve
“There! Closed the loop.” Four locations encoded between four multiply-used data points. With no data attributable to only a single location.
Sure I’d lost the “one-time” nature of a pad cipher—but I wasn’t ciphering! This system would be used to find meaning, not to hide it.
Houston + 5 miles North + 10 miles East = Frank
LA + 5 miles North + 10 miles East = George
I smiled again as my mind briefly wandered back to Woz and his magic byte…
It wasn’t encoding two new locations without adding a single data point that sent me catatonic. It wasn’t even realizing that Frank and George could do so in absolute privacy. (You, me, Jack, Steve… Even though we’d created the initial files, we’d never have a clue.)
No, the epiphany was realizing that each time I added a new “file” to the system I didn’t add just one new meaning. Instead, I simultaneously added n, n^2, or even n^3 new relationships!
Sure most of these relationships would be meaningless, but what about when…
Oh! This is way beyond cool… It’s gonna be Fucking Magic!