I apologize to my readers for the lack of an update. I have a lot
of things to write about and haven't found the time; there's going
to be a description of the Dar Williams concert, N is a
Number, more on trusted computing and our recent meetings about
trusted computing projects, and perhaps my new trip to Washington.
At the moment, I'm back in Washington, D.C., with Amy, planning to
attend a meeting about fair use here on Tuesday.
When I last left you, I was off to a Dar Williams/String Cheese
Incident concert in Berkeley with Sumana. This turned into a
bit of an adventure when it was moved at the last minute from an
outdoor venue to an indoor venue on account of fears of rain. (It
didn't end up raining after all.)
Arriving a bit late, we heard the tail end of Dar's performance
and found the crowd dominated by String Cheese fans, which we
ourselves turned out not to be. The last couple of times I heard
a Dar Williams concert, she was paired with another female
singer-songwriter from a folk tradition
(Noe Venable, who in
turn was paired with fellow female singer-songerwriter
Kris Delmhorst when
I heard her again).
But the String Cheese Incident is really extremely
different musically, and I think promoters are taking a bigger
gamble by linking them up.
Sumana and I got to hang out for a while, and I got to see her
new place momentarily -- it turns out to be just downstairs from
where Cristina and Michelle used to live. There is also a
bar on Telegraph which serves good food and (oddly enough) a
large line of alcoholic herbal teas.
It's called the Bison
Brewery, and we went there for dinner after we left the
concert.
At the concert, I bought a copy of Dar's Out There Live
album, which has live recordings of songs I'm already familiar
with, but they're subtly different from the versions I know.
There are changes in tempo or instrumental arrangement or (in
what I think is only one case) a lyric. This makes me think of
Nick's ridicule of musicians' attempts to revitalize old works
by arranging them for a totally unexpected instrument. (I like
that practice a lot better than Nick seems to, actually. One
thing I still haven't gotten a sense of is how a choice of music
instrument changes our experience of a melody. But it really
can.)
That concert was Friday the 25th, if I remember correctly. On Tuesday
the 29th, I went
back to Berkeley to see the documentary N is a Number,
about the life and work of the late Paul Erdös -- a really
remarkable mathematician. Erdös's friend and fellow remarkable
mathematician Ron Graham (a veritable master of the discrete)
was there answering questions from the audience about Erdös
and assorted topics. Erdös was funny in the movie,
not to mention inspiringly dedicated to mathematics (and, like
Borges's Funes, "memorious"). I need to go hear some lectures
from some of our great living mathematicians. I remember missing
Persi Diaconis on Riemann's zeta function (something I still fail
to understand well, maybe because I never made it to complex
analysis). These lectures are happening all the time,
and even in the Bay Area it would be hard to go a month or even
a week without some really remarkable mathematician sharing some
really profound insight. But I'm out of the habit of going to hear
it. I didn't even make it to any of the other films in the
Cinemath series.
That makes me a bit depressed in general, to be reminded of all
the wonderful opportunities out there which I haven't been taking
advantage of. Aaron
Swartz just complained about Chicago being boring (which I
don't agree with -- Biella's there at the moment, so hang out
with her and Chicago won't be boring!), but anyway San Francisco
and everywhere else is interesting in proportion to the effort
you put into taking advantage of it. I'm realizing that I haven't
been making such a serious effort compared to what I could be
doing -- seth-trips
notwithstanding. (My recent trips to Portland and D.C. put me
even more in mind of this; I've only been overseas once, but even
the major cities of the U.S. call for a couple of lifetimes'
worth of exploration. Amy was speculating about the proverb which
claims that only boring people get bored -- there are corresponding
proverbs which say that, if you're tired of <CITY>, you're
tired of life.)
But, as I was saying, I got to see N is a Number, and
ran into several people I knew -- Kragen, Beatrice, and Praveen,
the LNX-BBC developer Curtis, and Rohit
Khare, of FoRK fame, whom I hadn't met before. We went out to
dinner and Rohit, a huge baseball fan, watched the final game of the
World Series. (I think most of the rest of us were trying to ignore
it; Kragen, in particular, positioned himself facing directly away
from the television.)
Friday took me to D.C., where I visited Amy and hung out with
lawyers. I continued to feel that D.C. looks a lot like Boston,
except for the marble or faux-marble public buildings. I have a
sense that it's difficult for me to believe in the reality of any
major city I haven't either lived in or visited regularly. (Chicago
was an exception. Elsewhere, though, I seem to visit a new city
and say "Aha, this city looks like...", and supply the name of some
other city I actually believe in.)
I also got to see my friend Cate from high school -- now
well-established in the adult world. Wonderful! It's too bad I
missed my reunion this year; I'd like to know what more of the
people I knew in high school are up to. I guess there's no substitute
for e-mailing them directly.
42,000 people marched against the war in San Francisco, and the
protest in D.C. was described as the largest since the Vietnam War.
Riana's actual description of the contents of the gold room at
Powell's is "literature that isn't taken seriously ... yet".
I still haven't written up notes from the second Microsoft meeting
or from the TCPA or LaGrande meetings. (I'm sorry about that,
because I know people want to read them.) But I did get interviewed
for, and quoted in,
a pretty good Associated Press story
about trusted computing.
Seth Schoen, staff technologist at the Electronic Frontier Foundation,
said incompatibility is the biggest threat posted by the
trusted-computing initiatives.
"I don't think anyone can absolutely compel you to do anything in
particular," he said. "What they can do is create an incompatibility
or refuse to deal with you unless you meet a particular condition."
I tried to stress that nuance in the interview, and the interviewer
reproduced it pretty accurately -- although it might be less
significant than I've made it out to be (in the sense that the
pressure to conform to a condition might be so strong that it
would be difficult for many people to refuse).
I liked the AP story, though it's not technical. I gave a longer
interview to Technology Review, which is doing a
story which I hope is going to be a bit more technical.
I'm likely to start a new blog at EFF pretty soon containing my
discussions of EFF-related issues and news items. (Once I do
that, I'll link from here to what I write there, but probably
move much of the actual writing to that new forum.)
My owner override idea was meant as a thought experiment to raise
the question of whether trusted computing can be implemented in a
way which makes it useful to allow you to trust your own computer
and doesn't facilitate having your computer perform functions
you don't want it to.
As security experts point out, "trust"
has a different connotation in security than it does in everyday
language. In
Ross Anderson's
FAQ:
Or take a civilian example: suppose you trust your doctor to keep your
medical records private. This means that he has access to your
records, so he could leak them to the press if he were careless or
malicious. You don't trust me to keep your medical records, because I
don't have them; regardless of whether I like you or hate you, I can't
do anything to affect your policy that your medical records should be
confidential. Your doctor can, though; and the fact that he is in a
position to harm you is really what is meant (at a system level) when
you say that you trust him. You may have a warm feeling about him, or
you may just have to trust him because he is the only doctor on the
island where you live; no matter, the DoD definition strips away
these fuzzy, emotional aspects of `trust' (that can confuse people).
(Emphasis added.)
So, to be more precise, I should say that the thought experiment
asks whether you can have a trusted computing system which helps
make your computer more worthy of your trust, without allowing your
computer to do things you don't want it to do. In the more technical
sense, you already trust your own computer all the time, which
doesn't have anything to do with whether your computer is secure.
(If you trust an insecure computer -- for example, by typing a
passphrase on a machine with a keylogger installed -- you might
suffer some adverse consequence.)
The owner override idea is directed toward one part of that question,
but the other part is also interesting. Is it reasonable to trust
a computer which hasn't been under your physical control at all
times? (At the airports, they've stopped asking whether your bags
have been under your control at all times since you packed them.)
Is it reasonable to trust a computer which is owned and regularly
physically controlled by another person? People constantly do
trust computer equipment which isn't theirs; by doing so, though,
they expose themselves to certain risks. Can those risks be
eliminated?
Here's another example: you go to a random terminal, and you want to
use it to connect to your own computer. You will have to trust that
the terminal will let you use services on your machine in a way which
respects your privacy.
With something like Palladium, the machine can show you a user
interface which suggests that it's trusted to be running a
particular platform. (In our second Microsoft meeting, we talked
a little more about the user interface question.) But if that user
interface is widely known and standardized, it can presumably be
faked -- and if a machine normally lights a LED or something to show
that it's in a certain mode or running certain software, that LED
can be faked, too. (It's easy enough to find the LED's leads and
connect them to a power supply instead of to the pins on the
motherboard which are supposed to be indicating something about
the current CPU or chipset operating mode!) In some scenarios,
the user interface can share a secret with the end-user, but that
doesn't seem to help much if the end-user is currently using a
physically different machine from his or her own home box! (Sharing
a secret with the user interface is helpful only when the user
interface is provided by a device which knows the secret, which is
not the case in the remote login situation.)
However, there is a possibility which was suggested at one point
by Microsoft: your machine can make a cryptographic challenge to
try to determine some characteristics of the device from which
you're trying to connect (so that, if you don't get a connection,
you know something is up, and in any case access won't be granted).
The terminal could still steal your password, but the use of
one-time passwords (with trusted password-calculating devices) or
other trusted authentication hardware, like smart cards, can prevent
your password from being taken in this way.
In addition, Palladium is going to provide a secure I/O feature, so
the client software on the terminal you're trying to use (which can
prove its identity to your server) can read your keystrokes and your
server can know (when it grants you access) that you're accessing it
using a hardware and software combination which sends your keystrokes
only to your server, and your server's responses only
to your eyes. That sounds pretty good, and your server can enforce
this policy by forbidding connections entirely from systems which
fail the relevant challenges (which can't prove that they are running
certain software in a certain mode with certain capabilities). So
far, so good.
However, we already know that secure I/O can be defeated by
hardware attacks. If a recording device is placed in hardware
between the keyboard and the motherboard, or inside the keyboard
itself, the fact that the motherboard and software haven't been
modified won't protect you! So your server can correctly authenticate
the hardware and software platform of the terminal you're using to
connect, while knowing nothing of the hardware bug which has been
placed inside the keyboard you're using to talk to the terminal.
So it might be that there is no ultimately reliable way to trust
someone else's hardware (or, "don't make a phone call on someone
else's embassy's telephone, even if it's a secure phone").
The idea of a world in which the end-user's PC is irrelevant,
yet the user still has strong security assurances, seems implausible
to me. Some of the trusted computing advocates who have come to
talk to us have imagined that world, and suggested that you could
use essentially any device to access essentially any service --
the individual computer would become more fungible. But because of
the new platform authentication capabilities which would become
available, the security properties of the resulting interactions
would be verifiable, and verifiably what end users would want
them to be.
But that doesn't make sense if people can and will modify
hardware -- keyboards and monitors -- to subvert
Palladium or LaGrande secure I/O! A device like
KeyGhost will
be really cheap soon. (In fact, the basic version is already
under $100.) KeyGhost even sells entire keyboards
with the monitoring hardware built into the keyboard -- and
tries to make their keyboards look indistinguishable from any
other keyboard. So in some sense it is really not going to
be ultimately safe to trust someone else's equipment.
I say this realizing that the status quo is not any better, and
is probably worse. I used ssh to connect during my trip to
Portland and Walla Walla, so I can claim that my communications
were "secure". I even memorized part of the ssh host key fingerprint
for the machine I was connecting to. But I connected from at least
five machines whose software configurations I had no way to verify
at all and which could all easily have been running
keyloggers or screen grabbers.
Trusted computing systems could raise the bar slightly. For
example, they could require the use of a hardware keylogger instead
of a software keylogger, which would then cost $89 instead of
$0. But attackers can be fairly determined, and Bunnie argued that
hardware attacks do not imply a fundamentally greater sophistication
or skill, only an incrementally higher cost (for physical
fabrication of a device, whereas the marginal cost to duplicate
software approaches zero). I'm not sure that trusting hardware
instead of software, when the hardware is owned by someone else
and remains outside of your physical control or supervision, is
going to be any better in the long run.
A better solution is probably to have a minimal amount of
physically small hardware which you trust, with both input
and output capabilities which you also trust -- something like
a PDA or a laptop -- and an untrusted network to which it's
always easy to attach that device.
This isn't always going to be practical.
I was talking to several people about my claim (which
Felten
linked to) that trusted computing systems don't diminish your
computer's usefulness as a "general purpose computer". I said
that a Palladium machine or a TCPA machine or whatever is definitely
still in every sense a general-purpose programmable computer. (In
fact, it's usually still a general-purpose computer even when it's
running in a trusted mode -- although the argument is made even
easier by the fact that these systems all are supposed to allow you
to use the computer in a traditional mode with the trust features
disabled.)
If you want to focus on DRM applications built on trusted
computing, and see the technology as a conspiracy against
users, I have an analogy which shows how you still keep
general-purpose computing. This analogy makes a lot of
sense to me, and maybe it will make a lot of sense to you.
The analogy is partly metaphorical because it's not a
technical description of the implementation of a trusted
computing system; it's just a description of one outcome
which is attainable.
Right now, you might have several different electronic devices
at home; maybe one of them is a computer and another is a
stereo, or a DVD player, or a VCR (preferably one which was
manufactured some years ago and does not conform to the
requirements of 17 USC 1201(k)). Each of these devices is
shipped in its own separate box.
But, in the future, instead of having just "a computer" in one box
and "a proprietary media player" in another box (like a DVD
CCA-licensed DVD Video player, or DiscoVision), you can imagine that
you get a computer as one component and a proprietary media player
as a second component. These components are then bundled together
in one box. You could implement this in such a way that the
two components are entirely unaware of one another, but we'll
assume instead that the components know of one another's
existence. They can communicate via some kind of open standard
interface, which we could imagine is PCI or FireWire. (That's
not how this is actually implemented, but this is a metaphor,
remember?)
In that case, when you want to use computer features, you just
flip a switch or type a command or otherwise perform some action
on some user interface so that you're talking to the "computer"
component. And you can tell the "computer" component what you
want it to do, and it will do it for you, just the way it does
now. When you want to use some proprietary media, you flip the
switch or perform the action so that you're talking to the
"proprietary media player" component. Now you can ask it to
play proprietary media, and it will do that, but you can't ask
it to do certain other things for you, because that component
isn't the computer component, and it doesn't understand how to
do those things, or it isn't willing to do them. You can also
use the two components together in certain ways. For example,
you could use the computer component to download encrypted
documents over the Internet. The computer component doesn't
understand how to read these documents, because it doesn't
have the decryption key, but you can ask the computer component
to send these documents over to the proprietary media player,
which may possibly have the appropriate decryption key and
may be able to decrypt and display the contents of those
documents, subject to various arbitrary and irritating
restrictions.
The proprietary media player can thus make use of the computer
to get certain (untrusted) network and communications services,
and possibly certain (untrusted) storage services, and possibly
certain user interface services, and so on. But the computer
component in general doesn't trust the proprietary player
component, and the proprietary player component in general
doesn't trust the computer component. They are separate in
design and separate in functionality, and neither one can see
inside of the other and neither one can control the operations
of the other. They can communicate only over a precisely-defined
communications interface which doesn't put either device in
control of the other device.
If you want, you can choose never to use the proprietary
player, and only use the computer component. The computer
component will continue to function normally as though the
proprietary player weren't there at all; of course, it
will continue to play non-proprietary media. If you get a
copy of a suitable decryption key, or you run suitable
decryption software, you can even use the computer component
to decrypt and play proprietary, encrypted media. The
proprietary player can't stop this -- it can't even tell
that you're doing this, because it can't look inside the
computer. And there's a corresponding limitation: the computer
can't look inside the proprietary player to try to extract
keys or to try to extract decrypted information. If you want
to try to break an encryption system, using the computer
component, you will be on your own; the proprietary player
won't give you any additional information you didn't
already have.
The point of this metaphor is that it's possible to have
general-purpose computing functionality, which is under
your control, packaged in the same box with some additional
functionality which is not general-purpose and which is
not under your control. And if you do this, you might get
something which it is possible to see both as a benefit
and as a disadvantage. The most obvious disadvantage is
that, if the combination became widespread, publishers might
eschew open standard formats which the computer component
could read, in favor of proprietary formats which only the
proprietary player component could read. (They wouldn't
be able to get away with that if nobody had the
proprietary player component in the first place!) This
outcome would tend to give you less flexibility, power,
and control, and diminish the benefits which you would
otherwise have achieved with general-purpose computing.
But you would still have general-purpose computing
capability and the ability to write and run
competing software.
As I argued a few days ago, you still have Turing-completeness
(but for that little detail about needing an infinite amount
of RAM) -- you can build a Turing machine and you can paint it
blue, and it's still a Turing machine, or you can build a Turing
machine and put it in a box with some other kind of machine,
and it's still a Turing machine. Maybe the other kind of
machine is something you find very distasteful, and maybe the
other machine will be used for something you consider quite
nefarious, but the Turing machine is still a Turing machine.
I had a lot of time to read while I was on trains and airplanes
recently, so I read the entirety of Harmful to Minors,
by Judith Levine. Levine's book is dedicated to arguing that
children's sexuality and sexual experience is legitimate and
can be a positive thing, and that attempts to suppress it or
pretend it doesn't exist can have negative consequences.
I was surprised at how much of the book was dedicated to discussions
of sex education. The other surprise was Levine's insistence that
childhood sexual experience is reasonable and appropriate.
(Less radical advocates often suggest that childhood sexual
education, knowledge, fantasy,
desire, discussion, etc., are appropriate,
but physical contact may not be. For example, many people I
know think that young people should be able to view explicit
discussions and depictions of sexual acts, if they want to, but
not necessarily to participate physically in those acts
themselves. Levine has a much more radical sex-positive view
and does not seem to want to be held to a sharp distinction
between ideas, images, and acts.)
She spends a great deal of time talking about safe sex and
birth control, which reminds me of the passage in
Summerhill where Neill seems to suggest that he
can't allow the young students at his school to have intercourse
because they might become pregnant -- but he doesn't necessarily
see an abstract reason why they shouldn't do so otherwise. (Neill
wrote in an era when birth control and abortion were less widely
available, and less reliable, than they are now, to say nothing
of their unpopularity. Maybe if birth control and abortion
services had been readily available, Neill would have chosen to
permit his students to have sexual intercourse! When I attended
boarding school, I felt subjectively that the school's attempts
to discourage sexual contact were less a result of concern about
sexual morality or emotional development and more a result of
concern about pregnancy. This is in line with Neill's suggestion
that pregnancy was his greatest fear for his students; I suspect
that many schools would turn more of a blind eye to older
teens' sexual activity if the "outward consequences" of
pregnancy and STDs could be eliminated.)
Since I had more interest initially in topics like Internet
censorship, I regretted that Levine spent so little time on
them. She also gave too little attention to questions of
emotional development and maturity (what liberals often worry
about when thinking about young people's sexual activity),
since she had such a strong focus on dissing conservatives'
moral anxieties and promoting safe sex and sex-positive
attitudes.
What do young people in the U.S. actually believe about sexuality, and
why? What are the influences of religious and political belief,
educational background, social class, temperament, personal and
family experience? (There are many anecdotes about young people's
beliefs, but usually in the service of some particular argument.
And the statistics provided are more often about behaviors than
about attitudes and beliefs. I wanted to know more about what
sexuality means to people, a question Levine sometimes
seemed to be neglecting.)
I also re-read From the Mixed-Up Files of Mrs. Basil E.
Frankweiler, a children's book I'd read in elementary
school. I think I found it more plausible, and more exciting,
the first time around, although there are some parts which
continue to be touching.
I'm now working on Lakoff's Moral Politics, which I
got as a birthday present; I'll write more about that when I
finish it. I've also borrowed some interesting books from Amy, and
I'm hoping to keep working on Personal Knowledge, which
I put aside a while back.
I was in D.C. for several days, and a lot of things happened,
and I found my trip extraordinarily worthwhile.
Thanks!
"Fair Use" or "Lawful Use"? Oh, definitely call it "lawful"!
Everybody in this town worries about what's lawful, but nobody
cares about what's fair.
(a D.C. journalist)
Happy birthday to
Aaron.
I found out why it seemed that I had so little clothing: Ben came by
and returned things to me from my Spring Lake camping trip. Now I have
a more reasonable amount of clothing again.
It's rainy here, as it was rainy in D.C.
We had a BBC meeting in the East Bay, and I got to see Andrew and
Duncan, aside from the more usual suspects. So that was nice.
I was just very tired, because my sleep's been strange lately.
I also got some work done on the BBC, and, thanks to a tip from
H. Peter Anvin, I think I may resolve the memtest86 problem very
soon. We all concluded that the new BBC is almost ready. Nick
revealed in a relatively public way the information I'd given the
group: there are two organizations which want to use the BBC in
connection with end-of-the-year fundraising purposes.
The BBC is really coming along well at this point.
Te totum applica ad textum:
rem totam applica ad te.
(J. A. Bengel,
preface to the hand-edition of the Greek New Testament, 1734
(quoted in D. Erwin Nestle, preface to Novum Testamentum Graece
et Latine (Stuttgart: Privilegierte Württembergische
Bibelanstalt, 1932)); also given, more elegantly, as "Te
totum applica ad textum; textum totum applica ad te.")
and
... there we can shake off our label
and I'm not an artist
and you're just an angel.
There we can finally relax
and the lines will erase
from your beautiful face
and we'll both find a love with no future or past.
[...]
There we're going to shake off our label
and you're not a scientist
I'm still your angel.
There we're going finally relax
and the lines will erase
from your beautiful face
and we'll both find a love with no future or past.
(Atticus Scout, "Measure of Time")
I had the longest single basically uninterrupted conversation I've
had in about two years.
I had a vacation on Monday on account of Veteran's Day. Brita
came all the way across the Bay to visit me, and we got to eat
sushi and go down to the SF MOMA.
And after that I took a ferry across the Bay and then right
back immediately. The Golden Gate Transit ferries are really
cool.
When Brita and I went to the art museum on Monday, we spent most of
our time in the exhibition "Gerhard Richter: Forty Years of Painting".
I hadn't heard of Richter before (just as I haven't heard of most
contemporary artists at all); some of his paintings were based on
photographs and looked photographic, others were totally abstract,
and others were realistic but out of focus. Brita and I kept
wondering if our vision might be failing us, but the effect turned
out to be deliberate.
One of Richter's most famous paintings is Onkel Rudi,
which depicts his Uncle Rudi in a Nazi uniform. (Notes in the
exhibition said that this painting was based on a picture in a
family photo album.) I looked at it for a long time. What's
particularly disconcerting about it is that it really looks like
a picture from a family photo album. Rudi doesn't look evil or
genocidal or menacing at all. He looks happy, he looks
proud, and he looks for all the world like somebody's
uncle.
I'm used to seeing pictures of Nazis fighting (in the movies) and
murdering people (in books about the Holocaust). I'm not used to
seeing them in photo albums. The exhibition went on to note that
Rudi had just recently been commissioned when the photograph was
taken, and died just a few days later.
A lot of families have Nazis and other traditional villains in their
recent family history; some have pictures in photo albums and others
may have surreptiously, quietly censored those albums. I know from
talking to a high school friend that it can be particularly painful
if you know about it; after a few conversations with her, I
understood why many families have tried to alter or expurgate the
historical record, and why many more lie to their children about
the details of what particular people did. "What did you do in the
war?"
In that generation, my family members were victims of the Nazis,
or refugees from the Nazis. Some of them were very virtuous, and
others perhaps were not. But I can't help thinking that there
must be some generation, past or future, in which my family members
are the villains.
This is a small part of what you might think about when you look
at Onkel Rudi.
Our build developed some errors at the beginning of the week, but
I think people managed to straighten them out. But the week turned
out to be very turbulent for the LNX-BBC project. We moved to new
hardware -- a very fast AMD Athlon -- for our build server, and
Nick started to experiment with
ccache, a "compiler cache"
program which remembers the results of compiling particular
sources, so that builds become faster after they've been run
once.
As you might imagine, ccache is by
Tridge. Go Tridge!
The new machine made builds (which used to take about eight
hours) complete in two or three hours. The new machine
together with ccache made builds complete in what seemed to
be under an hour, which was very impressive (because it means
that it would actually be possible to test the results of a
particular small change by waiting for a new ISO image and
burning it to CD).
Unfortunately, the new machine has turned out to be very
unreliable; its memory becomes corrupt and we get intermittent
compile failures, often with a
sig11 error
(something I hadn't actually experienced since I had some
bad RAM in my old 486 machine). So the new server is down
now, pending the availability of some hardware which will
work reliably.
In the meantime, we managed to fix a number of bugs. I'm
currently working on a system to allow various things to be
downloaded from the network and to have their signatures
checked with GPG. This
is a part of having a better and more secure downloadable
package infrastructure, and also allowing people to create
custom BBCs more easily.
So I'm writing a shell script and trying to think of every
possible case, including cases we don't use ourselves.
I'll be speaking at
The Revenge
of the Blog at Yale
Law School on November 22, which is Friday.
I'm hoping to submit something to
CFP 2003.
Thanks to Cory, I've now got one of
NTK's
new "Corrupt
Disc Inferior Audio" t-shirts, which protest against corrupt CDs.
It's very pretty.
Remember Moen's Law of Bicycles!
I wrote a letter to Wolfgang. It was surprisingly short (only about
ten pages), but it took up a lot of energy and concentration to write
it. I suppose it has extremely high entropy.
This joke is adapted from Riana:
Q. What does a Supreme Court justice who reviews laws subject to free
speech challenges eat for dinner?
A. Thyme, plaice, and manna.
(They ask us: What is plaice? We tell them: "Plaice \Plaice\, n. [F.
plaise, plais, prob. fr. L. platessa flatish, plaice. See Place.]
(Zoöl.) (a) A European food fish (Pleuronectes platessa),
allied to the flounder, and growing to the weight of eight or ten
pounds or more. (b) A large American flounder (Paralichthys
dentatus); called also brail, puckermouth, and
summer flounder. The name is sometimes applied to other allied
species. [Written also plaise.]" (1913 Webster (gcide)))
Song parodies somebody ought to write: "The Promise of Leaven" (an Aaron
Copland number about the end of Passover).
I've been asked to collect in one place a set of pointers to everything
substantial I've written in public about trusted computing. So I've
tried to do that below; I hope I'm not missing anything. In most
cases, you'll have to skip over a substantial amount of unrelated
material in each diary entry.
- July 3: Palladium, sealed storage,
epistemology, Descartes, Plato.
- July 5: specific features and
functionality of Palladium; the SCP and the nub; more on sealed
storage; particular consequences; does Palladium allow you to
run your own software?
- August 9: Lucky Green's trusted
computing talk at DEF CON; "document revocation lists"; document
revocation lists not a part of Palladium but can be implemented
in applications on top of Palladium (and could not be implemented
effectively without hardware support).
- August 21: Annalee Newitz says
trusted computing is a bad thing for the public; what Microsoft
can do to promote public dialogue.
- August 23: responding to
Microsoft Palladium FAQ; vulnerability to hardware attacks;
to whom is Palladium useful if it is known to be vulnerable
to hardware attacks; DRM viewed as a matter of contractual
agreement between a publisher and a reader; to whom are
Palladium-based DRM systems useful; DRM for applications
other than publishing; flexibility and competition; backdoors;
interoperability.
- August 26: Fred von Lohmann
argues that the effectiveness of DRM for publishers is more an
economic than a technical matter.
- October 4: if trusted
computing systems preserve all pre-existing functionality
and only add new capabilities to computers, how
could they possibly be disadvantageous? Why is having new
capabilities a disadvantage? Why would people choose to be
able to do fewer things?
- October 16: Owner Override
thought experiment; discussion of network effects.
- October 17: Zack Weinberg
observes that Owner Override is not necessarily implementable in
practice the way I described it.
- October 25: I disagree with
Richard Stallman that trusted computing initiatives would make
the public give up general-purpose computing; whether a technology
like Palladium could be mandated by the CBDTPA; network effects.
- November 6: network effects;
consumer boycotts of institutions, and institutional boycotts
of consumers; what "trust" and "trusted" mean; more on Owner
Override; can trusted computing hardware protect your privacy
when you use equipment owned by someone else; the relevance of
the PC and the implausibility of making computers fungible;
a Palladium PC is still "general-purpose" or Turing complete; "two
devices inside one box" analogy; network effects.
I have also written one piece about trusted computing which is
probably not well-known to most readers here; this is
a
message to Nick Moffitt's "crackmonkey" mailing list,
responding to an anti-trusted computing piece in Linux and
Main. (Topics: running a non-Microsoft operating system on
TCPA or Pd hardware; what is an "end-to-end security" measure;
coupling policy enforcement to access to decryption keys; why this
could put users at a disadvantage even though it gives them new
functionality; DRM support in hard drives; document revocation;
claims of scary features in Windows Media Player; network effects,
interoperability, reverse engineering; CBDTPA; Palladium does not
give Hollywood what it wants; incentives for users and companies.)
I'm soon going to start writing about technology on an EFF-sponsored
web log, as I've already mentioned. That will probably mean that
I'll write very little about technology here in the future.
By the way, I think my original post about epistemology was the
most interesting of everything I've written about trusted computing.
I know at least one other person who agrees with me.
That particular discussion also made its way into
a
science fiction story:
"It is like Descartes," Murray said, accelerating up a new hill.
"Yeah?" Liam said. "Who's God, then?"
"Crypto," Murray said.
More seriously, though, I think computers have given us a new kind
of understanding of the problems of epistemology, much as they've
given us new ways of thinking about psychology. This is not to
say that the metaphors we take from computing are more accurate
or ultimately more faithful to reality. But they're undeniably
present.
When we think about thinking and about experience, we draw on
what we know about computers and what we've encountered as
programmers and as computer users. Turing, who had more knowledge
of computing than any of his contemporaries, made this parallel
explicit and started decades of academic debate about just how
literally it ought to be taken. In the past, metaphors for
simulation were always dreams (Chuang-tzu, Descartes), the
theater and the arts (Plato), or games. But now we have
actual simulations (physics experiments run entirely in
software!) and emulation (hardware environments, tantamount
to sensory experience, conjured up by emulator code). Just as
nobody who has had a vivid dream can be quite sure of reality,
nobody who has run a program under an emulator can have quite
the same certainty about reality.
Only in our time could someone like Ed Fredkin seriously
suggest that our universe was a computer simulation. The idea
that it is a simulation is old; people used to say that the
world was the dream of God, or, in Carroll, of the Red King:
"It's only the Red King snoring," said Tweedledee.
"Come and look at him!" the brothers cried, and they each took
one of Alice's hands, and led her up to where the King was sleeping.
"Isn't he a lovely sight?" said Tweedledum. Alice couldn't say
honestly that he was. He had a tall red night-cap on, with a tassel,
and he was lying crumpled up into a sort of untidy heap, and snoring
loud -- "fit to snore his head off!" as Tweedledum remarked.
"I'm afraid he'll catch cold with lying on the damp grass," said
Alice, who was a very thoughtful little girl.
"He's dreaming now," said Tweedledee: "and what do you think he's
dreaming about?"
Alice said, "Nobody can guess that."
"Why, about you!" Tweedledee exclaimed, clapping his hands
triumphantly. "And if he left off dreaming about you, where do you
suppose you'd be?"
"Where I am now, of course," said Alice.
"Not you!" Tweedledee retorted contemptuously. "You'd be nowhere.
Why, you're only a sort of thing in his dream!"
"If that there King was to wake," added Tweedledum, "you'd go out
-- bang! -- just llke a candle!"
"I shouldn't!" Alice exclaimed indignantly. "Besides, if I'm only
a sort of thing in his dream, what are you, I should like to know?"
"Ditto," said Tweedledum.
"Ditto, ditto!" cried Tweedledee.
He shouted this so loud that Alice couldn't help saying, "Hush!
You'll be waking him, I'm afraid, if you make so much noise."
"Well, it's no use your talking about waking him," said
Tweedledum, "when you're only one of the things in his dream. You know
very well you're not real."
"I am real!" said Alice, and began to cry. "You won't make
yourself a bit realer by crying," Tweedledee remarked: "there's
nothing to cry about."
"If I wasn't real," Alice said -- half-laughing through her
tears, it all seemed so ridiculous -- "I shouldn't be able to cry."
"I hope you don't suppose those are real tears?" Tweedledum
interrupted in a tone of great contempt.
Today, Alice would see a computer running an enormous simulation
in place of the snoring King.
It's common to hear that software is different from mental
processes because we can see exactly how software works, but
can't do the same for mental processes. This may be true,
but software can't see inside of itself any more than
a person can really see the operation of his or her own mind.
Some programmers don't believe that. "I can read my program's
code or disk, or even in memory while my program is running! That's
how viruses work; they have to be able to read their own code in
order to copy themselves!"
But anybody who's played A. K. Dewdney's Core War knows about the
unreliability of programmatic introspection. Core War programs
are fighting other programs in RAM, trying to corrupt and
destroy and crash the enemy code, while protecting their own
code. In the multithreaded version of Core War, it was common
for programmers to implement a copying routine which tried to
relocate code in memory, an integrity-checking routine which
looked for errors introduced by writes from hostile code, or
perhaps both (a routine to make multiple copies of a program
and then constantly compare them against one another to try to
detect the presence of errors as soon as they were introduced).
The trouble is that all such self-monitoring code runs in
the same memory space as the rest of a Core Wars program.
As such, it is itself vulnerable to attack. A checksumming
routine could be disabled or altered in mid-checksum. A copying
routine could be altered and induced to write a corrupted
copy. An entire subroutine could be overwritten with a block
of code performing an entirely different function. Any
individual test can be reversed, turning "if x" into "if not x".
As I've discussed elsewhere, programs which examine themselves
for reasons such as enforcing restrictions against a user are
also vulnerable to modification. Perhaps a program checksums
itself before running (as many programs do); the result of the
checksum has to be examined somewhere, and that examination
has to be performed by code, and that code is modifiable. Virus
scanners also want to protect themselves against alteration, so
they frequently run all kinds of self-tests. A clever virus
which was specialized to attack a particular scanner would find
the proper entry point to bypass the self-tests, but also
initialize any relevant memory locations to indicate that the
self-tests had completed successfully. If self-tests occur
later on, during the virus scanner's actual execution, the
virus would have to determine where these tests occur and
overwrite their code, too. But there are at most a
finite number of tests which can occur, and an attacker can
ultimately locate and alter all of them.
We can actually get much sneakier than this. A program
generally assumes that it can obtain and dereference pointers
to (1) various system objects or data structures, and (2) its
own code. This assumption is generally valid on most systems,
subject to some kind of security policy. But there is no
technical reason that the result of dereferencing a pointer
has to be correct. There is no reason that the machine (if
designed by or under the control of an attacker) need ever
perform according to its specifications. It's entirely
possible to create a virtual machine in which reads from
memory occur successfully and describe a consistent but
completely inaccurate memory state. Techniques like this
are known to the authors of rootkits, which are now able to
alter operating system kernels. You can imagine a rootkit
which alters an operating system kernel so that software on
the system no longer has access to read the memory where the
rootkit resides, but believes it does; accesses to
that memory could result in plausible but completely
misleading results.
You can proliferate examples of what attacks like this might
be capable of. The really interesting one for me is a
program which is deceived about its own state in memory. It
might go through and analyze itself and conclude "OK, my
code has just done this" or "my code is about to do that" or
"I can guarantee that my code will never execute the following
instruction" or, as above, "my code has a valid checksum or
signature, showing that it's unmodified from its original
version". And the program can be justified in concluding any
of these things, but it can still be totally wrong; it can't
look at itself directly, but always and only through the
mediation of the underlying system, which might be a completely
deceptive virtual machine.
Of course, this kind of deception can occur for reasons other
than an attack by a human or a rival Core Wars automaton. Imagine
that you've written an implementation of an error-correcting
code which looks at blocks of memory and finds and corrects
errors resulting from hardware faults or cosmic radiation. Now,
your error-correcting code also has to run in memory, and it can
use the same error-correcting system and can try to correct
errors within the ECC routine itself. But since the error-correcting
code is running in memory, if a hardware fault occurs, the routine
may give an inaccurate answer, and falsely claim that there is no
error at all.
Our own thought processes are famously opaque to us, as are our
emotions; even when we practice introspection, it seems that we
don't really have reliable knowledge of how we think. (You can
make an empirical claim about this, as George Lakoff seems to do
regularly, and say that people's claims about their own thought
processes are inconsistent with their behavior or with other
things they say about themselves. You can also make a more
abstract claim and delve into thought experiments in which
consciousness is produced by a mechanism to which we have no
access but includes the illusion of access to part of
that mechanism. Feynman once had a dream that he had figured
out some surprise aspect of how his mind worked, but when he
woke up, his insight turned out to be totally baseless.)
In that sense, we are in the position of software: we can try
to look at ourselves, but we can't have independent confirmation
that what we see is really there. There is always a philosophical
possibility that we are implemented somewhere or in some way we
don't know about, that we have a particular feature we can't
anticipate, and in general that any part of our experience,
not just our senses, could be unreliable. A computer program
implemented on reliable hardware which performs according to
spec is guaranteed never to add 2 and 2 and get 5 (or to divide
4195835 by
3145727 and get 1.3337), but the software itself can't tell
whether the results of instructions it requests are correct, having
no truly independent way to verify them. "To them, reality would
be the results of the execution of their opcodes." If a hardware
flaw does occur, a program's results will be wrong, and the
program will not necessarily have any way to tell. The same is
true of humans; as sane people, we can see why 2 plus 2 equals 4,
and see why it's impossible for 2 plus 2 to equal 5; but it's
by no means impossible for a person to have the experience
of believing that 2 plus 2 equals 5. There is no guarantee
that we will remain sane and there is no ultimately certain way
that we can test our own sanity at any chosen moment.
One strange result of insanity is that it is only sometimes
apparent to the person afflicted with it. Many people with
serious mental illness are aware of it, and understand its
significance, but even this is not guaranteed to make the
experience seem any less real. (Understanding that a phobia
is unreasonable, for example, may not lessen its power at all.)
Some people who become insane are adamant that they are sane
and that everyone else is insane, and many people have been
shaken by the plausibility of such claims. Your brain could
change in such a way that almost any given aspect of your
experience was altered; in fact, it may already have changed
that way, and you may not know it, and you might never know it.
My observation is that computers have made such possibilities
more present and more plausible to us, and given us a new way
to think about them. They have made us speak of what we are
"programmed" to do or to think, how little we know about our
own "programming", and how little we can hope to control it.
The classic question in the face of this has been "Are you insane
at this moment? How do you know?". This question seems to infect
any epistemology which aims at absolute certainty; even if
we assume that almost every conclusion of Descartes followed
necessarily from what came before it, the possibility would still
remain that he was insane and had simply imagined some particular
detail, or systematically added or dropped a "not" at some point
in the deductive process. (Imagine if you were selectively blind
to a particular color; you wouldn't have any direct experience to
indicate that you were missing anything. Only other people's
disagreement with you would suggest a problem.) The existence of
insanity is corrosive. People have struggled for a long time to
try to redeem Cartesian arguments. I think they have never done
so. If someone asked me how I know whether I'm insane, I would
say that there's a lot of evidence for my sanity but that it's
always possible that I'm totally delusional. I can't look inside
my mind to see whether it's working properly; even if I could, I
would still have to use my mind to make that evaluation, so that
insanity could always alter my judgment to make itself
undetectable -- just like a rootkit patching a kernel to
conceal itself.
I should talk more about the possibilities of breaking the
abstraction barrier which makes the "implementation" of our
subjective experience opaque. It seems that we often think of
this as disturbing or improper; we seem to feel that we ought
to deal with our own consciousness only through its high-level
interfaces (such as language). If you are actually analogous to
software running on an interpreter,
you have many different abstraction layers, and (like a complex
software system) you can be affected on almost any of these, and
(also like a complex software system) one layer may not have any
real sense of what is happening at another layer. I think there
is a real moral sense to this: when B. F. Skinner argued
that we could work more directly on lower levels by taking advantage
of insights from biology -- in particular, by practicing
conditioning on people -- people were horrified, and, as he
observed, complained that it was contrary to human dignity to
do so. Maybe one meaning of human dignity is interacting with
someone's mind on a very high level (say, at the level of
dialogue and debate); violating human dignity would them mean
interacting with someone at a lower level ("close to the machine",
in some sense).
I've had a cold for the past several days. I hope I can get rid of
it before I go to the East Coast!
If I get over my cold in time, I'm going to watch the Leonid
meteor shower. But whether or not I get over my cold, you
should watch the Leonids! "Best show in 50 years -- again!", etc.,
etc.
(If you don't have information about the shower yet, try
a Google search
for "Leonid", or, perhaps more usefully,
a Google News
search for "Leonid". Get out there and look up!)
My local Walgreen's drug store has a "holiday card" section. Most of
the cards are Christmas cards with Christmas decorations and slogans
written on them. One of the cards caught my eye; it had Hebrew text
repeated over and over again on the outside. I guessed that it must
not be a Christmas card; I looked a little more closely. So what did
the card say?
L'shana tova tikatevu
That's right -- it's a Rosh Hashanah card.
This is trivial, but extremely useful:
#!/bin/sh
KEYSERVER=pgp.dtype.org
# you can also "gpg --search-key $1" instead of gpg --recv-key $1,
# and then provide something like an e-mail address instead of keyid,
# if you know that the identifying information you'll provide is
# going to be unique with respect to your keyring
gpg --keyserver $KEYSERVER --recv-key $1 && gpg --sign-key $1 && gpg --keyserver $KEYSERVER --send-key $1
if [ $? != 0 ]
then
echo 'failed for some reason -- run the program again?'
exit 1
fi
ADDR=$(gpg --list-keys $1 | head -1 | cut -d" " -f5-)
(cat << MESSAGE
This is an automatically-generated message to let you know that I have
signed your key. My signature is included below. (I have also uploaded
my signature to the keyserver $KEYSERVER.)
MESSAGE
gpg --export --armor $1) | mutt -s "I have signed your key" "$ADDR" && \
echo "Notification sent by e-mail to $ADDR"
[Main]
Contact: Seth David Schoen