I had my foot x-rayed today, and the radiologist and doctor who
examined the x-rays said I had no broken bones. (For those of
you who don't remember, a car ran over my left foot yesterday.)
I feel fortunate, and I hope I'll be able to walk normally
again soon.
Jonathan Walther wrote to
ask me an interesting question about the area of a Möbius strip.
I've been having a debate with a friend about how to calculate the area
of a moebius strip, where the moebius strip is constructed by taking a
1" by 10" area, twisting it, and joining the ends.
I have been maintaining that the area remains the same; that is, 10
square inches. My friend insists it is 20 square inches.
After discussion with my friend it became apparent that our different
calculations came from our having different concepts of "area". He used
a strip of paper to "illustrate" the moebius strip, and I feel this gave
him erroneous intuition in this case.
My observation was that if you did make the strip from paper, you
would need 20 sq. in. of paint in order to paint the whole thing.
If you used 10 sq. in. of paint, you would have 10 sq. in. of
surface unpainted.
However, Jonathan argues that this is a misinterpretation if the
Möbius strip is seen as having zero thickness, because then
points on one "side" are actually identical with the corresponding
points on the "other side". He suggests that, on a zero-thickness
strip, you can go only 10" before you return to your starting point.
(On a strip made of paper with non-zero thickness, you must go
20" before returning to your starting point.)
Does anybody have a view to clarify this? It does just seem like a
question of how to define surface area, but maybe there is a
particular definition of "surface area" or "Möbius strip"
which is somehow preferable.
(Normally you deal with areas in a plane, and the definition is easier.
Is there something handy from multivariate calculus here?)
Five people came from Microsoft
to meet with us on Tuesday about Palladium. It was very interesting.
"Sealed storage" is a very technically clever idea. Some of the
subtleties hit me only after the meeting. Basically, you have a
hardware co-processor within a machine which contains some unique
secret symmetric key (not known to anybody other than the co-processor).
Call this s. Also assume that the co-processor is also to take a
hash h of whatever kernel k is running on the ordinary CPU. (In
Palladium this is actually something called a "nub" -- in their
marketing materials a "Trusted Operating Root" or "TOR" -- but we
can pretend it's the OS kernel instead.)
The co-processor provides two functions, c=SEAL(p) and
p=UNSEAL(c). Within the co-processor, SEAL is implemented
approximately as aes_encrypt(s+h, p), and UNSEAL approximately
as aes_decrypt(s+h, p). (I am simplifying and eliding many
details; the real implementation is more complex and provides
several additional features.)
The interesting consequence of this is that any program
running on the system can call into the coprocessor and
ask the coprocessor to encrypt or decrypt arbitrary data.
(Actually, usually just a symmetric key for data, not the data
itself, but we'll pretend it's the data.) The coprocessor
by its very nature can successfully decrypt whatever
it has previously encrypted, but only if the encryption
was performed on the same machine while the same kernel k
was running! If the decryption is attempted on a different
PC (which has a different secret key h), or even on the same PC
while running a different or modified operating system, the
decryption routine will fail to decrypt the data. Thus, a
program is able to say "encrypt this so that it can only be
decrypted by a process running on the current machine under
the currently-running operating system kernel". And the
program can have confidence that the encryption occurs in an
unobservable way and that the resulting encrypted data can
be safely stored in an untrusted medium, because it will never
be possible to decrypt it except upon request of software
running in an identical environment.
I feel that I'm not quite doing justice to this clever technique,
partly because I'm omitting some details, and partly because I
haven't actually described the rest of the environment (how the
coprocessor fits into the rest of the system, how and when
the hash of the kernel is taken, how the coprocessor knows that
the hash of the kernel is accurate, etc.).
But one interesting consequence of this idea is that you can
actually have software which can be open source and runs on an
ordinary PC and yet can store information locally on a hard
drive in a way that the PC's owner (or somebody who steals the
hard drive) can't use or transfer the information except
according to a policy specified within the software. This can
be the case even though the owner of the PC is able to examine
and modify the software, and even to reboot the machine in
single-user mode, and run debuggers and emulators and so on.
There is no security-through-obscurity necessary, although
there are still certain physical security assumptions
involved (the user can't arbitrarily read or modify the contents
of the coprocessor or certain other parts of the PC's hardware).
Think about this: if you move the file (and, if you like, the
entire software operating environment!) to another PC, the
application can no longer decrypt the file. If you modify the
operating system (which you are able to do), the application
can longer decrypt the file. If you run a different operating
system (which you are able to do), the application can no
longer decrypt the file. If you modify the application (which
you are able to do), the application can no longer decrypt
the file. This is a technically impressive capability! After
the meeting, I kept realizing more and more interesting features
of this design.
Sealed storage is one part of Palladium, although not the whole
thing. It is one of the pieces which provide what we referred to
as "epistemology" for software running on a trusted system. How
can the software tell that it isn't running in a
virtual machine, an
emulator,
a debugger, a
system
call tracer, a
deceptive
system-call tracer, a
virtualized
OS kernel, etc.?
It's been suggested that
it's
a good thing when software can't tell, because end-users
thereby acquire more control, or reverse-engineering for
interoperability and competition is possible, or we can
preserve computing
history, or
preserve
human culture. If software can tell, maybe we can't do these
things, because someone can try to make the software enforce a
policy against running under emulation.
Descartes was one of the early epistemologists to worry about
whether his sensory experience (what software calls input and
output) is real or merely emulated, although that concern goes
back to the very beginnings of philosophy and speculative
thought.
Plato's cave is one more ancient instance of this anxiety -- and
in some sense so is Chuang Tzu's "butterfly dream". Plato and
Descartes, wholly unlike Chuang Tzu, specifically imagine a conspiracy
on the part of a malignant intelligence. Shall we say that
Western philosophy is more paranoid than Eastern, that the Western
philosopher is always prepared to believe in the Adversary? In
Chuang Tzu, the deception is simply a result of a dream, and no
moral evil or ill will. But in Plato the victims of the deception
are actually "en tautêi ek paidôn ontas en desmois kai
ta skelê kai tous auchenas". Ouch! (Who would be so cruel
as to chain people in a cave beneath the earth and shackle them
since childhood, "ek paidôn"?) In Descartes we start
off with ordinary and harmless dreams:
Praeclare sane, tanquam non sim homo qui soleam
noctu dormire, & eadem omnia in somnis pati, vel etiam
interdum minus verisimilia, quam quae isti vigilantes.
Quam frequenter vero usitata ista, me hic esse, toga
vestiri, foco assidere, quis nocturna persuadet,
cum tamen positis vestibus iaceo inter strata!
Age ergo somniemus, nec particularia ista
vera sint, nos oculos aperire, caput movere, manus
extendere, nec forte etiam nos habere tales
manus, nec tales totum corpus [...]
But eventually, just a few paragraphs later, we come to possess
an infinitely powerful and intelligent adversary whose only
goal in life is to deceive us in the service of some terrible evil:
genium aliquem malignum, eundemque summe potentem & callidum,
omnem suam industriam in eo posuisse, ut me falleret
(!)
If you walked into a psychiatrist's office talking about the
genius malignus, summe potens et callidus, qui posuit omnem suam
industriam in eo, ut me falleret, wouldn't
you be diagnosed with paranoid schizophrenia, at least as long
as your psychiatrist understood Latin?
But it's a reasonable fear for an epistemologist, or for a computer
program. In the computer security world,
there
is an Adversary,
there is
a Devil, summe potens et callidus...
Cory suggested that trusted computing initiatives (and their
technical features like sealed storage) occupy in security software's
epistemology the same position God and God's perfection occupied in
Descartes's epistemology.
Ut autem etiam illa tollatur, quamprimum occurret
occasio, examinare debeo an sit Deus, &, si sit,
an possit esse deceptor; hac enim re ignorata,
non videor de ulla alia plane certus esse unquam
posse.
(But so that that this [problem] might also be removed, I should,
as soon as possible, examine whether there be a God, and, if
there be, whether he might be a deceiver; for, being ignorant
of this thing, I cannot appear to be able ever to be entirely certain
about anything else.)
It doesn't take Descartes very long:
In primis enim agnosco fieri non posse ut ille me
unquam fallat; in omni enim fallacia vel deceptione
aliquid imperfectionis reperitur [...] nec proinde
in Deum cadit.
(For in the beginning I perceive that it is impossible
that he should ever deceive me; for in every deceit or
deception there appears some sort of imperfection
[...] and [this] does not thereby fall to God.)
Cory says God's part here in the software's epistemology is things
like sealed storage, and the counterpart of God's perfection is
Microsoft's trustworthiness.
It was nice of the Microsoft folks to come down and talk with us;
I really enjoyed it, and I learned a lot about Palladium, not that
I have a clear assessment of whether Palladium is good or bad. We
met with them for about four hours, and I spent much of the rest of
the day digesting and talking to other people about those four hours.
And certainly there's a lot of sophistication there.
My foot continues to feel better. I think it's going to be back to
normal soon; today I was able to walk on it. I tried to scan the
x-rays with a regular scanner, but it didn't come out well. (I would
have posted a picture of the bones in my foot here if I'd been able
to.)
It's amazing how great things feel when you regain them again after
a long absence. Eating after fasting (or being unable to eat),
eating bread after observing Passover, recovering from an illness --
everything is sweeter and more beautiful by contrast with its
absence, and everything can be taken away, even things we couldn't
imagine we could ever lose. "E quindi uscimmo a riveder le stelle."
Janis Ian -- the musician --
says
the RIAA is wrong about copyright and the Internet, and makes a
fairly detailed argument. That's fun. I like her music, too!
Did anybody else notice they'd been reissued? I found some from
1999 in my change at the post office. I thought they were minted
in 1979 and that was it forever.
Congratulations to
Steve Fossett on
finishing his balloon flight around the world!
It seems that
another balloonist
made an interesting ascent here in San Francisco yesterday.
Leonard:
I didn't know you'd want to part with your slide rule!
My foot was run over roughly the same way your foot was run over. The
car which ran it over was stopped and it started, rolled over my foot,
and then stopped again.
I finished The Holy Sinner by Thomas Mann (which I
originally bought because of the Salter cover, judging a book
purely) by its cover. The divine mercy recounted there
is wrenching.
Sterling:
Here's a good one: how the hell do you write a thriller novel in a
world that has cellphones? I happen to be writing a
thriller novel right now: in fact, I'm here researching
it, not that you'd ever guess. I'm not really here to
pontificate at you. I'm here to soak up your grand ideas
for use in fiction, because I need them even worse than
you do.
It's amazing how little technical room is left for
the customary cliches of a thriller novel, in this, our
modern, digitized, networked society. No more car chases
-- because I just use my cellphone and I call the cops in
the next town. No more gunfights in deserted warehouses
-- I just use my cellphone and I call the cops. No more
trailing the spy to his sinister lair -- I just use my
cellphone and I call up the cop's video monitors.
I was thinking about this after reading The Holy Sinner.
Much of the romance in writing set in earlier times comes from the
incredibly long journeys. One character goes on a pilgrimage.
Others go on quests. Typically, journeys take weeks and months.
Who nowadays in the industrialized world would take longer than a
weekend to get somewhere? My longest-ever trip was across the
continent by train: three nights and four days. Ordinarily, it
takes just a few hours. The folks who came to visit from Redmond
yesterday were no doubt back home in time for dinner.
Even using an automobile and stopping to sleep, you can cross this
continent in a week.
The only exception to the rapid-travel rule I can think of is
Wolfgang's walking trip. She walked to Oregon, and it took an
amount of time she could notice, and it was romantic or
educational or at least experiential as something she
noticed and lived and something which happened to her. But
walking to Oregon in a novel doesn't make sense for most of the
population. (Sure, not everybody has enough money to afford
plane tickets. But most people who can't afford plane tickets
also don't have months of spare time to walk to other states.)
The smaller world and the transportation-as-product industries do
eradicate entire plot elements connected with travel. You don't
have to find a good horse and a good map because there is a
company whose business model is getting you from one airport to
another for $200 with no intervention (but some identification)
on your part.
Travel is more anonymous in older stories because things are more
decentralized. When a person comes from another country, you
don't know anything about that person. (You don't have state-issued
ID, and you don't have credit bureaus, and you don't Google.) In
The Holy Sinner, Gregorius shows up and says he's a
knight, and other people ask him to prove he's a knight, so he
proves he's a knight by riding a horse and by fighting. He doesn't
have a "knight certificate", and he doesn't have any personal
or professional connections. (OK, he turns out to be the
illegitimate child of the ruler of that country, but nobody knows
that for several chapters more...)
Today, it's difficult to get from one place to another without
revealing (even possibly proving) your identity.
Amitai
Etzioni thinks this is good.
But the Sterling-relevant thing here is not whether it's good or
bad but whether it affects writing literature, and I guess it
does, because travel and communications just don't seem to work
the way they used to, and that interfere with standard devices of
mystery and suspense.
Bruce Sterling also said something particularly funny in that
speech:
Ladies and gentlemen, yes, I know that THE MATRIX is
a sci-fi movie. In my game, you get the good stuff where
you find it, okay? I don't have to name-check sci-fi
movies up here. I could have stolen you something nice
and exciting from the many bright and accomplished people
at Microsoft Research and Development. I pay attention
to them, too. I know they're into stuff like a Sensory
Pocket PC that that detects touch, tilt and motion; and
Chinese text-to-speech software that probably detects
Chinese piracy in real-time. So I tried that. I Googled
it. I surfed over to the Microsoft Research "Archived
Headlines", but since they are a modern computer company
instead of a big-budget science fiction movie, this is
what I got off their web page:
[Microsoft][SQL Server Driver] Invalid object name
'features'.
Drivers error '80040e37'
I decided to
rebut
the
MPAA
FAQ on the Broadcast
Flag. What's more, I decided to do it in relatively simple
and non-technical languge. See how you think I did.
Cory says I wrote some nice detailed notes about Palladium.
Personally, I thought I wrote some nice detailed notes about
Descartes and some cursory notes about Palladium. :-)
I'm reminded of when I
wrote about a Richard Dawkins speech
and
Leonard
said I'd summarized it. So let me actually try to summarize
most of our Microsoft meeting.
(I am omitting some "sensitive" material, but none of what I omit is
material which I think would embarrass Microsoft or expose it to
criticism. No part of the meeting was under an NDA or confidentiality
agreement.)
Please don't attribute anything below to Microsoft, e.g. in
a news article; instead, you should call them to confirm it. I'm
just giving my impressions and my understanding based on some
fairly sparse notes.
- Peter Biddle at Microsoft began thinking around 1997 about how to
protect his bits when they were on someone else's computer. (He
was Microsoft's representative at CPTWG and in the DVD-CCA, and
was somewhat skeptical of the technical efficacy of software-based
DRM.)
- His view, and the view of some of his colleagues, was that they
ultimately did not know how to enforce a policy for the use of
information when it was kept and used on somebody else's PC. The
PC platform did not seem to support this.
- In thinking about this, he decided that "a blob is a blob".
["Blob" is a database term for "binary large object", and
roughly means "file", "data structure", or "sequence of bits
whose internal structure is unanalyzed".] So, it was not
appropriate to think about protecting some bits more than others,
or enforcing some kinds of policies but not others. So the
protection of privacy was the same technical problem as the
protection of copyright, because in each case bits owned by
one party were being entrusted to another party and there was
an attempt to enforce a policy. Technologically, this could not
be done securely with software alone.
- It is hard to imagine how, in software alone, one part of the
functionality of a general-purpose operating system can be
protected from another part of the functionality of a
general-purpose operating system. The existing PC architecture
does not support this kind of compartmentalization. Consequently,
a virus could potentially access or capture any kind of data
(including very sensitive personally identifiable information,
financial and medical records, etc.), and redistribute it over a
network.
- Similarly, an emulator or debugger could be used to extract
copyrighted material and redistribute it or use it contrary to
policy.
- The view of some people working on Palladium is that it's
appropriate to create technology which would permit each
creator of any kind of digital information to set and
enforce any policy whatsoever for the use of that information.
(If you don't want to abide by the policy, you don't have to
accept the information.) There are various subtleties here and
some debate about public policy, but the basic assumption is
that you have a right to control, if you wish, how other people
will use bits you create.
- [Omit some discussion of business models, DRM, file sharing,
legislation, etc.]
- Microsoft does not have the desire or means to control
any information which is input into a computer via a
means beyond the scope of DRM or Palladium (in unencrypted
formats such as MP3), and intends to continue supporting such
formats.
- Microsoft employees have a broad variety of opinions on
legal and technical issues related to copyright enforcement.
The company's position is that the use of DRM should be
purely voluntary (in the sense in which the industry uses
that term; they do not have a public position that the DMCA's
anticircumvention provisions need to be modified).
- Microsoft wants to compete with proprietary platforms
which offer DRM [to publishers], such as proprietary consumer
electronics platforms. Microsoft believes that, if it did
not support DRM at all, it would be at a competitive
disadvantage relative to proprietary platforms which did.
- The Palladium architecture has been under development
since around 1997, and Microsoft holds or has filed for
some patents which cover portions of it. At least one of
the inventors of the Digital
Rights Management Operating System patent is working on
Palladium, although we did not discuss whether the DRM OS
patent is related to Palladium, whether Microsoft is writing
an operating system using the techniques disclosed in that
patent, or whether the DRM OS patent covers any parts of
Palladium.
- Palladium is distinct from TCPA and has technical
differences from TCPA. It has some architectural points
in common with TCPA, including, most significantly, the
use of "trusted hardware" within a PC in order to establish
a root of trust. Both TCPA and Palladium require modifications
to existing PC hardware architecture in order to work. In
addition, they both require modifications to software in order
to use trust features. Both are intended to run existing
"untrusted" software without any modifications.
- Palladium would, inter alia, add a new opcode and a
new operating mode to the CPU. A portion of the enforcement
resides within the CPU itself.
- Microsoft assumed as a design criterion for Palladium
that existing versions of Windows should be able to run on
a Palladium PC, as should existing Windows applications, as
should existing non-Windows operating systems like Linux.
There is no attempt to stop people from booting whatever
code they currently use or may write in the future. In
addition, the hardware trust features can potentially be used
by specially-adapted software, regardless of what operating
system is running. It is possible to imagine that a
Palladium-hardware-aware version of Linux could be created
and could make full use of Palladium's hardware features in
order to achieve trust comparable to the Windows implementation.
Microsoft is only writing an implementation for Windows, but
plans to publish all the technical details. (Microsoft has not
yet decided about patent policies or stated whether an operating
system which used Palladium hardware features would necessarily
infringe any of Microsoft's Palladium patents.)
- Microsoft, like chemists, calls Palladium "Pd" for short.
- I'm going to type ":abbr pd Palladium" in vi so that I can
stop typing "Palladium" all the time. Hooray for :abbr!
- The initial version of Palladium will require changes to five
parts of the PC's hardware. Changes will be required to the CPU,
the chipset (on the motherboard), the input devices (e.g.
keyboard), and the video output devices (graphics processor). In
addition, a new component must be added: a tamper-resistant
secure cryptographic co-processor, which Microsoft calls SCP or
SPP.
- Although the SCP is tamper-resistant, it is likely that a
skilled attacker with physical access to the inside of a
Palladium PC can still compromise it or subvert its policies in
some way. One possible attack is one I discussed with Ross
Anderson last week: you can replace the system RAM with special
RAM which allows its contents to be read or modified by an
external circuit.
- So it is possible that an attacker with physical access can
still compromise the system, even though the SCP is meant to be
tamper-resistant, partly because other components (like RAM)
are less robust against modification. Palladium primarily
defends effectively against two classes of attacks: (1) remote
network-mounted attacks (buffer overflows and other programming
flaws, malicious mobile code, etc.), because even if some
malicious code is installed in one part of the system, it still
can't effectively subvert the policy of another part of the
system, and (2) local software-based attacks, including things
like using a debugger to try to read a program's internal
state while it's executing or to try to subvert its policy.
Thus, Palladium can probably guarantee that you can't write or
download any software (and nobody else can write or upload to
you any software) which would compromise the policy of software
running locally which is making use of Palladium trust features.
- Although hardware attacks can work, they are probably not
portable from one machine to another. This is especially
interesting for users of DRM -- even though one user can launch
an expensive and successful attack, that user can't publish
an inexpensive software-based technique or HOWTO which would
enable others to reproduce this attack cheaply. (Cue reference
to Bunnie's X-BOX reverse engineering paper, where he suggests
that his inexpensive attack on the X-BOX can yield portable
techniques which can be used by others inexpensively, but that
the X-BOX could have been designed so that his attack
was not readily portable to other machines.)
- Palladium's changes to the CPU allow it to be placed into a
new mode where certain areas of memory are restricted via a
technique called "code curtaining" to an ultra-privileged piece
of code called the "nub" or "TOR". ("Nub" is the Palladium
team's term for this code, and "TOR", for "Trusted Operating
Root", is the official public term.) The nub is a kind of
trusted memory manager, which runs with more privilege than
an operating system kernel. The nub also manages access to
the SCP.
- The SCP is an 8-bit tamper-resistant cryptographic
smart-card which contains unique keys, including public
keypairs (2048-bit RSA), and symmetric keys for AES in CBC mode.
These keys are unique per machine and the SCP does not reveal
them to anything outside the SCP's security perimeter.
It also contains a variety of other cryptographic functionality,
including SHA-1, RSA, AES, and other cipher implementations,
a small amount of memory, and a monotone counter. The SCP can
do a number of cryptographic protocols. It also contains a
thing called a PCR. (I think that stands for "platform
configuration register".)
- When you want to start a Palladium PC in trusted mode (note
that it doesn't have to start in trusted mode, and,
from what Microsoft said, it sounds like you could even imagine
booting the same OS in either trusted or untrusted mode, based on
a user's choice at boot time), the system hardware performs
what's called an "authenticated boot", in which the system is
placed in a known state and a nub is loaded. A hash (I think
it's SHA-1) is taken of the nub which was just loaded, and
the 160-bit hash is stored unalterably in the PCR, and remains
there for as long as the system continues to operate in trusted
mode. Then the operating system kernel can boot, but the key
to the trust in the system is the authentication of the nub.
As long as the system is up, the SCP knows exactly which nub
is currently running; because of the way the CPU works, it is
not possible for any other software to modify the nub or its
memory or subvert the nub's policies. The nub is in some sense
in charge of the system at a low level, but it doesn't usually
do things which other software would notice unless it's asked to.
- Palladium's authenticated boot is simpler than TCPA's
version, because only a single hash (or "measurement", in
TCPA language) is taken. Palladium does not attempt to
"measure" the hardware, BIOS, boot loader, OS kernel, etc., or
at least not within the SCP. In TCPA, several separate
hashes will be taken and stored in secure registers.
- The nub interfaces with other software on the system by
means of programs (outside the nub) called trusted agents (or
TAs). The TAs can implement sophisticated policies and
authentication methods, where the nub (and SCP) just implement
fairly simple primitives. A TA can also communicate with
user-space programs (at least, that will be a feature of
Microsoft's nub; other people can write their own nubs which
can support different kinds of TAs or even do without TAs
entirely). The TAs are protected by hardware from one
another and from the rest of the system.
- Even PCI DMA can't read or write memory which has been
reserved to a nub's or TA's use (including the nub's or
TA's code). This memory is completely inaccessible and can
only be accessed indirectly through API calls. The chipset
on the motherboard is modified to enforces this sort of
restriction.
- The SCP provides a feature called "sealed storage" by means
of two API calls (called SEAL and UNSEAL). The Microsoft nub
provides more complicated wrappers around these calls; using the
Microsoft wrappers, you can have features like "migration
strategy" or "migration policy" (allowing at least three different
policies for how encrypted data can be moved from one machine to
another). If a TA running on a system in trusted mode wants to
use sealed storage, it can call into the APIs implemented in the
nub.
- Sealed storage is implemented by means of encryption (sealing)
or decryption (unsealing) with a symmetric cipher (probably AES in
CBC mode). When the SCP is given data to seal, it's given two
arguments: the data itself and a 160-bit "nub identifier" (which
is the SHA-1 hash of some nub and so uniquely identifies that nub).
- Sealing is performed by prepending the nub identifier to
the data to be sealed, and then encrypting the result with a
private symmetric key -- I want to call this the "platform-specific
key", which varies from machine to machine and is secret. (I don't
remember whether "platform-specific key" is Microsoft's term for
this.) That key is kept within the SCP and is a unique identifier
for the machine which performed the sealing operation.
- The SCP actually also prepends a random nonce to the data
to be sealed before encryption (and discards the nonce upon
decryption). This is a clever privacy feature which prevents
someone from creating an application which "cookies you" by
recording the output of sealing an empty string (and then using
the result as a persistent unique identifier for your machine).
A program which tried to "cookie you" this way would find that,
because of the random nonce, the result of sealing a given
string is constantly completely different, and no useful information
about the identity of the machine is revealed by the sealing
operation.
- After encryption, the SCP returns the encrypted result as
the return value of the SEAL operation.
- When an SCP is given encrypted data to UNSEAL, it internally
attempts to decrypt the encrypted data using its platform-specific
key. This means that, if the encrypted data was originally sealed
on a different machine, the UNSEAL operation will fail outright
immediately. (You can't take a sealed file and transfer it to
another machine and unseal it there; because the platform-specific
key is used for encryption and decryption, and can't be extracted
from the SCP, you can only UNSEAL data on the same machine on
which it was originally SEALed.)
- If the decryption is successful, the SCP performs a second
check: it examines the nub identifier which resides within the
decrypted data. The nub identifier was specified at the time
the data was originally SEALed, and indicates which nub is
allowed to receive the decrypted data. If the nub identifier
for the decrypted data is identical to the nub identifer which
is currently stored in the PCR (which is the SHA-1 hash of the
currently-running nub on the machine at the moment UNSEAL was
called), the UNSEAL is successful and the decrypted data is
returned to the calling nub. However, if the nub identifier
does not match the contents of the PCR, the SCP concludes that
the nub which is currently running is not entitled to
receive this data, and discards it.
- Thus, sealing is specific to a physical machine
and also specific to a nub. Data sealed on one
machine for a particular nub cannot be decrypted on a different
machine or under a different nub. An application which trusts
a particular nub (and is running under that nub) can seal important
secret data and then store the resulting sealed data safely on an
untrusted hard drive, or even send it over a network.
- If you reboot the machine under a debugger, there is no
technical problem, and you can debug the software which created
the encrypted file. However, since you aren't running the
proper (non-debugger-friendly) nub, the debugger will work,
but the UNSEAL call won't. The SCP will receive the UNSEAL
call, examine the PCR, and conclude that the currently-running
nub is not cleared (so to speak) to receive the sealed data.
Your applications can only decrypt sealed data if they are
running under the same machine and under the same
software environment within which they originally sealed
that data!
- This is remarkably clever. When you are running under a
trusted nub, your applications can use the SCP to decrypt and
process data, but you can't run software which subverts a
TA's policy (because the nub will not permit the policy to be
subverted).
- When you are not running under a trusted nub, you can run
software which subverts a TA's policy (because the nub isn't
able to prevent it), but your applications will no longer be
able to decrypt any sealed data, because the SCP won't be
willing to perform the decryption.
- There is a long discussion of how you can make a backup,
or upgrade your system, or migrate your software and data to
a new system, etc. The default with sealed storage is that
any sealed data will be unusable when migrated to a new
system. (Thus Ross Anderson mentioned that you can't easily
leak a document to a reporter, because if the document is
sealed for use only on your PC, the reporter's PC will be
unable to decrypt the document.)
- The Microsoft nub provides wrappers around the SCP's
sealing features which allow the software which performs
the sealing operation to specify a migration policy at the
time the sealing operation is originally performed. The
migration policy can be (approximately) one of the following,
at the software's sole option: (1) Migration is prevented
entirely, and the data must die with the current PC where
it was created. (2) Migration is permitted upon some
kind of authentication by a local user (e.g. a password)
which will decrypt or command the decryption of data
temporarily in order to permit it to be migrated. (3)
Migration is permitted with the assistance and consent
of a 3rd party -- e.g. in DRM applications, the DRM software
might have to "phone home" to get consent and decryption
keys which will permit a file to be decrypted temporarily
in order to permit it to be migrated. This last option
might be called a key escrow application, although it's not
technically parallel to something like the Clipper Chip,
because it doesn't facilitate wiretapping or threaten
communications privacy.
- Palladium's modifications to input and output hardware
will prevent software from doing certain kinds of monitoring
and spoofing, as well as "screen scraping". A program will
be able to ask Palladium to display a dialog box which can't
be "obscured" or "observed" by other software, and Palladium
hardware can enforce these conditions. And there is a way to
be sure that input is coming from a physical input device and
not spoofed by another program. This is probably also comparable
to the "physical presence detection" in TCPA, which tries to
ascertain whether a user is physically present (which is a
requirement in order for certain security-sensitive things to
happen).
- The secure output features also permit, e.g., a DVD player
program to prevent other software from making screen captures.
The initial version of Palladium does not control audio output
in this way, so you can still record all sound output via
something like TotalRecorder. (Microsoft also has an initiative
called Secure Audio Path which could potentially restrict that,
but SAP isn't part of Palladium proper. The Palladium secure
output features are currently totally video-specific.)
- We didn't talk much about the details of how TAs
communicate with user-space programs, which is key to how a
programmer would actually use Palladium features. We also
didn't talk about whether there is some kind of authentication
of a kernel or precisely which traditional kernel features are
taken over by the nub. Microsoft did say that most things
which are currently in the kernel will remain in the kernel.
- In principle, nub and kernel are independent, so a
non-Microsoft kernel could run on a Microsoft nub, or vice
versa. Patent and copyright issues might prevent this from
being done in practice, but it is apparently technically possible
within the design of Palladium.
- Microsoft's nub, including its source code, will be published
for review by anyone who wants to examine it, in order to allow
all of Microsoft's claims about its security properties to be
verified. There is no part of Palladium's design or code which
needs to be kept secret, although each SCP will contain secret
cryptographic keys loaded at the time of its manufacture.
Microsoft will encourage non-Microsoft people to read and
discuss its nub. You will also be able to create your own nub,
except that changing the nub will (as discussed above) prevent
previously-sealed data from being decrypted.
- If you choose to allow people on the network to tell which
nub you are running, they can probably find out in a way you
can't fake (using a cryptographic protocol). You can refuse
to tell them, but if you do choose to tell them, you will not
be able to lie about it (except maybe if you know a way to
tamper with the hardware). This is like TCPA; critics note
that many entities which use Palladium might assume by default
that any non-Microsoft nub is untrustworthy, which would make
it very inconvenient to change your nub from the Microsoft-supplied
default.
- Your nub's identifier is not a unique identifier for your
machine, because it is the same as everyone else's nub. Palladium
does not create any remotely-visible unique identifier for your
machine, and actually contains some features to try to avoid
inadvertently disclosing a unique identifier. There is a concept
of an "identity server" which is a separate service which issues
you some kind of identity credential which uses Palladium and may
or may not reveal particular personal information. (I didn't get
a lot of details on how identity servers would work or who would
run them.)
- Microsoft suggests that Palladium is flexible enough that many
entities could use it to create their own policies, judgments,
certification services, etc. That part of the discussion reminded
me in some ways of PICS and P3P, although Palladium has a more
robust technical enforcement mechanism than either of those
standards.
We talked about lots of other things, but that's all I have notes on.
I also wrote a message to the cryptography list in response to
someone who wondered whether Palladium would prevent you from
writing your own programs and scripts:
> * or are not able to use shell scripts (at least not in
> trusted context). This means a
> strict separation between certified software and data.
The latter is closest to what's intended in Palladium. Individual
programs using Palladium features are able to prevent one another from
reading their executing or stored state. You can write your own
programs, but somebody else can also write programs which can process
data in a way that your programs can't interact with.
The Palladium security model and features are different from Unix, but
you can imagine by rough analogy a Unix implementation on a system
with protected memory. Every process can have its own virtual memory
space, read and write files, interact with the user, etc. But
normally a program can't read another program's memory without the
other program's permission.
The analogy starts to break down, though: in Unix a process running as
the superuser or code running in kernel mode may be able to ignore
memory protection and monitor or control an arbitrary process. In
Palladium, if a system is started in a trusted mode, not even the OS
kernel will have access to all system resources. That limitation
doesn't stop you from writing your own application software or scripts.
Interestingly, Palladium and TCPA both allow you to modify any part of
the software installed on your system (though not your hardware). The
worst thing which can happen to you as a result is that the system
will know that it is no longer "trusted", or will otherwise be able to
recognize or take account of the changes you made. In principle,
there's nothing wrong with running "untrusted"; particular applications
or services which relied on a trusted feature, including sealed
storage (see below), may fail to operate.
Palladium and TCPA both allow an application to make use of
hardware-based encryption and decryption in a scheme called "sealed
storage" which uses a hash of the running system's software as part of
the key. One result of this is that, if you change relevant parts of
the software, the hardware will no longer be able to perform the
decryption step. To oversimplify slightly, you could imagine that the
hardware uses the currently-running OS kernel's hash as part of this
key. Then, if you change the kernel in any way (which you're
permitted to do), applications running under it will find that they're
no longer able to decrypt "sealed" files which were created under the
original kernel. Rebooting with the original kernel will restore the
ability to decrypt, because the hash will again match the original
kernel's hash.
(I've been reading TCPA specs and recently met with some Microsoft
Palladium team members. But I'm still learning about both systems and
may well have made some mistakes in my description.)
I'm also ignoring, for the time being, my attacks on Peter Biddle's
"a blob is a blob" and "privacy = content protection" claims.
That topic is interesting to me, but not necessarily urgent for
people who are looking for more information on Palladium. But you
should read his and Paul England's presentations from WinHEC.
I really like that the first Google hit for
"Jack Valenti" is now
Jack Valenti's 1982
VCR testimony!
That's the first time I've ever been responsible for putting something
ahead of a famous person's own home page in the Google results for a
search on that person's name.
This result is not inaccurate. If you want to know who Jack Valenti
is, and what he has done and what he has had to say, the 1982
testimony is a key document.
Several of us went on July 4 to see the
San Francisco Mime Troupe in their
debut performance of the political comedy
Mr. Smith Goes to
Obscuristan. More on this later.
A few days ago, I realized that an adult I saw couldn't read or
write. That's never happened to me before.
In the most recent year for which I found statistics in the
Statistical Abstract of the United States, 1 in 5
adults in California hadn't finished high school, though certainly
most of those could read and write.
Obscene material is proscribed in this way [by the Miller
test:] it appeals to the prurient interest [and] it's offensive.
Basically, it's "It excites me; and I hate it."
(Prof. Jonathan Zittrain, at ILAW,
via
Copyfight)
I had dinner with Kragen
and Beatrice.
That was really nice.
Kragen showed me a copy of the fantastic children's book
Arm in Arm. I'd forgotten, but that book taught me
about recursion, paradox, infinite regress, love, and other things.
Plus, it's got the "copy kitten"!
Because Kragen was able to rip and encode Vanessa-Mae's CD
The Violin Player using the free, unencumbered
Ogg Vorbis audio codec, he
was able to bring this music conveniently to a party of mine on
his GNU/Linux laptop, and play her version of Bach's "Toccata
and Fugue in D minor" for the partygoers. As a result, I
went out today and bought my own copy of the CD.
It's great!
Obscene material is proscribed in this way [by the Miller
test:] it appeals to the prurient interest [and] it's offensive.
Basically, it's "It excites me; and I hate it."
I want to amend Zittrain's description of Miller to
include the third prong (the material has no serious scientific,
literary, artistic, or political value). So:
It excites me; and I hate it; and it sucks.
I was impressed by the number of replies I received to my
notes on Microsoft Palladium.
After Cory linked to it,
a large number of blogs joined in linking, so that I actually
got into the Daypop Top
40 (as high as #7) and even onto
Blogdex (as high as #4).
This is by far the most fame and notoriety my web diary has ever
received.
There's a restaurant in the South of Market called Sitio. I originally
thought it was a bar, and I thought it was a terribly fitting name for
a bar.
This is, of course, because sitio means
"I am thirsty". It's famous as
one of the "seven last words of Jesus Christ". The original would
more likely have been Aramaic, and the original written version is
Greek --
Meta touto eidôs ho Iêsous
hoti êdê panta tetelestai, hina teleiôthê
hê graphê, legei: dipsô. (John 19:28)
Postea sciens Iesus quia omnia consummata sunt,
ut consummaretur scriptura, dixit: sitio. (John 19:28
(Vulgate))
Afterward, knowing that all these things were accomplished,
Jesus said, so that what was written might be accomplished: I am
thirsty. (John 19:28 (my translation))
The "seven last words" are the subject of a musical composition
by Hayden, as well as other works by other people.
(It turns out that this restaurant is actually named in Spanish,
and its name is supposed to be translated "site" or "location".
Oh well.)
I think my foot is still recovering. I've been doing a lot of walking
without much trouble, but today it got sore afterward.
My mom was having some computer problems, and we tried to work on them over
the phone, but it wasn't so great, because I'd have to tell her things to
try, and she'd have to read me the results, and you know the bandwidth in
that situation is really low -- well below 300 bps between the remote user
and the computer if the computer operator isn't familiar with what
you're asking him or her to do.
So I got my mom to download and install a VNC server for Windows, and I
grabbed a VNC client for MacOS (I'm using this iBook at the moment, mainly
just to ssh using the wireless LAN here), and in a few minutes I could see
and interactively control her entire Windows XP desktop. VNC is great.
Next time you're trying to help someone with a computer problem from far
away, get VNC and get it set up first.
(It will help if both people have network connections faster than 56 Kbps,
though...)
One of the cool things about VNC is that it's so cross-platform. Unix users
can control a remote Windows desktop, Windows users can control a remote Unix
desktop, Mac users can control a remote Windows desktop, etc. (There is a
vncviewer in LNX-BBC, although currently
no working X11 out of the new build
tree.)
Intrepid readers of mailing lists I'm on may recall that there is even a
PalmOS VNC client,
and I once used that client together with a Ricochet modem to type characters
into an xterm running on my Unix desktop system while standing in the middle
of the room squinting at my Palm Pilot's screen. (Easier than that is to use
one of the ssh implementations for PalmOS and create a text session -- but the
graphical session did work! I call that
inappropriate technology.)
I feel old because
people the age of
my little sister are now facing criminal charges for writing
computer viruses. (Fortunately, my little sister herself isn't
facing any such charges.)
It occurs to me to appreciate the kindness of one of my co-workers at
TD Bank when I was an intern
there in 1997 for taking me out on his lunch break around Manhattan
to try to find non-leather dress shoes. I wish I could remember which
co-worker that was.
We're still studying Palladium and TCPA and trying to get to the
bottom of it all.
I've definitely talked to some pretty interesting people about this,
and they have pretty diverse views.
Here is a
cool story about Prof. Felten. I suggested to him that
he should register a certain domain name. If he doesn't, I'll
suggest it here, and other people can register it instead.
Finally, somebody has found an example of
code which can kill
someone: genetic code for viruses, which can now be
transmitted effectively (one can imagine lethally) across a digital
medium. (On the other end, though, you do need a virus-assembling
mechanism.)
DVD litigation fans will recall that Judge Kaplan compared DeCSS to
a pathogen, where other people have compared it to poetry.
(And then, of course, there's
Daniel
Alter. But mostly in the United States it's
legal to teach people how to kill
people. In fact, the
government does that today. I wonder if the work of Wimmer et
al. will give new meaning to "publishing a virus" and whether courts
will be prepared to protect that as speech.)
I went to the Dar Williams concert at Bimbo's on Columbus, and it
was very beautiful. She sang many of my favorite songs, and I
discovered that the EFF office is full of Dar Williams
fans, including some fairly devoted fans. (I think I've been to
every Dar Williams concert here in the City since 2000, but perhaps
there are some I don't know about.)
Dar sang two new songs -- one about fishing, another about being
a parent ("The One Who Knows"). I think the refrain was something
like
So when they ask how far love goes
When my job's done, you'll be the one who knows.
I'm enough of a fan that I noticed things like changes of "the" to
"a" ("'cause when you live in a world") and a voiced "z"
which appears as unvoiced "s" in the recorded version. ("Hey Dar!
You're singing your song wrong! It's supposed to be /s/!")
Speaking of "s" and "z", I was talking to a new EFF volunteer about
the German character eszet (which is also spelled other ways) -- if
your browser can render it, it's ß. We were wondering where
this character comes from and what it might have in common with the
Greek beta. Often a glyph for beta is used as a glyph for eszet.
A little bit of research
reveals that it's purely a coincidence that eszet looks so
much like Greek beta. As the name suggests, eszet means "sz",
and the HTML character entity name for the character is "ß",
because, historically, it's a ligature of the long s (the form which
produces things like "Congrefs" in English, and from which we also get
the integral sign in calculus) with z. The z is a curly z and the s
is a long s, and they are joined together in a ligature, and that's
probably also why eszet is usually open on the bottom where the
classical beta is closed. Also, in a beta, the bar on the left
descends slightly below the curve, where an eszet will have the bar
approximately level with the curve if it's printed with a separate
glyph.
(The above is partly cribbed from my note to Riana.)
Various people have said that "copyright is the engine of
creativity".
Who hearing
"James and Marybeth" could disagree?
- D2-D4 G8-F6
- C2-C4 E7-E6
- G1-F3 B7-B6
- B1-C3 F8-B4
- C1-D2 C8-B7
- E2-E3 E8-G8
- F1-D3 D7-D6
- A2-A3 B4-C3
- D2-C3 F6-E4
- A1-C1 F7-F5
- E1-G1 B8-D7
- D1-E2 ...
ABCDEFGH
--------
|r q rk |8
|pbpn pp|7
| p pp |6
| p |5
| PPn |4
|P BBPN |3
| P QPPP|2
| R RK |1
--------
NTK has some
hilarious coverage
of Yahoo keyword
filters, which lead, NTK notes, to "medieval" appearing as
"medireview".
I observed that the same substitution ("review" for "eval") leads to
reviewuate,
reviewuation,
retrireview,
prreviewent,
and even
primreview.
("Medieval" and "primeval" both incorporate the Latin aevus,
which means "age" or "time"; "primeval" is pertaining to the first
age and "medieval" pertains to the middle age.)
Yahoo also replaced "expression" by "statement", leading to oddities
like
Statementism
(the artistic movement, doncha know) and the political virtue of
freedom of
statement.
(This subsequently appeared on slashdot.)
I misspoke back in November when I
said that the author of the Pledge of Allegiance and the author of
Looking Backward were the same person. They were
different Bellamies; they were cousins.
I re-read The Diamond Age by Neal Stephenson. I liked
it even better than the first time. I was looking for the passage
about King Coyote:
Castles, gardens, gold and jewels
Contentment signify, for fools
Like Princess Nell; but those
Who cultivate their wit
Like King Coyote and his crows
Compile their power bit by bit
And hide it places no one knows.
(The Diamond Age, p. 437)
After I found that passage, I found it hard to put the book down, and I
read from p. 437 to the end, and then from the beginning up to
p. 437, and then from p. 437 to the end again. It's very good.
(Princess Nell certainly turns out to be no fool.)
You can do a lot with one line of Perl. For example, I wanted to
change the default root device of a kernel image -- the way
rdev(8) does -- to block device major 240 minor 0 (which is
/dev/cloop if you use the cloop driver). So I found how to do
this with dd, instead of rdev, and then it turned out that it
could all be done this way:
perl -e 'open V,"+<bzImage";seek V,508,0;print V "\0\360"'
Now that's concise.
My dad and my stepmother are visiting, and I've managed to clean up
again.
We had some various pieces of good news today in EFF-land, including
a subtle and hard-to-explain triumph.
If you're going to be around D.C. on Wednesday,
don't miss the
DOC workshop on DRM. (Richard Stallman will be there, will
you?)
Happy Yellow Pig Day, and happy
birthday to Cory.
Dmitry Sklyarov was arrested one year ago today (on July 17, 2001).
Now he is free. It didn't have to turn out that way. Dmitry
started off as a "Russian hacker" -- an archetype inspiring
considerable fear in many people.
(We should distinguish computer security and copyright enforcement,
so that we should speak of "computer security and l'havdil
copyright enforcement" -- but I have to say that I'm reminded of
Feynman's story about how people reacted when he learned to pick
the locks at Los Alamos. They decided to keep him away from their
locks: "That was their solution: I was the danger!")
Today Dmitry Sklyarov is many other things to many other people --
a folk hero, a subject of songs and poetry, a name to conjure with,
an example in terrorem deterring attacks on DRM, an example
held up in white papers and cited in court cases, a graduate student,
a father. He is also a free man. It didn't have to turn out that
way.
The Egyptian Licorice Tea from
Yogi Tea is really, really
good.
I'm honored to have had my work linked to from Bruce Schneier's
Crypto-gram for the first time.
The current
issue links to
my rebuttal
of the MPAA's Broadcast Flag FAQ.
Declan says that
the
RIAA is now proposing its own broadcast flag. Does anybody have
details about this? (No, please don't tell me "the EFF
published a piece on Consensus at Lawyerpoint about it"...)
Let's talk about people who have been misled:
[Sandra Banning, mother of Michael Newdow's daughter] described
herself and her daughter as practicing Christians who are
active in their Elk Grove church. [...] The girl replied "that
it was OK because she will still whisper 'one nation under God' and
no one will know she is breaking the law," Banning said.
(Bob Egelko, "Girl in pledge case not an atheist, mom says",
San Francisco Chronicle, July 16; see
another version of the story)
So Sandra Banning, or somebody, told her daughter that
Michael Newdow is trying to make saying "one nation under God"
against the law (and lock up all those theist kids or
something?).
The law in the U.S. is that you can pray in public, you can pray in
private, you can pray in public school, you can advocate
religious belief in public school, you can wear religious
symbols and slogans -- if you are a student. And this
is perfectly proper, and an important part of religious freedom
and free expression. What you can't do is have the public
school advocate a religious belief.
If lots of kids think that Michael Newdow is trying to stop them
from saying that they believe in God, then they will have good
reason to be angry with him (even if they're his daughter -- maybe
especially if they're his daughter). But of course that's not
what Newdow is trying to do.
His complaint is with religious activity on the part of government,
not religious activity on the part of students.
Maybe many children think that, if adults try to lead them in saying
something, they must say it, and if adults don't lead them in saying
something, they may not say it. But an earlier Pledge case --
as some people observed, before the Pledge included "under God"! --
says children don't have to say what the adults expect them to.
That's Barnette. And another case says children have
their own free expression rights and can say things adults don't
approve of. That's Tinker. Fixed stars, schoolhouse
gates.
The free expression (and free exercise) rights of young people are
important to me, but I see a tendency to minimize them. The
separation of church and state in public education makes
especially strong sense if we think that young people have their
own beliefs -- very possibly distinct from their communities' or
their parents' -- and their own rights to express those beliefs.
Maybe Newdow's and Banning's daughter doesn't yet know she has
those rights -- but Banning ought to know it. And she ought to
tell her daughter: you can say whatever you want, and you can
disagree with your father, and he's not trying to take that right
away from you.
I haven't written much about actual concrete advocacy arguments,
but you can
check out the latest in Microsoft advocacy
versus Linux. I think the bottom line is that Microsoft is saying
"we're reliable, we're predictable, we're comprehensive, and you know
exactly what you're getting". It's not totally surprising that
these characteristics, and especially the broad theme of predictability,
would appeal to corporate IT managers.
What does surprise me is that Microsoft argues that Linux users may
suffer from vendor lock-in because certain Linux applications or
other software are not standard across all distributions. Vendor
lock-in is one problem free software users are particularly unlikely
to experience.
A group of people went to protest today at the
Technology Administration's
DRM workshop
in Washington, DC.
Declan
took great pictures,
including one of the best pictures of Richard M. Stallman
I have ever seen. It sounds like the protest was interesting;
I'm waiting to hear from Robin, who was in the audience representing
EFF.
I went with Praveen and others to the concert at the Fillmore given
by They Might Be Giants. (Other people,
including
Leonard
and Zack
Weinberg, went to see the same show the night before.)
Noe Venable opened, which I
found odd, because I also heard her open for Dar Williams last week.
Dar and TMBG are rather different, but they chose to have the same
person open for them. (Noe's music is much closer to Dar's, I
think, than to TMBG's. They are both female singer-songwriters who
have songs which tell stories, and the similarities don't end there.)
Noe Venable has a beautiful singing voice, and she can hit amazingly
pure notes. Her web site has several downloadable tracks, including
Juniper, which she performed at the Dar
Williams concert (though not at TMBG).
Here's my attempt at her lyrics:
Mama, oh, Mama,
I don't wanna come down,
not if it's all like it was on the ground,
hiding my feet cause I'm too shy to dance,
hiding my face behind both of my hands.
Mama, o Mama, don't make me come down,
'cause I don't know what will come out of my mouth.
People will hear, they won't know who I am,
People will hear, and they won't understand.
Mama, I've seen them, the others like me,
once I could see it was all I could see,
the silent procession that crosses the snow:
with skeleton ladies like skeletons go.
Mama, o Mama, I can't let you know
how my trouble began, but I can't let it go.
Plummeting into the nightmare below
I'm better awake and I'm better alone
Mama, oooooo
Mama, oooooo
Mama, o Mama, up here where I'm free,
I have seen beauty you wouldn't believe:
Juniper's ledges and Juniper's birds
where Juniper's edges and mine become blurred.
Mama, o, Mama, if you only heard
the reasons for living, the freedom of words,
the blooming balloon of a thought being born
safe in the branches of Juniper's arms.
Mama, oooooo
Mama, oooooo
Mama, o, Mama, I'm not like you think,
a harrowing walk down a narrowing street.
If I had my way I would bring the whole world,
every sleepwalker and each hungry girl.
Mama, o, Mama, and old Uncle Tom,
my father the preacher, my daughter the song,
tell every bell to just wake up and ring
tell this old choir to just shut up and sing!
Oooooo
oooooo
oooooo
oooooo
oooooo
Mama, o, Mama, I'm holding your hand,
in these glorious dreams in which you understand.
Mama, o, Mama, we're spinning around,
Mama, o, Mama, don't make me come down.
Oooooo
oooooo
oooooo
oooooo
oooooo
Dar and Noe both, I think, have singing voices which differ
dramatically from their speaking voices. In Noe's case, it's even
more extreme, because she speaks with a high-pitched, sing-song
voice with certain cadences which make her sound like she might be
ten or twelve years old. When she sings, though, she seems to have
perfect control, like an opera singer, and, as I said, a tremendous
purity. (One of my companions at last week's concert suggested that
Noe might cause glasses to shatter with her voice.)
I disliked two things about the TMBG concert. First, I didn't like
the volume level. This was an actual "rock concert", and so it was
very distinct from (for example) the Dar Williams concert last week.
I covered my ears with a sweatshirt practically the whole time, and
it was still very loud. It was much louder than necessary for the
whole audience to hear clearly.
At other events I've been to with amplified sound, the main point of
the amplification was to be sure that everybody could hear. At this
event, there was also whatever motive drives rock concerts to be
almost painfully loud, so that some people who attend them actually
suffer physical injury.
Second, I didn't know a lot of the songs! As I wrote
a few days ago, I know Dar Williams
songs so well that I can detect a change at the consonant level.
But I only own one TMBG album (Flood) and know a few
other songs of theirs from radio play. But TMBG played many newer
songs and, I'm told, some things which were not yet released on
any album. It's really a lot more fun for me to know the songs in
detail than to hear them for the first time.
One song I did know, which isn't on Flood, is "Older".
It's available
for legal free download in Ogg
Vorbis format. (Do me a favor -- if you don't have an Ogg
player, go get one, and download "Older" to try it out. It will be
a good thing in the future that you have an Ogg player.) The band
interrupted "Older" in the middle with another song and then picked
up exactly where they'd left off. They liked doing things like
that. They love jokes and puns and, in a lot of senses, they're
extremely geeky.
Old favorites on Flood which did get played were
"Birdhouse in Your Soul" and "Istanbul" (hooray!). The nachos at
the Fillmore were pretty tasty (although they cost $10 for small
portions). Maybe it's a better tactic to eat dinner in some nearby
Japantown restaurants.
I had a great time dancing to "Istanbul", which is an upbeat song
with a tremendous inner geekiness to it. Maybe historical
consciousness is so rare that if you show historical consciousness
you are automatically geeky.
Wow, Gilmore
went through with it!
I listened to "Juniper" again, and I want to say that the lyric is
"in which skeleton ladies like skeletons go" rather than
"with skeleton ladies like skeletons go" (as previously reported).
Why is digital rights management in tension with fair use? Partly
because it threatens to freeze fair use in 1996 and kill off, in
advance, innovative new fair uses which were unknown in
the past.
Fred
von Lohmann explains. And here are some vivid observations:
Were it not for the fair use doctrine, each of the following
activities would be infringing:
- whistling a tune while walking down the street (public
performance)
- cutting out a New Yorker cartoon and posting it on your office
door (public display)
- photocopying a newspaper article for your files (reproduction)
- quoting a line from The Simpsons in an email to a coworker
- reverse engineering of computer code (reproduction)
- time-shifting" a radio or television program (reproduction)
- playing an excerpt of Roy Orbison's "Pretty Woman" in a copyright
law course (public performance)
- quoting from a novel in a review (reproduction)
(Those aren't really part of the argument, they're just nice
observations.)
I got a lot of exercise today as I rode my bike (with two flat tires!)
over Potrero Hill to see
Annalee, then back
over Potrero Hill to EFF, and subsequently off to see Katy. (Katy
used to live in the inner Sunset, so if I'd ever made a bike trip
to her old place, I could have ridden off into the Sunset.)
Annalee gave me a bunch of good books. These were review copies, so
in addition to cheering for Annalee,
we ought to cheer for
first
sale.
It turns out that
O Canada Girls
was recorded on a special limited-edition version of
The Green World. I don't like that; to me, part of
the point of an album (especially in the digital world) is that
you should be able to say something like
The MD5 value of The Green World is
e7cbedea5fea81b683a66f537976b08d.
and thereby have a unique identifier for the one true version
of that album. Having different things called "The Green World"
seems to sow confusion. (Note: the MD5 value above is not actually
the MD5 value of The Green World, but it is the MD5
value of "The Green World".)
But this clears up some confusion because people had told me that
"O Canada Girls" was "from The Green World" and it
didn't make any sense to me that they should say so.
Happy birthday to Zack. I had a nice time at his party, where lots
of people worked on artistic products and ate junk food. I also
had some pretty geeky conversations with some of the geekier
attendees.
A couple of days later, I cooked a really healthy, really good
meal for my family, as if to make up for the junk food. But I
don't think it works quite that way.
I also took a couple of trips around the city with my family; it's
been fun to have them out here.
It turns out that
Hollings
and Tauzin
have each sent a letter to Chairman Powell urging him to implement
the broadcast flag mandate by FCC rule, with no additional
legislation. This comes as something of a surprise to us.
I had my best-ever game of NetHack, and, as is usual in such cases,
died in an extremely silly way.
(17th level Valkyrie, red dragon scale mail, theoretical AC -18 if I
could have repaired my armor's damage, completed Sokoban and the
Quest, explored the Mines to the bottom, had +3 rustproof Mjollnir,
most immunities, bag of holding, rustproof Vorpal Blade, Gauntlets of
Power, 200-some hit points, extra constitution [up to 19, which
appeared to regenerate three HP per turn], luckstone, identified most
rings and scrolls, clairvoyance, polymorph and polymorph control, and
cleared the entire outer tier of Fort Ludios. My only major problem
was that I lost about 25 useful scrolls by falling into the moat at
Fort Ludios. But that wasn't what killed me. What killed me was
being eaten by a purple worm which was actually a chameleon I'd
been watching with my clairvoyance. I released the chameleon
from a small room using a wand of digging, the chameleon emerged in
the guise of a purple worm, and the worm ate me.)
I do want to preserve here for posterity some notes on the Sokoban
levels which appear in NetHack. They're pretty tough because there
is no undo, and you have to take the irreversible step of destroying
certain boulders. If you choose poorly, a given Sokoban level will
be unwinnable (although you might be able to salvage it with a
scroll of earth).
I've done it before by guessing correctly, but this time I decided
to be careful and think everything through beforehand. So here are
the boulders you ought to destroy in the first two levels (with "`"
replaced by "X").
---- -----------
--.@-------- |.........|
|..........| |.........|
|.`-----`-.| |.........|
|..|...|.X.| |....<....|
|.`.`....X-| |.........|
|.`..`..|..| |.........|
|.----`.--.| |.........|
|..`...`.|.-- |.........|
|.---`-...`.------------+|
|...|..`-.`.^^^^^^^^^^^^.|
|..X......----------------
-----..|..|
-------
and
--------------------
|........|...|.....|
|.``..-``|.-.|.....|
|..|.`.X.|``.|.....|
|-.|..-..|.-.|..<..|
|...--.......|.....|
|...|.X.-...-|.....|
|.`.|`.|...--|.....|
|-X.|..-----------+|
|..`....^^^^^^^^^^.|
|...|@>-------------
--------
This shows the final Sokoban level after it's been cleared out,
with the two boulders which should be destroyed (no others need
be):
--------------------------
|>.......................|
|.......----------------.|
-------.------ |.|
|@..........| |.|
|.....X.X...| |.|
--------.----| |.|
|............| |.|
|............| |.|
-----.-------- ------|.|
|..........| --|.....|.|
|..........| |.-.....|.|
|.........-- |-|.....|.|
-------.---- |.-.....-.|
|........| |-|.....|--
|........| |.-.....|
|...------ --|.....|
----- -------
Has anybody created some kind of notation which allows for
efficient descriptions of Sokoban problems, and especially
for efficient automated solutions? I have a feeling that
many Sokoban problems are actually formal logic problems,
but I have no idea how to begin constructing such an
isomorphism.
Speaking of puzzles, we have at home a 15 puzzle which is
actually an 8 puzzle which is actually a frog -- instead of
numbers on the moving squares, there are parts of the picture
of this frog. I found it extremely difficult to
solve, because I couldn't visualize where the pieces were
supposed to go. But at Zack's party, I took some pieces of
paper, wrote numbers on them, and taped each number onto the
proper part of the frog. Once I had the numbers available,
I was able to solve the puzzle in under 30 seconds. Perhaps
this shows that I don't have particularly good spatial
skills. After scrambling the frog again and removing the
numbers, I still had a tough time restoring the frog's order.
Transposition macros are a lot easier on the 8 puzzle than
on the 15 puzzle.
I had a couple of unsuccessful NetHack games.
Zack W.
points out that Sokoban levels can be solved without
breaking any boulders at all. This is more of a challenge than
simply solving these levels, and in most cases I hadn't even realized
it was possible.
Speaking of corrections,
Kragen points out
that e7cbedea5fea81b683a66f537976b08d is not actually the MD5
checksum of "The Green World". I added a newline character at the
end accidentally. (You need to say "echo -n" if you want to
suppress those.) The actual MD5 checksum of "The Green World" is
075408abd558e264ae8c5e42bf23b78b. It's impressive that somebody
caught this error