portland independent media center  
images audio video
newswire article creative global

actions & protests | corporate dominance | imperialism & war

The Daily Poetry Movement

a 456 stanza haiku to plead freedom of speech and computer code. This impassioned poem shows the hilarity that we are faced with in these times. We are faced with the biggest case of computer fraud about to take place on Nov. 2 by the same idiots who want everything privatized while they go after those who write code. Hack Back! Hacktivists hacktivate!
How to decrypt a
DVD: in haiku form.
(Thanks, Prof. D. S. T.)
------------------------

(I abandon my
exclusive rights to make or
perform copies of

this work, U. S. Code
Title Seventeen, section
One Hundred and Six.)

Muse! When we learned to
count, little did we know all
the things we could do

some day by shuffling
those numbers: Pythagoras
said "All is number"

long before he saw
computers and their effects,
or what they could do

by computation,
naive and mechanical
fast arithmetic.

It changed the world, it
changed our consciousness and lives
to have such fast math

available to
us and anyone who cared
to learn programming.

Now help me, Muse, for
I wish to tell a piece of
controversial math,

for which the lawyers
of DVD CCA
don't forbear to sue:

that they alone should
know or have the right to teach
these skills and these rules.

(Do they understand
the content, or is it just
the effects they see?)

And all mathematics
is full of stories (just read
Eric Temple Bell);

and CSS is
no exception to this rule.
Sing, Muse, decryption

once secret, as all
knowledge, once unknown: how to
decrypt DVDs.



Arrays' elements
start with zero and count up
from there, don't forget!

Integers are four
bytes long, or thirty-two bits,
which is the same thing.

To decode these discs,
you need a master key, as
hardware vendors get.

(This is a "player
key" and some folks other than
vendors know them now.

If they didn't, there
is also a way not to
need one, to start off.)

You'll read a "disk key"
from the disc, and decrypt it
with that player key.

You'll read a "title
key" for the video file
that you want to play.

With the disk key, you
can decrypt the title key;
that decrypts the show.



Here's a description
of how a player key will
decrypt a disk key.

You need two things here:
An encrypted disk key, which
is just six bytes long.

(Only five of those
are the _key itself_, because
"zero" marks the end.

So that's five real bytes,
and eight times five is forty;
in the ideal case,

forty bits will yield
just short of two trillion
possible choices!

Ian Goldberg once
recovered a key that long
in seven half-hours.

But his office-mate
David Wagner points out that
it's _impossible_

to achieve what the
DVD CCA seems
to want to achieve,

even by making
the key some reasonable,
"adequate" key-length:

There's no way to write
a "secure" software player
which contains the key

and runs on PCs,
yet somehow prevents users
from extracting it.

If the player can
decrypt, Wagner has noted,
users can learn how.)

This is a pointer,
"KEY", to those bytes, and when we're
done, they'll be clear-text.

Oh, the other thing!
Called "im", a pointer to six
bytes: a player key.

(Now those six bytes, the
DVD CCA says
under penalty

of perjury, are
its trade secret, and you are
breaking the law if

you tell someone that,
for instance, the Xing player
used the following:

Eighty-one; and then
one hundred three -- two times; then
two hundred (less three);

two hundred twenty
four; and last (of course not least)
the humble zero.)

We will use these few
internal variables:
t1 through t6,

unsigned integers.
k, pointer to five unsigned
bytes. i, integer.

So here's how you do
it: first, take the first byte of
im -- that's byte zero;

OR that byte with the
number 0x100
(hexadecimal --

that's two hundred and
fifty-six to you if you
prefer decimal).

Store the result in
t1. Take byte one of im.
Store it in t2.

Take bytes two through five
of im; store them in t3.
Take its three low bits

(you can get them by
ANDing t3 with seven);
store this in t4.

Double t3, add
eight, subtract t4; store the
result in t3.

Make t5 zero.
Now we'll start a loop; set i
equal to zero.

i gets values from
zero up to four; each time,
do all of these steps:

Use t2 for an
index into Table Two:
find a byte b1.

Use t1 for an
index into Table Three:
find a byte b2.

Take exclusive OR
of b1 with b2 and
store this in t4.

Shift t1 right by
a single bit (like halving);
store this in t2.

Take the low bit of
t1 (so, AND it with one),
shift it left eight bits,

then take exclusive
OR of that with t4; store
this back in t1.

Use t4 for an
index into Table Four:
find a byte and store

it back in t4.
Shift t3 right by three bits,
take exclusive OR

of this with t3,
shift this right by one bit, and
take exclusive OR

of this with t3,
shift this right by eight bits, and
take exclusive OR

of this with t3,
shift this right by five bits, and
(No exclusive OR!

Orange you glad I
didn't say banana?) take
the low byte (by AND

with two hundred and
fifty-five); now store this
into t6. Phew!

Shift t3 left eight
bits, take OR with t6, and
store this in t3.

Use t6 for an
index into Table Four:
find a byte and store

it in t6. Add
t6, t5, t4; store
the sum in t5.

Take t5's low byte
(AND t5 with two hundred
fifty five) to put it

in the ith byte of
the vector called k. Now shift
t5 right eight bits;

store the result in
t5 again. Now that's the
last step in the loop.

No sooner have we
finished that loop than we'll start
another; no rest

for the wicked nor
those innocents whom lawyers
serve with paperwork.

Reader! Think not that
technical information
ought not be called speech;

think not diagrams,
schematics, tables, numbers,
formulae -- like the

terrifying and
uniquely moving, though cliche,
Einstein equation

"Energy is just
the same as matter, but for
a little factor,

speed of light by speed
of light, and we are ourselves
frozen energy."

Einstein's formula
to convert from joules into
kilogram-meters

squared per second squared,
for all its power, uses
just five characters.

But Einstein wrote to
physicists: formal, concise,
specific, detailed.

And sometimes we write
to machines to teach them how
tasks are carried out:

and sometimes we write
to our friends to show a way
tasks are carried out.

We write precisely
since such is our habit in
talking to machines;

we say exactly
how to do a thing or how
every detail works.

The poet has choice
of words and order, symbols,
imagery, and use

of metaphor. She
can allude, suggest, permit
ambiguities.

She need not say just
what she means, for readers can
always interpret.

Poets too, despite
their famous "license" sometimes
are constrained by rules:

How often have we
heard that some strange twist of plot
or phrase was simply

"Metri causa", for
the meter's sake, solely done
"to fit the meter"?

Programmers' art as
that of natural scientists
is to be precise,

complete in every
detail of description, not
leaving things to chance.

Reader, see how yet
technical communicants
deserve free speech rights;

see how numbers, rules,
patterns, languages you don't
yourself speak yet,

still should in law be
protected from suppression,
called valuable speech!

Ending my appeal
on that note, I will describe
the second loop. Store

nine in i; i gets
values from nine down to
naught. Each time, do this:

Use i+1 as
an index into Table
Zero: find a byte.

Call that byte p1.
Now use i for an index
in Table Zero:

find a byte and
call that byte p0. Now
use p1 as an

index into k
(a vector, remember?); thus
find a byte b1.

Use p1 as an
index into KEY, as well:
find a byte, use that

byte as an index
into Table One. Call the
byte you find b2.

Use p0 as
an index into KEY to
find a byte b3.

Take exclusive OR
of b1, b2, b3,
and store that in KEY

(not just anywhere,
though!). In KEY at the byte that's
indexed by p1.

That's it for that loop
and also for the task of
disk key decryption.



Title keys are next.
It isn't hard to decrypt
one. The rule's the same!

Well, there's one slight
change: where you use t6, it's
Table "Five", not "Four".

And this time im is
the decrypted disk key, and
KEY the title key.



How would you like to
hear how to decrypt _both_ the
disk and title keys?

All we'll need are the
encrypted versions and a
player key. No sweat!

We'll call the title
key TKEY, a pointer to
six bytes, encrypted.

We'll call the disk key
DKEY, a pointer to six
bytes, encrypted too.

We will use a few
internal variables,
once again: so i,

an integer, will
serve again as loop index.
im1 is six bytes,

im2 is six bytes.
Both vectors and the latter
holds our player key.

Now I told you once
about a player key I
think they gave to Xing --

I don't know this for
sure; DVD CCA
said so in court, though.

Otherwise I'd say
that this is just a "magic
number" from on high,

vouchsafed to mortals
from the mouths of the Muses
for our benefit.

In reality
I'm told it was discovered
by M.o.R.E.,

some Europeans
two-thirds of whom are today
still anonymous.

I don't want to make
a long excursus right now
on why that's not bad:

reverse engineers
in many fields are heroes
of technology,

for advancing the
knowledge of their colleagues or
of the public mind.

Yet in software the
recent trend has been to brand
tinkerers as thieves!

I urge you to read
the Crypto-gram newletter
on why that's not so.

Bruce can make the point
better there than I can here,
sticking to haiku.

So this number is,
once again, the player key:
(trade secret haiku?)

"Eighty-one; and then
one hundred three -- two times; then
two hundred (less three);

two hundred twenty
four; and last (of course not least)
the humble zero."

If you didn't know
a valid player key, then
you could find one out --

ask Frank Stevenson,
or his fellow programmer
wise Andreas Bogk.

All we have to do
is this: copy our DKEY
into im1,

use the rule above
that decrypts a disk key (with
im1 and its

friend im2 as
inputs) -- thus we decrypt the
disk key im1.

Use the rule above
that decrypts a title key.
TKEY and our new

disk key im1
are inputs now -- we decrypt
TKEY, and we're done.

That was straightforward.
Probably we didn't need
to explain this part,

but computers are
very literal, so we
might as well do so.



This part is really
exciting for movie fans:
decrypt DVDs!

Well, at least sectors
of DVDs, but they are
made up of sectors.

Sectors (of two to
the eleventh bytes) are the
encryption units.

Rejoice then, get some
popcorn out, and butter if
you aren't vegan.

Margarine works well
if you're vegan, or if you
are watching your weight.

I've heard you can put
tarragon on your popcorn.
I haven't tried it.

Why did I tell you
to rejoice? Because we are
about to watch a

movie, at least if
we have a good MPEG-2
player close at hand.

We need two things now,
though, beyond our MPEG-2
players and popcorn:

A vector "SEC" of
two thousand forty-eight bytes,
disk sector contents.

(These start off in their
encrypted form, but we will
leave them decrypted.)

And a vector KEY
of six bytes, the decrypted
title key we'll use.

We will use these few
internal variables:
t1 through t6,

unsigned integers.
Remember those from before?
END is a pointer

to the end of the
sector, which is SEC plus two
thousand forty-eight.

Take the first byte of
KEY (that's byte zero), perform
exclusive OR with

byte eighty-four of
SEC. Treating the result as
an integer, take

OR of that with two
hundred fifty-six. Store the
result in t1.

Take the next byte (which
is byte one) of KEY, perform
exclusive OR with

the next byte of SEC
(byte eighty-five, right?); store the
result in t2.

Take bytes two through five
of KEY and take exclusive
OR of these with their

counterparts abroad,
bytes eighty-six through eighty-nine
of our sector SEC.

Store this in t3.
(It will fit because it is
four bytes, like t3.)

I must quote myself
because we're going to do
some things once again:

(Above, in the first
part, we talked about t3:)
"Take its three low bits

(you can get them by
ANDing t3 with seven);
store this in t4.

Double t3, add
eight, subtract t4; store the
result in t3."

(Now increment SEC
by one hundred twenty-eight!)
"Make t5 zero."

Now start a loop, and
do these things as long as SEC
doesn't equal END:

Use t2 for an
index into Table Two:
find a byte b1.

Use t1 for an
index into Table Three:
find a byte b2.

Take exclusive OR
of b1 with b2 and
store this in t4.

Shift t1 right by
a single bit (like halving);
store this in t2.

Take the low bit of
t1 (so, AND it with one),
shift it left eight bits,

then take exclusive
OR of that with t4; store
this back in t1.

(The step that's coming
up is _slightly_ different from
the original.)

Use t4 for an
index into Table Five:
find a byte and store

it back in t4.
Shift t3 right by three bits,
take exclusive OR

of this with t3,
shift this right by one bit, and
take exclusive OR

of this with t3,
shift this right by eight bits, and
take exclusive OR

of this with t3,
shift this right by five bits, and
(No exclusive OR!

Orange you glad I
didn't say banana?) take
the low byte (by AND

with two hundred and
fifty-five); now store this
into t6. Phew!

Shift t3 left eight
bits, take OR with t6, and
store this in t3.

Use t6 for an
index into Table Four:
find a byte and store

it in t6. Add
t6, t5, t4; store
the sum in t5.

(Again, here's a change
from the original steps:
please don't get confused.)

In Table One use
the byte SEC points to as an
index, get a byte

there, take exclusive
OR of that byte with the low
byte of t5; store

the result where SEC
points, and increment SEC by
one. This is all that

has changed in these steps.
And we're almost done! Now shift
t5 right eight bits;

store the result in
t5 again. That is the
last step in the loop.

Now I want a drink
(mnemonics in crypto poems
are great!); exercise

from singing so long
makes me thirst for a glass of
soda, slice of pie.

For this is the end
of the decryption process;
you can now go home.



But wait! I hear a
voice entreating me to stay:
"O, the Tables tell!"

Alas, I have not
as yet declared to you the
CSS Tables.

This is a major
issue, in that I don't know
what these tables _mean_:

our noble guide has
told us in outline what they
are for, or something

of their structure. But
to me, a humble poet
of mathematics,

they are opaque, they
are certain combinations
of ancient, noble

Number. Their inner
logic, aitia, telos,
still unknown to me.

Herein a clear free
speech question: would courts see fit
to muzzle me, then,

from speaking numbers,
technical data, which I
did not make and more

cannot memorize,
cannot explain in detail,
cannot understand?

I have these numbers.
They have meaning, this is clear:
else why suppress them?

I wish to speak or
let the Muse announce through me
Tables of Numbers.

Professor Moglen!
Help defend my right to share
these numbers with you!

You called the right to
speak with PGP like that
to use Navaho.

Help me then in my
haiku quest to share these bits,
and not be censored.

Preserve my right to
speak here, in this extreme, these
mystery Tables

the products, pieces
of technique, which but a very
few will understand.

Mary Jo White, the
United States Attorney
for S.D.N.Y.,

your logic erodes
any meaningful power
Internet speakers

would retain against
state censorship. Do you care?
Have you any shame?

Fight, brave amici,
with effective, functional
argumentation.

I'll try to help by
singing these octets, until
court orders forbid.

(Sad to say, I have
removed hyphens in numbers:
poetic license.)

Table Zero is:
Five, zero, one, two, three, four,
oh, one, two, three, four.

Table One is long:
two to the eighth power bytes.
Ready? Here they are:

Fifty one; then one
hundred fifteen; fifty nine;
thirty eight; ninety

nine; thirty five; one
hundred seven; one hundred
eighteen; sixty two;

one hundred twenty
six; fifty four; forty three;
one hundred ten; then

forty six; then one
hundred two; one hundred and
twenty three; then two

hundred eleven;
one hundred forty seven;
two hundred nineteen;

six; sixty seven;
three; seventy five; then one
hundred fifty; two

hundred twenty two;
one hundred fifty eight; two
hundred fourteen; then

eleven; and then
seventy eight; fourteen; then
seventy; then one

hundred fifty five;
eighty seven; twenty three;
ninety five; then one

hundred thirty; one
hundred ninety nine; then one
hundred thirty five;

two hundred seven;
eighteen; ninety; twenty six;
eighty two; then one

hundred forty three;
two hundred two; one hundred
thirty eight; then one

hundred ninety four;
thirty one; two hundred and
seventeen; then one

hundred fifty three;
two hundred nine; zero; then
seventy three; nine;

sixty five; then one
hundred forty four; then two
hundred sixteen; one

hundred fifty two;
two hundred eight; one; and then
seventy two; eight;

sixty four; then one
hundred forty five; sixty
one; one hundred and

twenty five; fifty
three; thirty six; one hundred
nine; forty five; one

hundred one; then one
hundred sixteen; sixty; one
hundred twenty four;

fifty two; thirty
seven; one hundred eight; then
forty four; then one

hundred; one hundred
seventeen; two hundred and
twenty one; then one

hundred and fifty
seven; two hundred thirteen;
four; seventy plus

seven; thirteen; then
sixty nine; one hundred and
forty eight; then two

hundred twenty; one
hundred fifty six; then two
hundred twelve; five; then

seventy six; twelve;
sixty eight; one hundred and
forty nine; eighty

nine; twenty five; then
eighty one; one hundred and
twenty eight; then two

hundred one; then one
hundred thirty seven; one
hundred ninety three;

sixteen; eighty eight;
twenty four; eighty; then one
hundred twenty nine;

two hundred; then one
hundred thirty six; then one
hundred ninety two;

seventeen; then two
hundred fifteen; one hundred
fifty one; then two

hundred twenty three;
two; seventy one; seven;
seventy nine; one

hundred forty six;
two hundred eighteen; then one
hundred fifty four;

two hundred ten; then
fifteen; seventy four; ten;
sixty six; then one

hundred fifty nine;
eighty three; nineteen; ninety
one; one hundred and

thirty four; then one
hundred ninety five; then one
hundred thirty one;

two hundred three; then
twenty two; ninety four; then
thirty; eighty six;

one hundred thirty
nine; two hundred six; then one
hundred forty two;

one hundred ninety
eight; twenty seven; then one
hundred seventy

nine; two hundred and
forty three; one hundred and
eighty seven; one

hundred sixty six;
two hundred twenty seven;
one hundred sixty

three; two hundred and
thirty five; two hundred and
forty six; then one

hundred ninety; two
hundred fifty four; then one
hundred eighty two;

then one hundred and
seventy one; two hundred
thirty eight; then one

hundred seventy
four; two hundred thirty; two
hundred fifty one;

fifty five; then one
hundred nineteen; sixty three;
thirty four; then one

hundred three; thirty
nine; one hundred eleven;
one hundred fourteen;

fifty eight; then one
hundred twenty two; fifty;
forty seven; one

hundred six; forty
two; ninety eight; one hundred
twenty seven; one

hundred eighty five;
two hundred forty nine; one
hundred seventy

seven; one hundred
sixty; two hundred thirty
three; one hundred and

sixty nine; then two
hundred twenty five; then two
hundred forty; one

hundred eighty four;
two hundred forty eight; one
hundred seventy

six; one hundred and
sixty one; two hundred and
thirty two; then one

hundred sixty eight;
two hundred twenty four; two
hundred forty one;

ninety three; twenty
nine; eighty five; one hundred
thirty two; then two

hundred five; then one
hundred forty one; then one
hundred and ninety

seven; twenty; then
ninety two; twenty eight; then
eighty four; then one

hundred thirty three;
two hundred four; one hundred
forty; one hundred

ninety six; twenty
one; one hundred eighty nine;
two hundred fifty

three; one hundred and
eighty one; one hundred and
sixty four; then two

hundred and thirty
seven; then one hundred and
seventy three; two

hundred twenty nine;
two hundred forty four; one
hundred eighty eight;

two hundred fifty
two; one hundred eighty; one
hundred sixty five;

two hundred thirty
six; one hundred seventy
two; two hundred and

twenty eight; then two
hundred forty five; fifty
seven; one hundred

twenty one; forty
nine; thirty two; one hundred
five; forty one; then

ninety seven; one
hundred twelve; fifty six; one
hundred twenty; then

forty eight; thirty
three; one hundred four; forty;
ninety six; then one

hundred thirteen; one
hundred eighty three; then two
hundred and forty

seven; one hundred
ninety one; one hundred and
sixty two; then two

hundred thirty one;
one hundred sixty seven;
two hundred thirty

nine; two hundred and
forty two; one hundred and
eighty six; then two

hundred fifty; one
hundred seventy eight; one
hundred seventy

five; two hundred and
thirty four; one hundred and
seventy; then two

hundred twenty six;
two hundred fifty five.
That's the whole Table.

Just when you thought it
was safe, here is Table Two,
which has the same length:

Zero; one; two; three;
four; five; six; seven; nine; eight;
eleven; ten; then

thirteen; twelve; fifteen;
fourteen; eighteen; nineteen; then
sixteen; seventeen;

twenty two; twenty
three; twenty; twenty one; then
twenty seven; then

twenty six; twenty
five; twenty four; thirty one;
thirty; twenty nine;

twenty eight; thirty
six; thirty seven; thirty
eight; thirty nine; then

thirty two; thirty
three; thirty four; thirty five;
forty five; forty

four; forty seven;
forty six; forty one; then
forty; forty three;

forty two; fifty
four; fifty five; fifty two;
fifty three; fifty;

fifty one; forty
eight; forty nine; sixty three;
sixty two; sixty

one; sixty; fifty
nine; fifty eight; fifty plus
seven; fifty six;

seventy three; then
seventy two; seventy
five; seventy four;

seventy seven;
seventy six; seventy
nine; seventy eight;

sixty four; sixty
five; sixty six; sixty plus
seven; sixty eight;

sixty nine; and then
seventy; seventy one;
ninety one; ninety;

eighty nine; eighty
eight; ninety five; ninety four;
ninety three; ninety

two; eighty two; then
eighty three; eighty; eighty
one; eighty six; then

eighty seven; then
eighty four; eighty five; one
hundred nine; then one

hundred eight; then one
hundred eleven; then one
hundred ten; then one

hundred five; then one
hundred four; one hundred and
seven; one hundred

six; one hundred; one
hundred one; one hundred two;
one hundred three; then

ninety six; ninety
seven; ninety eight; ninety
nine; one hundred and

twenty seven; one
hundred twenty six; then one
hundred twenty five;

one hundred twenty
four; one hundred twenty three;
one hundred twenty

two; one hundred and
twenty one; one hundred and
twenty; one hundred

eighteen; one hundred
nineteen; one hundred sixteen;
then one hundred and

seventeen; then one
hundred fourteen; one hundred
fifteen; one hundred

twelve; one hundred and
thirteen; one hundred forty
six; one hundred and

forty seven; one
hundred forty four; then one
hundred forty five;

one hundred fifty;
one hundred fifty one; one
hundred forty eight;

one hundred forty
nine; one hundred fifty five;
one hundred fifty

four; one hundred and
fifty three; one hundred and
fifty two; then one

hundred fifty nine;
one hundred fifty eight; one
hundred and fifty

seven; one hundred
fifty six; one hundred and
twenty eight; then one

hundred twenty nine;
one hundred thirty; then one
hundred thirty one;

one hundred thirty
two; one hundred thirty three;
one hundred thirty

four; one hundred and
thirty five; one hundred and
thirty seven; one

hundred thirty six;
one hundred thirty nine; one
hundred thirty eight;

one hundred forty
one; one hundred forty; one
hundred forty three;

one hundred forty
two; one hundred eighty two;
one hundred eighty

three; one hundred and
eighty; one hundred eighty
one; one hundred and

seventy eight; one
hundred seventy nine; one
hundred seventy

six; one hundred and
seventy seven; then one
hundred ninety one;

one hundred ninety;
one hundred eighty nine; one
hundred eighty eight;

one hundred eighty
seven; one hundred eighty
six; one hundred and

eighty five; then one
hundred eighty four; then one
hundred sixty four;

one hundred sixty
five; one hundred sixty six;
one hundred sixty

seven; one hundred
sixty; one hundred sixty
one; one hundred and

sixty two; then one
hundred sixty three; then one
hundred seventy

three; one hundred and
seventy two; one hundred
seventy five; one

hundred seventy
four; one hundred sixty nine;
one hundred sixty

eight; one hundred and
seventy one; one hundred
seventy; then two

hundred nineteen; two
hundred eighteen; two hundred
seventeen; then two

hundred sixteen; two
hundred twenty three; then two
hundred twenty two;

two hundred twenty
one; two hundred twenty; two
hundred ten; then two

hundred eleven;
two hundred eight; two hundred
nine; two hundred and

fourteen; two hundred
fifteen; two hundred twelve; two
hundred thirteen; two

hundred one; then two
hundred; two hundred three; two
hundred two; then two

hundred five; then two
hundred four; two hundred and
seven; two hundred

six; one hundred and
ninety two; one hundred and
ninety three; then one

hundred ninety four;
one hundred ninety five; one
hundred ninety six;

one hundred ninety
seven; one hundred ninety
eight; one hundred and

ninety nine; then two
hundred fifty five; then two
hundred fifty four;

two hundred fifty
three; two hundred fifty two;
two hundred fifty

one; two hundred and
fifty; two hundred forty
nine; two hundred and

forty eight; then two
hundred forty six; then two
hundred and forty

seven; two hundred
forty four; two hundred and
forty five; then two

hundred forty two;
two hundred forty three; two
hundred forty; two

hundred forty one;
two hundred thirty seven;
two hundred thirty

six; two hundred and
thirty nine; two hundred and
thirty eight; then two

hundred thirty three;
two hundred thirty two; two
hundred thirty five;

two hundred thirty
four; two hundred twenty eight;
two hundred twenty

nine; two hundred and
thirty; two hundred thirty
one; two hundred and

twenty four; then two
hundred twenty five; then two
hundred twenty six;

two hundred twenty
seven. That's the end of the
Table Two listing.

Table Three repeats
itself sixty-four times with
this eight-byte sequence:

Zero, thirty six,
seventy three, one hundred
nine, one hundred and

forty six, then one
hundred eighty two, and then
two hundred nineteen,

and last of all, two
to the eighth, less one (or two
hundred fifty five).

Dr. Touretzky
has a more concise account
of what Table Four

is for, and where it
comes from; but for now, I think
I will just list it:

Zero; one hundred
twenty eight; sixty four; one
hundred ninety two;

thirty two; then one
hundred sixty; ninety six;
two hundred twenty

four; sixteen; then one
hundred forty four; eighty;
two hundred eight; then

forty eight; then one
hundred seventy six; one
hundred twelve; then two

hundred forty; eight;
one hundred thirty six; then
seventy two; two

hundred; forty; one
hundred sixty eight; then one
hundred four; then two

hundred thirty two;
twenty four; one hundred and
fifty two; eighty

eight; two hundred and
sixteen; fifty six; then one
hundred eighty four;

one hundred twenty;
two hundred forty eight; four;
one hundred thirty

two; sixty eight; one
hundred ninety six; thirty
six; one hundred and

sixty four; then one
hundred; two hundred twenty
eight; twenty; then one

hundred forty eight;
eighty four; two hundred twelve;
fifty two; then one

hundred eighty; one
hundred sixteen; two hundred
forty four; twelve; one

hundred forty; then
seventy six; two hundred
four; forty four; one

hundred seventy
two; one hundred eight; then two
hundred thirty six;

twenty eight; then one
hundred fifty six; ninety
two; two hundred and

twenty; sixty; one
hundred eighty eight; then one
hundred twenty four;

two hundred fifty
two; two; one hundred thirty;
sixty six; then one

hundred ninety four;
thirty four; one hundred and
sixty two; ninety

eight; two hundred and
twenty six; eighteen; then one
hundred forty six;

eighty two; then two
hundred ten; fifty; then one
hundred seventy

eight; one hundred and
fourteen; two hundred forty
two; ten; one hundred

thirty eight; and then
seventy four; two hundred
two; forty two; one

hundred seventy;
one hundred six; two hundred
thirty four; twenty

six; one hundred and
fifty four; ninety; then two
hundred eighteen; then

fifty eight; then one
hundred eighty six; then one
hundred twenty two;

two hundred fifty;
six; one hundred thirty four;
seventy; then one

hundred ninety eight;
thirty eight; one hundred and
sixty six; then one

hundred two; then two
hundred thirty; twenty two;
one hundred fifty;

eighty six; then two
hundred fourteen; fifty four;
one hundred eighty

two; one hundred and
eighteen; two hundred forty
six; fourteen; then one

hundred forty two;
seventy eight; two hundred
six; forty six; one

hundred seventy
four; one hundred ten; then two
hundred thirty eight;

thirty; one hundred
fifty eight; ninety four; two
hundred twenty two;

sixty two; then one
hundred ninety; one hundred
twenty six; then two

hundred fifty four;
one; one hundred twenty nine;
sixty five; then one

hundred ninety three;
thirty three; one hundred and
sixty one; ninety

seven; two hundred
twenty five; seventeen; one
hundred forty five;

eighty one; then two
hundred nine; forty nine; one
hundred seventy

seven; one hundred
thirteen; two hundred forty
one; nine; one hundred

thirty seven; then
seventy three; two hundred
one; forty one; one

hundred sixty nine;
one hundred five; two hundred
thirty three; twenty

five; one hundred and
fifty three; eighty nine; two
hundred seventeen;

fifty seven; one
hundred eighty five; then one
hundred twenty one;

two hundred forty
nine; five; one hundred thirty
three; sixty nine; one

hundred and ninety
seven; thirty seven; one
hundred sixty five;

one hundred one; two
hundred twenty nine; twenty
one; one hundred and

forty nine; eighty
five; two hundred thirteen; then
fifty three; then one

hundred eighty one;
one hundred seventeen; two
hundred forty five;

thirteen; one hundred
forty one; seventy plus
seven; two hundred

five; forty five; one
hundred seventy three; one
hundred nine; then two

hundred and thirty
seven; twenty nine; then one
hundred and fifty

seven; ninety three;
two hundred twenty one; then
sixty one; then one

hundred eighty nine;
one hundred twenty five; two
hundred fifty three;

three; one hundred and
thirty one; sixty seven;
one hundred ninety

five; thirty five; one
hundred sixty three; ninety
nine; two hundred and

twenty seven; then
nineteen; one hundred forty
seven; eighty three;

then two hundred and
eleven; fifty one; one
hundred seventy

nine; one hundred and
fifteen; two hundred forty
three; eleven; one

hundred thirty nine;
seventy five; two hundred
three; forty three; one

hundred seventy
one; one hundred seven; two
hundred thirty five;

twenty seven; one
hundred fifty five; ninety
one; two hundred and

nineteen; fifty nine;
one hundred eighty seven;
one hundred twenty

three; two hundred and
fifty one; seven; then one
hundred thirty five;

seventy one; one
hundred ninety nine; thirty
nine; one hundred and

sixty seven; one
hundred three; two hundred and
thirty one; twenty

three; one hundred and
fifty one; eighty seven;
two hundred fifteen;

fifty five; then one
hundred eighty three; then one
hundred nineteen; two

hundred and forty
seven; fifteen; one hundred
forty three; and then

seventy nine; two
hundred seven; forty plus
seven; one hundred

seventy five; one
hundred eleven; then two
hundred thirty nine;

thirty one; then one
hundred fifty nine; ninety
five; two hundred and

twenty three; sixty
three; one hundred ninety one;
one hundred twenty

seven; two hundred
fifty five. And that's the end
of the fourth Table.

(You'll get Table Five
if you flip each bit in the
Table Four, supra.)

Have mercy on me,
Lord, and lesser judges, and
on Jon Johansen.
****************************************************************************
The History of the DeCSS Haiku
by Seth Schoen
Works like Hesiod's Theogony are not just spoken poetic entertainment; they delineate the world view of their culture. In the same way, the DeCSS epic instructs the "listener" in the world view and cultural values of those opposing [censorship of] DeCSS.
Leigh Ann Hildebrand, slashdot comment, February 25, 2001
we have only words against
John Dos Passos, "The Camera Eye (51)", in The Big Money
I wrote the poem known as the "DeCSS Haiku" three years ago, in 2001. (The poem's full title is "How to decrypt a / DVD, in haiku form / Thanks, Prof. D. S. T.") The 456-stanza work, sometimes described as an "epic", was an anonymous contribution to Prof. David S. Touretzky's "Gallery of CSS Descramblers", which collects a variety of ways of expressing technical information about the decryption of DVDs. My poem has now become a part of the folklore of the Internet.
The poem includes a traditional opening invocation to the Muse:
Now help me, Muse, for
I wish to tell a piece of
controversial math.
It proceeds to describe, using only haiku-like verses with lines of five, seven, and five syllables, all the mathematical steps required to convert an encrypted DVD into a usable form.
Prof. Touretzky created his Gallery shortly after U.S. movie studios began their quest to suppress the publication of such information. The studios had filed a lawsuit captioned Universal v. Reimerdes (later known as Universal v. Corley). Touretzky was concerned about the free speech implications of the case, and the purported distinction between computer software and other forms of expression. As Touretzky explains:
If code that can be directly compiled and executed may be suppressed under the DMCA, as Judge Kaplan asserts in his preliminary ruling, but a textual description of the same algorithm may not be suppressed, then where exactly should the line be drawn? [The Gallery of CSS Descramblers] was created to explore this issue, and point out the absurdity of Judge Kaplan's position that source code can be legally differentiated from other forms of written expression.
Touretzky set about collecting a remarkably wide variety of descriptions of the DVD decryption process, with the aim of promoting critical thought about what expression people are prepared to censor, and why. This process resulted in an outpouring of creativity from the Internet community, with the DVD CSS algorithm described and redescribed from an assortment of scientific and artistic angles. Most contributors seemed to view the creation of each new adaptation of DeCSS as a form of political protest. As Touretzky's correspondence with the Motion Picture Association of America made clear, each adaptation was also a thorny new legal question: could this version be called a "circumvention device"? Could the courts suppress its publication? Nobody seemed able to offer a clear answer; a studio lawyer was later willing to opine to the Wall Street Journal only that there were practical limits to the industry's willingness to spend money fighting these works. So when the studios asked Touretzky to take his Gallery off the Internet, he put the question to them directly: which versions did they object to? They told him that they would consider the question "and respond appropriately at the proper time". Professor Touretzky is still waiting.
Impressed by other people's contributions to the rapidly-growing gallery, I decided I had to make some kind of effort of my own. I had particularly admired Joe Wecker's song "Descramble (This Function Is Void)", and I imagined that my contribution would have to be in the realm of literature rather than of visual art. I toyed with translating a description of the algorithm into Latin (on the theory that this might appeal to lawyers, who readily recognize that Latin is expressive and meaningful even though the vast majority of people can't understand it). I quickly abandoned this project when I ran into trouble with technical terminology such as "array", "bit", "shift", "pointer", etc. ("Algorithm" could probably be "ratio" and "loop" might be "iteratio", but there were still dozens of outstanding terminological difficulties.)
Instead, I settled on the idea of putting the algorithm into haiku form. A strange tradition current among programmers calls for the use of the 5-7-5 pattern -- preferably cleverly -- to express technology, or jokes about technology, or really anything at all, just for the fun or the challenge of writing within the constraint. I remember particularly that the UC Berkeley Computer Science Undergraduate Association has a mysterious tradition of writing haiku poems about the chemical element zinc. The tradition seemed to start with a 1995 transcript of a conversation in which CS students began to write poems about zinc, but it continued within and without the Berkeley CSUA, and I know that I personally helped spread the tradition to other forums and communities. (This being geek humor, it also expanded to include horrible puns. I perpetrated "Healthful supplement / present here where food's prepared: / it's the kitchen zinc", "Sensations coming / from metallic reactions: / a zinking feeling", "Gossips and costly / seagoing vessels conjoined / thus: loose lips, zinc ships", and "Rene Descartes finds / his elemental self: I / zinc, therefore I am". Evan Prodromou countered with "Enough! This is the / worst form of humor. I won't / zinc to your level", but nonetheless offered "Shipwreck survivor / either saves his load or flees. / Which one? Zinc or swim?".) It is probably fair to say that almost all uses of haiku in the technical community are silly. Nonetheless, considerable effort often goes into their creation. In a better-known example, the on-line magazine Salon asked its readers in 1998 to submit computer error messages in the form of haiku; the results became an instant Internet classic. ("A file that big? / It might be very useful. / But now it is gone.")
It's hard to say, then, how this particular (and rather odd) haiku tradition started, or why it seemed to hold particular appeal for computer programmers. But it was obvious to me that a description of DVD decryption in haiku stanzas would fit perfectly into the tradition, and I decided to create one.
Writing the bulk of the poem itself took me around 15 hours over the course of several days, excluding the CSS tables (whose construction I describe below). As Leigh Ann Hildebrand observed, there were classical influences at work in my efforts; I realized immediately that I would need to begin with an invocation of the Muse. (My poetic skills were not up to constructing dactyllic hexameters, and I had already settled on the haiku form.) I used Prof. Touretzky's article "The CSS Decryption Algorithm" as my main source for the technical details, but I set myself a strict rule against using hexadecimal constants, because they seemed unpoetic. Everything had to come back into decimal form, because a number is a number. I also felt that it was important to include passages honoring and praising heroes (even using an epithet in the traditional epic way: "wise Andreas Bogk", only partly metri causa) together with a substantial amount of context. After all, one of the ways long poetry maintains interest is by telling several stories at once, and by painting scenery. Finally, I felt that expressing the fear of censorship directly and repeatedly within the poem itself created an interesting tension. It emphasized that the poem had really been written by a human author with a human voice and his own interests and passions. Aware of the prospect of censorship, the poem confronts would-be censors directly and takes them to task. By contrast, most source code is relatively defenseless: it can't fight against its own suppression, and it gives less direct evidence of being in a human voice, leading some people to accept its stigmatization as "merely mechanical" or "merely functional". I feel that it is essential that the poem constantly pleads for its own life -- an effect accomplished comically yet powerfully by Joe Wecker in "Descramble (This Function Is Void)":
I hate the DMCA,
It makes this song illegal.
This says: if you censor this, you are not censoring a "machine": you are censoring a person -- a singer, a poet, an author, who knows you and knows what you are doing.
At first, I told nobody about my project. I submitted the poem to Prof. Touretzky through an anonymous remailer, which concealed my identity even from him. Later, I revealed the secret to a few friends. In light of the DVD CCA's willingness to sue even a t-shirt vendor for printing the algorithm on clothing, I thought it might be prudent not to be publicly identified as the haiku author. Meanwhile, Touretzky (who still didn't know my name) was very pleased with my work and immediately included it in his Gallery. (Touretzky responded to the lawsuit against the t-shirt publisher by saying, memorably, that "if you can put it on a t-shirt, it's speech".)
A few months after I finished the DeCSS Haiku, Paul H. Henry, a writer in Seattle, complained about Western "joke haiku" forms, arguing that the practice I discussed above typically lacks literary merit, that it does not accord with the traditional Japanese cultural meaning of haiku, and that the verses produced in this way technically are not haiku but senryu. I think this critique should probably receive more attention than it has. It's clear that the practice of writing 5-7-5 verses and calling them "haiku" seizes on only one aspect of the haiku form and entirely removes it from its original cultural context. I freely admit that my poem has no cultural continuity with the ancient Japanese haiku artform, although I think it has its own sort of literary merit. There is in some sense more art in other forms of constrained writing such as lipography, in which a letter or group of letters, typically "e", is omitted. I have in fact extensively practiced writing and speaking without the letter "e", and have been able to do it reasonably naturally for hours at a time. (You can see some of my very first attempts; I've gotten a lot better since then.) I considered writing the "DeCSS Lipogram" -- presumably it would have been called "Unscrambling Hollywood's DVD CSS Algorithm: A Lipographic How-To for Linux DVD Support, or Satisfying Your Curiosity" -- but I never did so.
A greater challenge might have been making the verses more authentic as haiku by adding kigo, or seasonal references. "Plane to CPTWG / lands in L.A. summer heat / time to meet John Hoy." In fact, the absence of seasonal references or other lyrical elements, and the primary focus on factual matters, are clues that my poem properly falls into the ancient tradition of didactic poetry. Poems that teach skills or argue points of view have existed for thousands of years; Vergil's Georgics, which offers practical advice to farmers, and Lucretius's De Rerum Natura, which makes an extended philosophical argument, are well-known Roman models. Didactic poetry has rarely been as popular as more imaginative literature, but it has had an uninterrupted presence in art up to the present day. (Students are still constructing their own mnemonic didactic poetry to assist in memorization.)
After my poem was published, it got a lot of attention: it was mentioned in articles in The Wall Street Journal, The San Francisco Chronicle, The New York Times Magazine, Wired, and elsewhere. (The New York Times Magazine featured and excerpted it as an exemplar of one of the great ideas of the year 2001 -- that code is speech -- in an end-of-year piece by Prof. Siva Vaidhyanathan. The Wall Street Journal piece, "Banned Code Lives in Poetry and Song" by David P. Hamilton, even quoted in full the stanzas containing the alleged Xing player key. Hamilton had, through an attorney, arranged an interview with me in San Francisco's Financial District. As the only journalist who knew the identity of the haiku's author, he was careful to avoid giving any clues that might have helped movie studio lawyers find me.)
The poem also appeared as required reading in several law schools. It turned up on syllabi for courses taught by Jessica Litman, Dennis Karjala, and Barbara Simons, among others. It may have been the first time certain professors found themselves teaching poetry in their copyright classes. The poem was also featured as an artwork in the catalogue of Carrie McLaren's exhibition Illegal Art: Freedom of Expression in the Corporate Age, which opened in galleries in New York, San Francisco, and Chicago.
Most readers are not aware that the DeCSS Haiku contains an easter egg. There is a mnemonic for pi in the two stanzas
Now I want a drink
(mnemonics in crypto poems
are great!); exercise
from singing so long
makes me thirst for a glass of
soda, slice of pie.
This mnemonic is partly inspired by the mnemonic for pi devised by James Jeans (given by Martin Gardner in chapter 11 of The Scientific American Book of Mathematical Puzzles and Diversions), and partly by the reported saying of medieval scribes: "Nunc scripsi totum pro Christo, da mihi potum". (As Dave Barry says, I am not making this up.)
If you count the number of letters in each word in the stanzas given ("now" = 3, "I" = 1, "want" = 4, etc.), you obtain the first twelve digits of the decimal expansion of pi. The poem offers two separate hints to their presence: the reference to "mnemonics in crypto poems", and the mention of a "slice of pie". This is a crypto poem, these lines are a mnemonic, and they offer their reader a tiny slice of pi. (It also bears mentioning that, at the time I wrote the poem, I had an account on a Unix machine called soda and another account on a second machine called pie.)
The poem contains a list of over seven hundred numbers (the "CSS tables" in the original version of DeCSS, which subsequent research revealed are not actually required for a CSS implementation). These numbers are listed in English in 5-7-5 syllabic form, and many people have wondered whether I constructed these stanzas by hand or automatically. The answer is that I used the NetBSD number(6) program together with some shell scripts to convert the "csstab" from hexadecimal C arrays into lists of numbers in English. Then I wrote a program of my own in Python to attempt to place long lists of English numbers into 5-7-5 form, using a trial-and-error algorithm I developed. (It isn't possible to scan arbitrary lists of numbers in a 5-7-5 syllabic pattern without some padding. For example, "one hundred seventy-seven" can't ever be the first line of a haiku. My program was able to add appropriate padding syllables to avoid this and other difficulties. In this case, it would have generated something like "and then one hundred / seventy-seven ..." to avoid a line break in the middle of a word. It could also attempt to write the number as "one hundred and seventy-seven", although that wouldn't help in the particular situation just described.)
My friends Don Marti and Danny O'Brien have each written related haiku-finding programs that locate 5-7-5 syllabic patterns in existing English text, using the Carnegie Mellon phonetic dictionary to determine each word's syllabic value. Don's program is lost to posterity, but Danny's is available on-line; it makes use of the Python generator feature.
Before it was lost, Don's program found the following haiku hidden in an early interview with Richard Stallman (as Stallman lamented the social costs of the present copyright system):
One person gains one
dollar by destroying two
dollars' worth of wealth.
I wrote the DeCSS Haiku because I was angry at the attempts by lawyers for the entertainment industry and the government to trivialize the free expression rights of programmers and other people engaged in technical communication. I believe, and I said repeatedly in my poem, that one of the reasons courts and others have countenanced the censorship of software is that they do not understand it. (This isn't the only reason. Dorothy Denning and Michael Shamos, who can read programs perfectly well, have have argued seriously against their own First Amendment rights to do so. Another CMU computer scientist by the name of Seth Goldstein even said that "Computer code is not speech because it does something. It's an artifact. It's closer to a machine than it is a poem.") So some people do consider code different (although they frequently make the mistake of ignoring the human volition involved in making machines use software to do things). The legal questions that would face a practitioner or a judge are significantly more involved, on account of the epicycles that have accumulated in First Amendment doctrine over time (strict scrutiny, intermediate scrutiny, content-neutrality, the O'Brien test...). Yet ultimately much comes down to cultural framing of a free speech controversy as a free speech controversy: if a court accepts that something is "a First Amendment case", the speaker is extremely likely to win, especially if the party on the other side is a government. It's hard to avoid the inherent sympathy Judge Patel bears toward Professor Bernstein (a speaker whose expression is crushed by the awesome might of government bureaucracy) or the equally apparent suspicion with which Judge Kaplan regards Emmanuel Goldstein (a self-avowed hacker seemingly hell-bent on trouble). These attitudes seem to me to be visible behind all the doctrinal questions; without committing myself for all time to a position in a contentious area of legal theory, I would say that Judge Patel fought to show why her case was a free speech case and that Judge Kaplan fought to show why his was not. The question of which approach seems natural would then be not primarily a question of legal doctrines, standards, or precedents. It would instead be a conceptual, cultural battle: shall programs be compared to epidemics of disease (evil, menacing, worthy only of quarantine) or to books in libraries (the cornerstones of our culture and our civilization)?
I wish programmers got more worked up about that metaphor. It ought to offend them. Your work, creating new and useful technology, is like an outbreak of cholera or botulism?
Despite the fact that some prominent computer scientists have taken a different view, it is clear in practice that support for the idea that "code is speech" has some amount of connection or correlation to programming experience. In my experience, programmers are more likely than non-programmers to sympathize readily with, for example, the plaintiff in the Bernstein crypto-export case. One simple explanation is that people most strongly or most easily value freedoms for which they have some use, or of which they have some experience. People who like chocolate are probably denser at the front lines of the movement to legalize chocolate than are those who are allergic to it. (I do not disparage the ranks of altruistic activists; they are real, and they are heroes.) We can go beyond this observation, though, by considering what people intuitively believe about what one software is. Is code something appliance-like you get in a box in a store, or is it something you read and write and talk about? Have you been to a party where people were talking about creating software? Their fundamentally different personal experiences of software color people's intuitions about the kind of thing software is (and also about what they ought to be able to do with it). (Neal Stephenson discusses these contrasts at some length in his In the Beginning Was the Command Line, where he writes about the metamorphosis of software from cultural activity into packaged consumer product. As Stephenson recognizes, the tension between these two experiences of software is very much in play today. But selling software with a fixed feature set, as its feature set, as a product at retail is an idea that Stephenson points out had to be invented.)
I think this chasm of experience is real and difficult to bridge. I know that most of my family members have never experienced software as a text they wrote. Almost all of them have only thought of software in terms of what it did, not how it worked, how it was written, what it taught them, or how it could be made to do something else. (In a vastly more trivial poem on the freedom to tinker, popularly called "Fair Seuss", I took all these for granted. I take this to be one of Ms. Hildebrand's observations about world-view in my poetry.)
But telling people that there is more to software than they have experienced will not do much. Nothing will go further to add depth and realism to the larger culture's view of computer programming than making computer programming itself a part of the larger culture. I believe that a future in which the basic experience of programming is considered an ordinary part of education is a future that will better appreciate (and make use of) the nature of software than our present can. We have spoken idly of "computer literacy" without defining it (or engaging with its dozens of critics). We programmers might forget easily that literacy itself is still a major struggle in the world, or that even recently it was not assumed that everyone would know how to read and write. We might forget easily how powerful the consequences have been of changing that assumption and making, or trying to make, literacy an everyday skill.
And making a basic knowledge of programming ubiquitous would also have profound political consequences: for one thing, it would undermine the reasoning that emphasizes that only a very few people know how to make practical use of technical information. Those who reason this way say that it is only natural to try to frighten or coerce those few people to induce them not to share the fruits of their skill with the public; this is the whole rationale for the DMCA device trafficking ban, founded on a distinction between software toolmakers (the few) and software tool users (the many). It is also the rationale for the DMCA definition of "effective", which seems bizarre to programmers with its reference to "ordinary course of operation", as if the use of computers didn't routinely involve altering their function.
The larger culture today assumes -- and many people rely on the assumption -- that "normal" people don't know how to program, that only hackers do that. In many ways, programming is a socially marginal activity, viewed with considerable suspicion. (I rarely experience this suspicion myself since so many of my friends are part of programming communities, but I have no doubt of its existence.) But reading books and periodicals -- traditional literacy -- is not a marginal activity. Teaching reading and writing requires a decision that these skills are valuable and teachable (since, unlike spoken language, some conscious effort is required for children to acquire these skills). Can we make programming become respected and ubiquitous in the way that reading, writing, and arithmetic are?


(Credit: The Boondocks, by Aaron McGruder, March 3, 2001, panel 2. Copyright 2001 Aaron McGruder. Distributed by Universal Press Syndicate. Used pursuant to 17 USC 107.)
Aaron McGruder's "The Boondocks" comic strip for March 3, 2001 shows a student asking his teacher "Why is it perfectly legal to post a diagram of how to build a bomb on the net, but you can't post a code that descrambles DVDs?". It is a striking question. It is a concrete question; real and possibly lethal explosives techniques are lawfully available on-line.
So somehow in our world the law allows us to say how to kill people, but not how to decrypt DVDs. We can also depict things that many people find offensive -- including graphic acts of violence -- and we can even advocate violence, as long as it isn't sufficiently particularized to threaten identifiable people. (Famously, you can apparently under the law tell people how to make thermonuclear weapons, though no precedent addresses that question head-on.) And just recently, even where other countries suppressed practical directions for sabotaging railways, they continue to be available in the United States. I hope I am clear that I do not want any of these other things suppressed. It's just bizarre to see that information of concrete use to the commission of direct physical violence is better protected in our country today than valuable technical information that was, in fact, used, as we predicted, to create innovative and useful DVD players for Linux and other platforms. An observer might be shocked to compare the Bernstein and Corley cases. She would perceive that the courts have concluded that it's wrong to censor software in the name of preventing terrorism, but it's all right when what's at stake is the ability to copy movies.
As some First Amendment historians read the story, it was difficult in every age to make people recognize that various things were speech, even though later ages grew comfortable with that recognition. (Today's contested forms of speech include not only software but also body art and erotic dance; dance in general was also once considered non-speech, perhaps for some of the reasons I describe below.)
The highest irony in light of the position of movie studios on the legal protection of software expression is that movies were originally not recognized as speech. Mutual Film Corp. v. Industrial Commission of Ohio, 236 U.S. 230 (1915), addressed the question head-on and held that movies were unprotected by the First Amendment. Other courts of the same era took a similar line. It's hard to give a single reason for this that would make any sense to us today. We might say that movies were unprotected because they are not textual (and the roots of the First Amendment center on protection of text, especially of text that argues a position, because of the important place of argument in our traditions). We might say that they were unprotected because they are mediated by machinery (and, indeed, motion pictures were regulated extensively by judges unafraid to say that they were merely machines). What's more, they were seen as creating a risk of adverse effects, and so they were unprotected for fear of the consequences they might produce. But it might be best of all to say that movies were not recognized as protected mainly because they were unfamiliar.
Movies were eventually recognized as enjoying practically as much First Amendment protection as a book -- but this took time. In fact, it took decades for the current understanding of filmmaking to develop. Joseph Burstyn, Inc., v. Wilson, 343 U.S. 495 (1952) concluded that films did have first amendment protection, and. Freedman v. Maryland, 380 U.S. 51 (1965) came closer yet to extending protection generally equal to that of books. (Thanks to Robert Corn-Revere's "Internet and First Amendment in Speech" for a concise summary of this history. The particular regulations and rationales for regulation of film in the Mutual Film era can be discussed in more detail, but this should suffice for the point: "common sense" 90 years ago was that new media were importantly different and importantly less protected; the new media had to fight both in the courts and popular culture to come to eventual parity with more traditional media.)
We are just now with software roughly where Mutual Film Corp. and other decisions of its era were with film.
Because of this, we have an odd problem today; we are constantly trying to show the literary merit of software. We make reference to the fact that some people do read software as literature (in the Perl poetry competitions, the IOCCC, etc.), or that they discuss matters of software style and readability. We must emphasize the extent to which people read and discuss software, and especially the extent to which they study the form and technique of the composition of the software, its literary merit, etc. But nobody today holds other textual works, like books, to such standards. (Do we worry about showing the extent to which people read cookbooks for literary merit, or home repair manuals for literary merit, or textbooks for literary merit, or tables of logarithms for literary merit? Are these books not speech because of their functionality?)
It's sad to see much of the self-identified "creative community" fail to support intellectual freedom here. Particularly galling is the short-sighted proprietary attitude toward the First Amendment expressed by some people in the culture industries, who suggested in Corley and many other contexts that the First Amendment smiles on the culture industries' expression and overlooks harm to other people's expression. They refer to themselves, but not their critics (and not Jon Johansen, not me, not any Gallery of CSS Descramblers contributor, not any programmer) as creative. We know free speech, the industries seem to say, because we practice it, and free speech is our speech, the First Amendment is our amendment. After all, how could artists possibly be censors?
As Cindy Cohn says, we don't mind if the movie studios use the protection of the First Amendment, "we'd just like them to share".
Looking back at the Corley case, I am frustrated. I am frustrated not only that we lost, not only that the censorship continues, and not only that allies of the studio plaintiffs keep on trivializing programmers' speech rights. More than anything, I'm frustrated that public opinion mainly dismisses what happened as a matter of pursuing hackers. Public opinion says the hackers got what was coming to them, because they were hackers. The court of public opinion, with some exceptions, seems to be affirming the Second Circuit.
Meanwhile, serious problems with the DMCA go unaddressed, and the traditional legal status of reverse engineering is under attack. Public opinion is not rising to defend it; since I wrote the DeCSS Haiku, property rhetoric has continued to its success in making people "brand / tinkerers as thieves". We are not communicating effectively, even though so many of our best cultural traditions are on our side. As I told the Wall Street Journal, "a computer program is a literary work [and it is] strange and difficult [...] to classify computer programs and technical information as something other than speech". Yet having people take this seriously, escaping from marginalization, and even capturing the public's attention, will be a major task. It calls for cultural changes that will not be accomplished without creativity.
If, reader, however, you are at a loss for what political act to take; if you are no designer of network architectures, no writer of legal briefs or op-eds, no poet and unacknowledged legislator -- then I have a suggestion for you. Learn to program, perhaps in the Python language, which was created specifically to be a first programming language for new programmers. Then teach one other person to be a programmer, too.
Thanks to James S. Tyre, David P. Hamilton, David S. Touretzky, Cindy Cohn, Wendy Seltzer, Joseph Wecker, and Jon Lech Johansen. Thanks also to the following people mentioned in the poem: Ian Goldberg, David Wagner, Frank Stevenson, wise Andreas Bogk, Bruce Schneier, Eben Moglen, and the 2600 amici. (Thanks, finally, to Eric Temple Bell, Albert Einstein, Pythagoras, and Calliope.)
In the hope of a world with more speech and more speakers, with more poets and more storytellers:
sit mihi fas audita loqui, sit numine vestro
pandere res alta terra et caligine mersas.
Aeneid VI, 266-7

This link is this article 'cept better.
 http://www.loyalty.org/~schoen/haiku.html
Yuppers 26.Oct.2004 02:04

Migratory Bird

Building machines to fail does not take intelligence.

PS thanks for the lovely love poem written to me and Kirsten Anderberg under Fuck TDPM aka fuck the daily poetry movement. Those words moved me. I don't know how Kirsten took it, but we haven't seen her in a while, have we? I do know that I was quite blown away by your emotion and I return it sentiment for sentiment. Even though it has been awhile since I recieved a love poem I still need love. I considered allowing it to be todays movement but you will agree this poem was too important, don't you?

A very good title for commenting on my own article 26.Oct.2004 02:30

Migratory Bird

 http://www.eff.org/


He is now currently working with an ex memeber of the dead (jerry rubin- I believe) to insure freedom of speach and good will towards all at this really cool site. checks it out!

yes, important 26.Oct.2004 03:44

10

heres how i got here:

fuck tdpm , i clicked on.

made me think about tdpm, although havent read much poetry.

this was an extremely interesting read, it allowed me to think of coding in a new manner
+ i learned about didactic poetry

thanks for the repost.

i downloaded python because i like monty python,
this article compells me to dig in :D

What the EFF is doing 26.Oct.2004 16:37

Migratory Bird

EFF, UCIMC Challenge Secret Court Order
by by EFF via Sascha Meinrath UC IMC
Email: sascha (nospam) ucimc.org (unverified!) 26 Oct 2004
Electronic Frontier Foundation (EFF) attorneys filed a motion to unseal a secret US federal court order that led to the seizure of two servers hosting several websites and radio feeds belonging to Indymedia, a global collective of Independent Media Centers (IMCs) and thousands of journalists. The motion seeks to discover which agencies and governments are responsible for the seizure in order to hold them accountable. In their motion, EFF attorneys argue that "the public and the press have a clear and compelling interest in discovering under what authority the government was able unilaterally to prevent Internet publishers from exercising their First Amendment rights." They argue further that secret court orders circumvent due process, undermine confidence in the judicial system, and deny an avenue for redress. "When a secret order results in the unconstitutional silencing of media, the public has a right to know what happened," said Kurt Opsahl, EFF Staff Attorney. "Freedom of the press is an essential part of the First Amendment, and our government must show it had a compelling state interest to order such an extreme intrusion to the rights of the publisher and the public..."
Motion Demands Information About the Seizure of Indymedia's Servers

Texas - Today Electronic Frontier Foundation (EFF) attorneys filed a motion to unseal a secret US federal court order that led to the seizure of two servers hosting several websites and radio feeds belonging to Indymedia, a global collective of Independent Media Centers (IMCs) and thousands of journalists. The motion seeks to discover which agencies and governments are responsible for the seizure in order to hold them accountable. In their motion, EFF attorneys argue that "the public and the press have a clear and compelling interest in discovering under what authority the government was able unilaterally to prevent Internet publishers from exercising their First Amendment rights." They argue further that secret court orders circumvent due process, undermine confidence in the judicial system, and deny an avenue for redress.

"When a secret order results in the unconstitutional silencing of media, the public has a right to know what happened," said Kurt Opsahl, EFF Staff Attorney. "Freedom of the press is an essential part of the First Amendment, and our government must show it had a compelling state interest to order such an extreme intrusion to the rights of the publisher and the public."

Citing a gag order, Rackspace has not revealed the contents of the seizure order, the requesting agency, or even confirmed the identity of the court that issued it. Apparently requested by an unidentified foreign government, the secret order was served to San Antonio-based Rackspace Managed Hosting, which hosts IndyMedia's servers. The seizure took offline more than 20 IMC websites and more than 10 streaming radio feeds. So far, government agencies in the US, including the Federal Bureau of Investigation, the Departments of State and Justice, and the US Attorney's Office in San Antonio, have refused to take responsibility for the incident. Prosecutors in Switzerland and Italy have admitted pursuing investigations related to Indymedia articles but denied requesting the seizure.

"Silencing Indymedia with a secret order is no different than censoring any other news website, whether it's USA Today or your local paper," said Kevin Bankston, EFF attorney and Equal Justice Works/Bruce J. Ennis Fellow. "If the government is allowed to ignore the Constitution in this case, then every news publisher should be wondering, 'Will I be silenced next?'"

EFF's motion to unseal was filed in the federal court in the Western District of Texas, where EFF believes the secret court order originated.

Contacts:

Kevin Bankston
Attorney, Equal Justice Works / Bruce J. Ennis Fellow
Electronic Frontier Foundation
bankston (at) eff.org
See also:
 http://www.ucimc.org/feature/display/21273/index.php