The elliptic curve used in the DRM is an elliptic curve over the
finite field
, where
In base 16 the number
![]() |
![]() |
|
![]() |
and the group
![]() |
![]() |
|
![]() |
Our heroes Nikita and Michael share digital music when they are not out fighting terrorists. When Nikita installed the DRM software on her computer, it generated a private key
which it hides in bits and pieces of files. In order for Nikita to play Juno Reactor's latest hit juno.wma, her web browser contacts a web site that sells music. After Nikita sends her credit card number, that web site allows Nikita to download a license file that allows her audio player to unlock and play juno.wma.
As we will see below, the license file was created using the ElGamal
public-key cryptosystem in the group
.
Nikita can now use her license file to unlock juno.wma.
However, when she shares both juno.wma and the license file with
Michael, he is frustrated because even with the license his computer
still does not play juno.wma. This is because Michael's computer
does not know Nikita's computer's private key (the integer
above),
so Michael's computer can not decrypt the license file.
We now describe the ElGamal cryptosystem, which lends itself well to
implementation in the group
. To illustrate ElGamal, we
describe how Nikita would set up an ElGamal cryptosystem that anyone
could use to encrypt messages for her. Nikita chooses a prime
, an
elliptic curve
over
, and a point
, and
publishes
,
, and
. She also chooses a random integer
,
which she keeps secret, and publishes
. Her public key is the
four-tuple
.
Suppose Michael wishes to encrypt a message for Nikita.
If the message is encoded as an element
,
Michael computes a random integer
and the
points
and
on
.
Then
is encrypted as the pair
. To decrypt the encrypted message,
Nikita multiplies
by her secret key
to find
, then subtracts this from
to obtain
Returning out our story,
Nikita's license file is an encrypted message to her.
It contains the pair of points
, where
![]() |
![]() |
|
![]() |
![]() |
![]() |
|
![]() |
into memory and computes
![]() |
![]() |
|
![]() |
![]() |
![]() |
|
![]() |
The
-coordinate
is the
key that unlocks juno.wma.
If Nikita knew the private key
that her computer generated, she
could compute
herself and unlock juno.wma and share her
music with Michael. Beale Screamer found a weakness in the
implementation of this system that allows Nikita to detetermine
,
which is not a huge surprise since
is stored on her computer after
all.
William 2007-06-01