Many people seem to think that software is
non-physical---that unlike the computer keyboard and screen they can touch and
feel, the software that makes their computer do useful work has no physical
existence. This ghost-in-the-machine
view of software doesn’t square up with reality. Computing is a physical act
and software is the physical object that drives computers.
Software is stored in the memory of a computer as
collections of electrons: a certain number of electrons stored at a location represents
a 1 bit while a small number (or no) electrons represents a 0 bit. (Other
storage media represent bits in other ways---magnetic domains, pits in DVDs,
etc.---but the principle remains the same.) In a modern memory, only a few
hundred of these little tiny electrons are enough to store a 1 bit.
But tiny is not the same as non-existent. A little high school physics tells us that,
in fact, electrons do exist in the physical world. Wikipedia gives the mass of
an electron as 9.1 X 10^-39 kg. That’s pretty
darn small. But they do really exist. And we can sense the behavior of
electrons in many ways. For example, we
can steal cryptographic keys from smart cards and computers watching the flow
of electrical energy into the machine.
This technique, known as a power attack, figures out the 1s and 0s of
your security key simply by watching how much power the computer consumes at
different steps of the security process.
The physical nature of those little tiny bits has real and important implications.
And some of the effects of the physical nature of software
are accessible by a simple touch. Running software consumes electric power that
is transformed into heat by the computer, much as our bodies heat up as we
exercise. When your feel your laptop grow hot as you watch a movie, you feel
the physical effects of software. Can a ghost in the machine do that?