-
33C3 preroll music
-
Herald: So… coming over to our next talk.
-
Tonight, if you switch off
your DECT phone, and
-
if you’re full of different impressions
-
– full of different impressions of this
day you maybe want to watch TV.
-
But it would be cool to have pay-TV
– unencrypted pay-TV.
-
So Chris Gerlinsky asks himself the same.
And how to achieve unencrypted pay-TV
-
– but the Hacker way. So Chris
reverse-engineered nothing less
-
than the signal and the encryption for
a standard that remains unencrypted
-
since the late 90s. Please welcome with an
Anniversary Edition applause Chris Gerlinsky!
-
applause
-
Chris Gerlinsky: Hello everyone.
My name is Chris Gerlinsky.
-
I am a hacker from Canada and I’m here
today to talk about how I cracked
-
digital cable and satellite TV security.
I studied an Access Control Platform (ACP)
-
that’s widely used across Canada and the
USA. It’s one of the two common platforms
-
that’s used in cable TV,
and it’s also used in satellite TV
-
by one of the two Canadian satellite TV
operators. As far as I know the system
-
has remained secure since it was
introduced in the 1990s and I was curious
-
if I could understand the system based on
the older set-top-boxes. Some of them
-
are 15 years old – and they are still in
use. So these devices haven’t received
-
upgraded security hardware in that time and
I started looking at how the system works.
-
Before I get into the reverse engineering
I’ll start with a brief description of how
-
digital television is sent over satellite
or cable. Satellite and cable digital TV
-
are pretty similar for the most part. There
are a variety of signal modulations used.
-
The relevant ones here are QPSK at about
27 MBit/s and 8PSK Turbo FEC at about
-
38 MBit/s for satellite and QAM256 at about
38 MBit/s for cable. There is also an
-
out-of-band channel used by cable
which is QPSK modulated at 2 MBit/s.
-
This out-of-band channel carries the
subscription-management, program guide
-
information, firmware upgrades, etc. And
while you change channels and the cable
-
box tunes to different frequencies this
out-of-band channel remains tuned
-
so that the box continuously receives the
state, and no matter what TV channel you’re
-
tuned to. In the satellite TV this type of
data is included within the main transport
-
stream (TS) instead of in a secondary
out-of-band TS. The video is sent
-
as MPEG2 or H.264 TS. This is a standard
format for carrying video streams.
-
So it can be played by any hardware video
decoder or software decoder, e.g. VLC.
-
And the encryption system used here is
called DigiCipher 2 (DC2), which does not
-
follow the DVB standards that are used
in the rest of the world. The MPEG-TS
-
is made out of packets of 188 bytes.
Each packet has a PID. This is used
-
to differentiate different types of data.
PIDs range from 0 - 0x1FFF.
-
Each PID carries an MPEG Packetized
Elementary Stream (PES).
-
That’s a video or audio stream.
Or the PID may carry one or more
-
Service Information Tables. The Service
Information Tables have an 8-bit table ID
-
and a length of up to 1024 bytes
including a CRC32 for error detection
-
and this table ID identifies the type of
data that you can expect within the table.
-
Table 0 is the Program Association Table,
containing a list of programs carried
-
in this TS and the PMT PID for each
program. The Program Association Table
-
is always on PID 0. Table 2 is the Program
Map Table which contains the list of PES
-
and the PID for each as well as an ECM
PID. There is Program Map Table
-
for each MPEG program or TV channel
that’s found in the stream.
-
The ECM PID is where ‘Entitlement Control
Messages’ are sent containing information
-
that’s used to generate the key that
decrypts the Packetized Elementary
-
Streams. This system uses two types of
ECM. Table 40 I call ECM40, and Table 41
-
I call ECM41. On PID1 there may be
one or more conditional access tables,
-
table ID No.1. These tables identify a PID
that carries EMMs, ‘Entitlement Management
-
Messages’. These messages are used to set
access rates for individual set-top-boxes.
-
The subscription information, like, what
channels are available is carried inside
-
of EMMs. This is a hardware interface to
receive satellite data, a Genpix SkyWalker-1.
-
The DC2 QPSK modulation isn’t widely
supported in USB or PCI DVB-S devices.
-
And the 8PSK Turbo FEC modulation support
is even less common. And one of the devices
-
that does support these signals is this
Genpix device which is using a Broadcom
-
BCM4500 demodulator. And it supports both
the DC2-QPSK and the 8PSK modulations.
-
It works well, the Linux drivers need to
be re-compiled to include the support
-
for these modes, and patches for this were
published by updatelee. There’s a link
-
on the slide. For cable there’s a variety
of adapters supporting QAM256 de-modulation.
-
I used a USB HVR 950Q tuner. Unfortunately,
to tune the out-of-band channel is generally
-
not supported by the off-the-shelf
interfaces. Inside the cable box
-
it’s handled within the integrated chip
set. And for the ClearQAM consumer
-
devices such as USB interfaces access to
the out-of-band data isn’t actually required
-
so they don’t include it inside of the
hardware. This out-of-band data is used
-
only for pay-TV services.
-
With the satellite and cable interfaces
DVBsnoop can be used to view a lot of
-
information about the transport stream.
It’s enough information to be
-
quite overwhelming. So the trick to using
it is being able to sift through the output
-
for the relevant information. DVBsnoop
also doesn’t recognize all of the
-
DigiCipher 2 tables because it’s a non-
standard system, and DVBsnoop is targeted
-
towards the standard systems. So DVBsnoop
may not be able to tell you everything
-
about the transport stream but it was
still a very useful tool for all the
-
information that it can provide.
-
DVBsnoop and most other tools and
documentation are designed for the DVB
-
standard or other recognized standards
such as ATSC. DigiCipher cable
-
and satellite systems use a lot of
non-standard tables to carry
-
the system information. For cable TV some
of these tables are standardized by
-
the document SCTE 65.
There is no BAT or SDT
-
as you’d expect in DVB. Instead there
is a virtual channel table that maps
-
the transport streams and programs the
channel numbers. The electronic program
-
guide is also not DVB standard. So you
don’t even get the current and next
-
program information in any
kind of a standard format.
-
Another cable TV adapter is the HDHomeRun
Prime. This one is a network-connected
-
three-tuner device with cable card
support. The set-top-boxes I studied
-
pre-date the cable cards. Although the
newer boxes do use the cable cards,
-
and they support the DigiCipher 2.
But cable card support does also mean
-
that this HDHomeRun Prime includes the
tuner and QPSK demodulator for the
-
out-of-band channel. So it is able to pass
this data to the cable card, as necessary.
-
However, even the HDHomeRun doesn’t
make this out-of-band data available
-
other than the cable card interface. So
to access the demodulated out-of-band data
-
I tapped in to the HDHomeRun Prime with
a cable card inserted, and connected
-
a logic analyzer to the Data and Clock
signals. I wrote software using the
-
Saleae SDK to capture the QPSK demodulated
data. Then, in software, I performed
-
de-interleaving, de-randomization,
and the forward error correction.
-
And the output is an MPEG transport
stream. So using an HDHomeRun Prime
-
connected to the logic analyzer, connected
to the PC running the software
-
the output finally is a 2Mbit/s transport
stream. And this transport stream
-
looks like a standard transport stream,
and inside are the conditional access
-
management messages, program guide
information etc. Everything that was
-
missing from the main
QAM transport stream.
-
Two bits in each packet will indicate if
the packet is scrambled with the even key,
-
odd key, or not scrambled at all.
The key is changed at short intervals.
-
DVB systems typically will change every
5 .. 30 seconds. DC2 every 133 ms
-
or 1 second. The key used for decryption
alternates between even and odd.
-
The odd key is in use while the even key
is updated; and then the even key is
-
in use while the odd key is updated.
An encrypted transport stream is sent
-
via the cable or satellite, and it’s passed
through the descrambler in the ACP.
-
And the result is a decrypted transport
stream that is played by the MPEG decoder.
-
The descrambler uses a Working Key.
This is a 56-bit DES key that changes
-
every 133ms, or in some cases they have it
slowed down to changing every 1 second.
-
This Working Key is generated by
encrypting the frame count from ECM40
-
packets with the Program Key. The Program
Key, again DES, comes from the ECM41
-
message, and is encrypted with the
Category Key. The Program Key
-
is unique to each channel, and it changes
daily or for every pay-per-view event.
-
The Category Key, also DES, is shared
by all the set-top-boxes that authorize
-
for any channel from this provider. The
Category Key is sent to each set-top-box,
-
individually, inside the EMM95 message.
And this Category Key typically changes
-
monthly, but many cable operators change
keys much less frequently. Some of them
-
are using the same key for years at
a time. To decrypt the EMM, in order
-
to get the Category Key Seed Keys are
used. Each set-top-box has a set of
-
56 bit DES Seed Keys inside of
battery-backed RAM. These are
-
initialized during manufacturing. For the
lifetime of the set-top-box these keys
-
are used to secure EMMs. So this
forms a chain from the Seed Keys,
-
initialized during manufacturing and never
changing, to the decryption of the MPEG
-
transport stream.
-
Inside the satellite
set-top-box we can see the main
-
components of the system. The signal
enters the tuner and is passed
-
through the demodulator which
outputs a serial transport stream.
-
This transport stream passes through
the ACP – Access Control Processor –
-
and is then sent to the MPEG decoder
to output a video signal to the TV.
-
A 68k microcontroller acts as the set-top
box main controller. It communicates
-
with the MPEG decoder as well as
with the ACP via an SPI bus.
-
A battery provides backup power to the
ACP. So it will retain RAM contents
-
even when the set-top-box is unplugged.
There’s a TVpass slot near the power
-
supply. This is an upgrade slot with
a card edge connector to allow
-
for security upgrades. The system
-
stayed secure, so the TVpass slot was
never used. And the newer set-top-boxes
-
don’t actually include a TVpass slot
inside. So at this point it seems
-
quite unlikely that this TVpass card
will ever actually be used.
-
Inside the cable set-top-box… it’s
very similar to a satellite set-top-box
-
but the cable boxes tend to be more
tightly integrated. The signal enters
-
the tuner and passes through a Broadcom
chip that handles demodulation.
-
And the same chip will also handle MPEG
decoding after the transport stream’s been
-
decrypted by the ACP. A 68k microcontroller
acts as the set-top-box’s main controller.
-
Again, talking to the ACP via SPI.
And a battery provides backup power
-
to the ACP, and also to the non-volatile
RAM used by the main controller.
-
A TVpass slot is underneath the main
board, it’s not visible in this photo.
-
The cable set-top-boxes include a second
tuner that’s used to receive
-
the out-of-band data. This OOB tuner
operates independently of the main tuner
-
and on a separate frequency range. And
it’s used to provide a transport stream
-
containing the system information, with
the program guide, firmware updates,
-
EMMs etc.
-
Here we see the ACP chip. It’s a 100-pin
TQFP package. From the markings
-
we can see it’s a custom System-On-Chip
made for General Instrument Corp. (GIC).
-
All the decryption is performed by the
ACP, and all decryption keys are kept
-
only within this chip. The newer set-top-
boxes use newer versions of the ACP.
-
I studied the original ACP chip
that’s seen in this photo.
-
As long as the set-top-boxes using this
chip are actively used it remains
-
a relevant target. Whether the newer ACPs
include more advanced security features
-
or if they exist only for cost-savings
due to shrinking the die size
-
I don’t really know.
-
Some of the interesting pins on the ACP
are labeled here. Pin 1 is marked
-
at the top left corner of the chip.
There’s an SPI slave controller
-
on Pins 1 - 5, used for communication
with the set-top-box main controller.
-
There’s a battery backup pin that’s
connected to a 3V battery to keep
-
the RAM contents of the ACP intact
at all times. There’s a serial transport
-
stream input on pins 88 - 92 which
receives the data from the demodulator.
-
And there’s a serial transport stream
output on pins 28 - 33 which sends
-
the decrypted transport stream to the
MPEG decoder to be output to the TV.
-
At one point I had written software for
an AVR32 device, not the one that’s
-
shown here, that has a synchronous serial
peripheral, that supports sending and
-
receiving data at the 27 MBit/s rate of the
transport stream. My AVR32 implementation
-
turned out a bit ugly. But rather than
cleaning up I was able to use it as it was.
-
It had some limitations like only accepting
64kB of data for replay logging.
-
Which was just barely good enough for my
studies. What the transport stream
-
logging in-circuit digital mean was
-
that the transport stream passes through
the ACP with selected PIDs being decrypted.
-
And then the output is the full transport
stream but a selected program has been
-
decrypted. The AVR32 logging interface
had rather limited use for me.
-
Later on when I did more thorough research
I did so using an ACP that I’d removed from
-
the box and I put on a breakout board.
And then I could control the clock, and
-
at that point it was much easier to use an
XMEGA AVR platform to send and receive
-
the transport stream through the ACP
at a much slower bit rate. Shown here
-
is the XMEGA platform I settled on using
-
for SPI and also the transport stream
interfacing. To honor the data
-
passed between the set-top-box main
controller and the ACP on the SPI bus
-
I used the XMEGA development board. Two
SPI ports acted as slave with Master Out -
-
Slave In (MOSI) signal connected to 1 and
Master In - Slave Out (MISO) signal
-
connected to the Master Out - Slave In
input of the second port. So from one port
-
Bytes sent by the set-top-box
controller are received.
-
From the other port it receives
-
bytes from the ACP. In case I want to talk
directly to the ACP or the set-top-box
-
main controller it’s only necessary to
connect both the MOSI and MISO signals
-
on one of the SPI interfaces. By holding
the main controller in Reset my XMEGA
-
was able to act as the SPI Master and then
talk to the ACP. So this setup works for
-
passively monitoring the SPI communications
in the set-top-box and can also act as
-
the SPI Master for interrogating the chip
directly.
-
By logging the SPI bus between
-
the main controller and the ACP we see
that information about the current access
-
levels are sent from the ACP. The ACP
also receives EMMs via the SPI bus.
-
EMMs have been filtered by the Unit Address
number, or the set-top-box serial number.
-
So the ACP only receives messages
that are intended for that specific unit.
-
Command 04 includes the current Category
Key epochs and Keyselects in use.
-
Command 05 includes the Unit Address
number. Command 13 returns the authorized
-
Subscription tiers for this unit. Commands 7
and 87 provide information about the channel
-
being currently decrypted. Additionally,
via the SPI interface the set-top-box
-
main controller tells the ACP which PIDs
to decrypt and which is the ECM PID.
-
The ACP doesn’t send any keys on the bus,
and it only receives Category Keys that
-
are encrypted within EMMs via the SPI.
So all of the really interesting data is
-
contained within the ACP chip itself, and
it’s never sent out on any kind of a bus.
-
So next I started an invasive study of the
chip – studying it under a microscope.
-
And the cost of microscopes can range from
hundreds of Dollars to tens of thousands
-
of Dollars, or even higher for things like
electron microscopes or other specialized
-
equipment. I have a couple of microscopes
that I use. This one is a Mitutoyo FS70
-
microscope. These Mitutoyo are often used
for microprobing, but you can also use it
-
for other uses. For this project I didn’t
do any microprobing but I used this
-
microscope because it was what I had. For
studying this kind of technology you could
-
use even more basic equipment but,
of course, if you have the higher-end
-
equipment it’s a lot nicer to work with.
-
Another microscope I use is the Zeiss
Axiotron. This microscope is designed
-
for inspecting wafers and has really good
optical quality. I said that more basic
-
equipment could be used and it’s true.
But when you get into this kind of thing
-
you might find yourself again and again
investing in more equipment.
-
I've owed $10.000 in this setup including
the microscope and the camera and the
-
scanning stage and other parts. To look at
the chip under the microscope requires
-
that the chip is de-capsulated.
Fuming Nitric Acid is used for this.
-
The chip is immersed in heated red Fuming
Nitric Acid which reacts with the plastic
-
packaging and removes it. The chip is then
rinsed in acetone, and cleaned with
-
isopropyl alcohol in an ultrasonic bath
which leaves the die bare and clean.
-
The Nitric Acid is quite aggressive,
and it’s important to handle it carefully.
-
But the process is really straight-forward.
Most people probably wouldn’t want
-
to do this in their home.
-
So you should go out to the garage
and use your fume hood there.
-
After the decapsulation the bare
chips are left with bonding wires attached
-
to them. So these wires will be plucked
off using tweezers to get them
-
out of the way. Already in this photo we
can see some of the larger structures
-
on the chip. Half of it is covered with
a metal plane, and the other half
-
shows some kind of visible circuitry.
-
This is an image of the chip under the
microscope. It’s been stitched together
-
from several smaller images,
to give an overview of the chip.
-
Looking at the decapsulated chip we see
the bond pads around the outside,
-
a metal plane covering the top part of the
chip and wires on the bottom of the chip,
-
the spaghetti logic running all ov er the
place. With a couple of structures
-
that look like they could be a type of
memory. There’s a lot still hidden
-
from us. To see more of the chip
it will be necessary to delayer it.
-
To delayer the chip I used hydrofluoric acid
to perform a wet etch. I used the Whink
-
Rust Stain Remover product. It’s available
in hardware stores all over the USA.
-
It’s a dilute HF solution that works
really well for delayering ICs.
-
I put a small amount of the Whink liquid in
a beaker and heated it on the hot plate.
-
Then I dropped the decapsulated die in.
Using a pipette I agitated the liquid
-
to disturb the bubbles that form on the
surface of the chip. So the acid can
-
actually chip more evenly. The etching
result isn’t perfect. Some parts of the chip
-
will be etched deeper than other parts.
But I’ve gotten quite useful results using
-
this technique. You really don’t wanna
breathe in these fumes, so do this
-
in a fume hood in your garage, also.
-
After a short time immersed in the heated
Whink solution the chip was rinsed and
-
put back under the microscope.
Now the top metal plane has been removed
-
so we can see what’s below. There are
some visual effects that we start to see
-
in the photo from the etching being
a little bit uneven. But overall
-
the delayered chip looks quite good and
able to start studying it. At the top left
-
the tall rectangles are RAM. The four
blocks at the top right are ROM.
-
And then there’s logic that tie
these into the logic area below.
-
I was interested in finding how the bits
were encoded in ROM. So I continued
-
delayering the chip. This was another dip
in the Whink – and another metal layer
-
has been removed. Bits in the ROM
were not visible yet so I continued
-
the delayering process. At this point
we’re starting to see more of the visual
-
effects from the uneven etching but
it’s still not too bad. After a third dip
-
in the Whink more metal has been removed.
At this point the delayering is becoming
-
more and more uneven. We can see the
ROM blocks have been half-etched
-
to a lower layer while half of the upper
layer is still remaining. The wet etching
-
process can be quite difficult to perform
completely consistently without adding
-
additional steps such as polishing. And
at the time I did this project I didn’t have
-
the polisher available so I was relying
only on the wet etch. Some of the areas
-
of the ROM are now showing visible bits.
The other areas haven’t been etched
-
deeply enough. So I continued to etch
further to try and get a clean ROM.
-
We can see the ROM bits quite clearly now.
They’re arranged in rows and columns, and
-
in this image if a black dot is visible
that indicates that the bit is a One.
-
Image quality is important. The better the
photographs the more consistently the bits
-
will be visible. But it doesn’t have to be
really perfect. You can do some image
-
processing on it, you can even repeat the
process on multiple chips, delayer them
-
and photograph them, and at some point
you’ll be able to have the entire ROM
-
clean and consistently visible. With the
visible bits exposed and photographs taken
-
the bits can be extracted using a software
image analysis tool. Or the bits could be
-
extracted manually. The ROM here is 32 kB
or over 260.000 bits. So manual extraction
-
would be a bit labor-intensive but it
isn’t impossible. A software tool is
-
more efficient. So I wrote some software
to analyze the images and identify
-
the 1 and 0 bits. There are bits marked
with a yellow box for 0 bits or a blue box
-
for 1 bits. I use a software to analyze
the image and then I can quickly review
-
the results manually, and identify any
errors that I can see. After extracting
-
the bits from the photographs I have
a binary version of the ROM data.
-
This is a visual representation of the
bits extracted from this piece of ROM.
-
Little black boxes signify 1 bits,
and the white boxes signify 0 bits.
-
In this image I’ve overlayed the extracted
bottom 13 rows of bits over the photograph.
-
You can see some visual patterns inside
this, also. And these visual patterns
-
are a good indicator that this ROM
is probably not scrambled.
-
This image shows the end of the ROM where
you can see a pattern covering most of
-
the image due to a repeated pattern of
filler bytes that occupy unused space
-
at the end of the ROM. At the very end of
ROM the pattern is interrupted. This is
-
where the vectors table exists at the top
end of memory indicating the reset address
-
and the addresses of interrupt handlers.
The ROM has unused space, the filler bytes
-
at the end. And the vectors table
address is 0xFFF6 through 0xFFFF.
-
After extracting the bits and decoding them
into bytes the hex dump can be studied.
-
There is a “Copyright 1997 CHCC” ASCII
string in ROM which is helpful to identify
-
when the ROM has been decoded correctly.
laughter
-
If you can read the ASCII text then
surely the bits are in the correct order.
-
The decoding in this case was just a matter
of organizing the bits into bytes, it’s quite
-
straightforward, there was no scrambling
or anything else that was complex.
-
With the ROM contents extracted the
software can be disassembled and analyzed.
-
The first step was to identify the CPU
architecture. Studying the binary dump
-
it appeared to be an 8-bit CPU
but wasn’t 8051 or 6805
-
or any of the processor types I tried
first. Eventually, I tried disassembling
-
it 6502 and the code made sense. Later
I had remembered that I had looked at
-
a previous version of the Access
Controller from the same manufacturer.
-
Which was used in another system,
VideoCipher 2+, an ancestor of DigiCipher.
-
On the older chip was a Copyright notice
from WDC who licenses the 6502 core IP.
-
It was visible directly on the chip die
under the microscope.
-
So this would have been a great clue
for the CPU architecture if I had actually
-
noticed it earlier. For disassembly I used
IDA. It supports 6502 and is of course
-
a very powerful disassembler. In addition
to disassembly I used 6502 simulation
-
software to study the software in
a virtual CPU. The simulation is really
-
helpful when disassembling the software.
It provides a lot of insight into what’s
-
going on. Since 6502 is a very well-known
architecture it was not at all difficult
-
to find an existing simulator. Even free,
with source code. The 6502 is used
-
in 8-bit computers, like the Apple II,
in Commodore 64. So there’s really
-
a lot of enthusiasts and a great deal of
information about this architecture.
-
As I gained understanding of the System
On Chip through disassembling the software
-
I began adding some other features into
the simulator to emulate some of the
-
hardware peripherals that were found
inside the ACP, the device itself.
-
One of the first things I saw in the
disassembly was that there are two
-
operating modes. During startup values
in RAM are checked. And if the ACP
-
hasn’t been initialized it enters
a personalization mode used during
-
manufacturing to assign the Unit Address
and Seed keys. In normal conditions,
-
after the set-top-box has left the
factory this personalization software
-
is bypassed and the ACP will always run
its main application. The next thing
-
I found was the application wasn’t very
simple. This 6502 actually runs
-
a task switching operating system. Eight
tasks are run supporting decryption
-
of up to two channels at the same time.
There are two tasks to handle processing
-
of ECM40 messages and generation of the
Working Keys used to decrypt the transport
-
stream. And two tasks to handle processing
of ECM41 messages to generate
-
the Program Keys that are used to process
the ECM40. One task for handling
-
EMM processing. And there’s also a task to
communicate with the TVpass interface
-
for security upgrades. With another task
to handle the messages that are coming in
-
over the SPI interface. Since the ACP
is a custom System On Chip
-
there is no documentation available
describing the hardware capabilities.
-
So the disassembly was studied and the
input/output registers had to be guessed
-
based on the software usage. There’s an
SPI slave peripheral for communication
-
with the main controller. The SPI
peripheral sends and receives data
-
directly to RAM. And then a signal is set
indicating that the transport has been
-
completed. There’s a DES crypto peripheral;
-
key, data and operating mode are set in
registers. And when the decryption
-
has been completed the result can be
read from additional registers. There’s
-
a transport stream descrambler. The Working
Key is set in hardware registers.
-
And the descrambler will then output the
decrypted transport stream on the serial
-
transport stream interface. There are PID
filters set by the set-top-box main
-
controller over the SPI bus. These filters
select which video and audio streams
-
to descramble and which ECM packets should
be received by the ACP. The received ECMs
-
are placed in RAM, and the 6502 is notified
of a new ECM via a register bit.
-
So at this point I’m starting to get an
idea of how the system works.
-
I have studied the MPEG transport stream
and logged ECM and EMM data.
-
I’ve logged the SPI bus, and understand
messages between the set-top-box
-
main controller and the ACP. I was able to
extract the entire ROM contents optically.
-
And I’ve disassembled the software and run
it in simulation. There are some keys
-
that are found in ROM. Fixed keys which
never change and are used when a channel
-
has a “free preview weekend” or something
of the sort. Any set-top-box that has ever
-
had any kind of authorization in the past
is allowed to decrypt channels that are
-
encrypted using the “fixed key” mode. So
now the focus is on understanding the ECM
-
and EMM algorithms within the ROM
software. At this point I’m still missing
-
some important information from the ACP.
All the Seed Keys, Category Keys and
-
Program Keys exist only within RAM.
So to decrypt any of the channels
-
not in free preview isn’t possible yet at
this point. The ECM40 message
-
is used to generate the Working Key, used
to descramble the MPEG streams.
-
There’s a Service ID, used to identify
each channel, and a frame count
-
that’s used with the Program Key
to calculate the Working Key.
-
The crypt mode identifies if the channels
are operating unencrypted, with a fixed
-
key, or with the normal secure keys
which are typically used.
-
The frame count is simply a 24 bit counter
that increments each time the Working Key
-
changes. There’s a byte I’ve labeled
‘Hardware’ that has one bit set in it.
-
This selects a special decryption mode
that I’ll come back to a little bit later.
-
The ECM41 contains encrypted Program Key
that’s needed to correctly decrypt the ECM40.
-
There’s a Provider ID that indicates which
TV operator subscribers this ECM should
-
be processed by. And there’s the same
Service ID that will be found within
-
the ECM40 messages. The Category epoch
identifies which Category Key is in use.
-
There’s also information about how long
this Program Key will be valid for.
-
ECM41 contains one or more subscription
tiers that must be found within
-
the customer’s ACP to allow this message
to be processed. The subscription tiers
-
are written to the ACP when the EMM
containing authorization details is received.
-
There is, again, a hardware crypto select
byte that I will get back to.
-
This slide shows what a half of a second
of ECM40 and ECM41 activity might
-
look like. To be able to descramble the
program the ACP must process a current
-
ECM41 to get the Program Key and then
process an ECM40 to get the Working Key.
-
The Working Key is then used by the
descrambler to decrypt MPEG stream.
-
Until the ACP receives the ECM41 with the
current key as well as an ECM40 with
-
the frame count it’s not yet possible
to decrypt the transport stream.
-
The Working Keys have a short life time,
only 133 ms. The series of ECMs shown here
-
all would happen within a period of a half
of a second.
-
The EMMs are split into
-
four parts. Each part contains a portion
of the subscription information for this
-
set-top-box. A Category Key is calculated
from each of the four parts and the key
-
that is calculated for each part has to
match the others, or the EMM will be
-
rejected, and all authorization in Category
Key will be wiped from this ACP.
-
When the first EMM, part Zero, is received
the authorization data inside the ACP
-
is reset and will be replaced with
authorization data from the EMM.
-
When the next part, part One, is received
the existing authorization data within
-
the ACP from part Zero is hashed along
with the data in part One. If the result
-
is correct then the authorization from
part One is copied into the ACP
-
alongside the existing data from part
Zero. If the result is incorrect then
-
the ACP’s authorization is erased. In this
way the four EMM messages are linked
-
together, and if anything is modified
within any of the EMM messages
-
the authorization will fail.
-
This is an example of an EMM. Each of the
four EMM parts contains some common
-
information, like the Unit Address, and
which Category epoch this EMM contains
-
information for. The EMM can contain two
Category Keys. One for the current epoch
-
and also for the next so that when there’s
the change of the Category Key the ACP
-
already has the next key available.
To decrypt the Category Key from the EMM
-
the Seed Keys contained in the ACP are
used. The Seed Keys are unique to each ACP
-
and are assigned during manufacturing.
EMMs are transmitted out-of-band
-
for cable systems but they’re passed to
the ACP in the same way as for satellite
-
systems. So at the ACP level, there’s no
difference between the satellite and
-
the cable systems.
-
At this point it should be possible to
decrypt channels that are using
-
a fixed-key mode. Analysis of the ROM
has shown the algorithms used to process
-
the ECMs and generate the Working Key.
-
The fixed keys are known because they’re
contained in ROM. There could have been
-
some question about the possibility of
bit errors from the optical ROM extraction
-
process. But the fixed keys can be
confirmed as correct because the ROM
-
software performs a checksum of this
256 byte area that contains the keys.
-
Successfully running the checksum on
the extracted ROM data indicates that
-
the extracted keys seem to be correct.
But when I attempted to decrypt
-
a fixed-key channel there was
a problem, it did not work.
-
Whether it was a bug in my decryption
implementation or something else
-
was unclear. However, I had noticed the
bit in ECM40 was set that causes a bit
-
within the ACP hardware peripherals to be
set. The purpose of the bit was unclear.
-
But its address was suspiciously close to
the transport stream descrambler key.
-
So I started to suspect that there might
be some encryption other than just
-
standard DES.
-
To be able to learn more about the ACP
I started to look at glitchers.
-
If I can succeed to glitch the chip I may
be able to find a way to read and even
-
write memory. And possibly a way to run
my own software directly on the chip.
-
This will allow me to control the hardware
peripherals and be able to observe
-
the chip’s operation under different
conditions. Timing tests of the ACP
-
suggest that the 6502 is running from an
internal clock source. So this will allow
-
a clock glitch attack. A VCC glitch makes
sense, and with the age of this chip
-
it seemed reasonable to expect that it
would be susceptible to VCC glitches.
-
The stronger protections against this
type of attack are relatively recent.
-
My glitcher design is quite simple. It’s
based on an XMEGA development board
-
and breadboard. I use the XMEGA to
communicate with the ACP over SPI
-
and to control the glitch. A 74xx series
4053 analog switch is used to quickly
-
switch the ACP VCC between two voltages,
a normal operating voltage, and a lower
-
glitch voltage. I use a bench top DC power
supply and two outputs so I can easily
-
adjust both the normal VCC and glitch VCC
levels. Other parts on the breadboard
-
are an oscillator to provide some clock
inputs necessary for the ACP to operate
-
and an inverter and NAND gate to cut out
the clock during the time of the glitch.
-
To simplify the test setup as much as
possible the ACP was removed from
-
the set-top-box and soldered to
a break-out board. In this process
-
the battery-backed RAM was disconnected
and all the keys were lost.
-
But for the purpose of developing a
working glitch this was okay. The simple,
-
breadboard-based glitcher is quite
flexible. The breadboard can be modified
-
to test different ideas, and reconfigured
quickly. More complex and advanced
-
glitcher wasn’t necessary.
-
To test the glitcher, to find out if it
will work and what voltage levels
-
are successful we can send a command
to the ACP, then glitch, and then see
-
the response from the ACP. The general
strategy is to lower the voltage just
-
to the point where the chip sometimes
resets due to the glitch.
-
By adjusting voltage levels and glitch
length and timing when the glitch will end
-
I succeeded to cause ACP responses to be
altered. The checksum on SPI packets
-
is very convenient. When unusual data is
received from the ACP chip with a valid
-
checksum it’s a pretty good sign that the
glitch caused a temporary fault within
-
the CPU, but their normal operation was
resumed. Depending when the glitch
-
is delivered different effects are seen.
We can see that generally, as the glitches
-
moved later, it’s the later bytes of the
response packets that change.
-
So at this point it looks like the glitcher
works, and is able to cause a pretty fault.
-
Since I had an effectve glitch I took
the circuit from the breadboard
-
and etched a simple PCB that I could plug
directly on the XMEGA development board.
-
This performs exactly the same function
as the breadboard glitcher but
-
I’m a bit less likely to accidently unplug
a wire from the breadboard and
-
have to repair things. The circuit was
simple enough that I could create
-
a one-sided PCB, so it was very easy
for myself to etch at home.
-
Now my goal is to have the ACP execute
the code of my choice. Because the 6502
-
is a von-Neumann architecture all code and
data memories share the same address space.
-
From software disassembly I saw that there
didn't appear to be any paging or MMU
-
features. The software in ROM is fully
self-contained. There is no EEPROM
-
and RAM is never used to hold executable
code. So there aren’t jumps into
-
these areas to exploit and, in fact, it
wasn’t clear if there’s anything preventing
-
code execution outside of ROM. I decided to
take a chance and test if RAM is executable.
-
So I sent a message via SPI, knowing that
this message will be stored in RAM.
-
The message contained 6502 executable code
that will copy itself to an unused area
-
of RAM, execute from this area and send
an ACK indicating it was successful.
-
Because I studied the use of the SPI
interface and the ROM code I’m able
-
to create this executable payload that
will continue to receive commands via SPI
-
after it’s taken control over the ACP.
-
To try to maximize chances of success
I looked through the ROM code for
-
multi-byte instructions, which, if broken
up, would have contained within them
-
a jump op code with a destination that
should lead to where my executable
-
payload was placed at RAM. Since the ACP
has a single address space this gives
-
a lot of opportunities for glitching to
cause execution to reach the payload.
-
There are multiple scenarios possible in
addition to my selected glitch target.
-
Stack corruption is a possibility, and
really any abnormal program flow has
-
some possibility that it could eventually
land in my code. The von-Neumann
-
architecture, without strong memory
management, is a very fertile ground
-
for glitching. Anything in RAM
potentially could be executed.
-
So at this point there are several
uncertainties, but so far nothing
-
totally rules out the possibility of
success. The ACP operates from
-
an internal clock source. And the
interrupt-driven task switching
-
does add some further timing uncertainty.
So I’ll send the code payload,
-
delay, then glitch, and see the result.
When it’s unsuccessful I change
-
the delay and I try again.
I tried to aim for the instruction
-
that I’ve identified as possibly
corruptible into a jump.
-
But there are a lot of unknowns, so,
really, the processor is like fishing:
-
throw the line and hope. I have
a target but no way to know if I can
-
hit it, or if it will have
the expected result.
-
But sometimes fishing is good.
Relatively quickly the ACP returns
-
an ACK indicating a successful glitch. The
first successful glitch took some hours
-
to find. And then, after this it was
possible to make it work repeatedly
-
in a matter of minutes or even seconds.
So now I have my code executing
-
in RAM, I’m able to send the ACP
additional pieces of code to be executed.
-
This allows me to read any memory address,
write any memory address, and perform
-
any other operations
possible with the 6502.
-
I wrote a simple application to perform
glitch surges, and then to interact
-
with the code payload backdoor installed
in RAM. And this program allows me
-
to enter an address and length and have
data returned. Or write memory etc.
-
There’s also support for setting the key
and data, and performing DES encrypt
-
or decrypt using the DES hardware that’s
inside the ACP. A few things I noticed
-
at this point: there’s a 2 kB area of ROM
that, if I attempted to read it, caused
-
the chip to reset. This area of ROM
contains the personalization routines
-
that are never normally used
after the device leaves the factory.
-
There’s also protection against modifying
the Seed Keys in RAM. Trying to store
-
a value in these memory locations
appeared to do nothing.
-
There are specific addresses within RAM
that can’t be read or the chip will lock up.
-
These are clever traps put in place
as a security measure. The 7-byte
-
56 bit keys stored in RAM stride all these
dead addresses. So a potential exploit
-
that could cause a linear dump of memory
will be stopped before a complete key
-
is ever read. When the chip is reset it
means having to glitch it again, because
-
my code payload exists only in RAM, and
there is no way to hook in a permanent
-
backdoor.
-
Since we can execute code on the ACP the
receiver responds, we can read the ROM
-
to have its contents without any of the
errors that were introduced during
-
the optical extraction process. Comparing
the results of the optical ROM extraction
-
with the proper dump we can see how many
errors were in the optical extraction.
-
Overall the optical extraction was quite
good. It was, after all, good enough
-
to understand the software and get us to
this point. There is only one byte with
-
more than a single incorrectly flipped
bit. Many of the errors that existed
-
were quite obvious from disassembling the
software. If an instruction is out of place
-
but flipping a single bit would make it
sensible then it was probably a bit error.
-
I didn’t keep detailed records but I think
I probably caught about half of the ROM
-
errors during the disassembly process
before I started glitching.
-
The interesting keys in the ACP are all
stored in RAM only. This includes
-
Working/Program/Category and Seed Keys.
The RAM is battery-backed.
-
If the Seed Keys are ever lost from RAM
this ACP can no longer process EMMs
-
and so is useless. It’s possible to glitch
the ACP and read memory, but the glitcher
-
works on an ACP removed from their
set-top-box. When the ACP is in-circuit
-
the connections to other components and
16 VCC-connected pins pose the problem.
-
To glitch the ACP in-circuit we’ll require
some modifications to the set-top-box
-
disconnecting the ACP from other parts.
Or, another alternative is to remove
-
the ACP from the set-top-box and place it
on a breakout board without loosing
-
the battery power and wiping RAM. Rather
than modify the set-top-box, where each
-
of several different models would have
required unique modifications I decided
-
to try to remove the ACP with the battery
still attached. The plan is to carefully
-
lift the Battery and Ground pins while the
set-top-box is powered on providing VCC.
-
I use a small tool I made from a razorblade
using a Dremel tool, then attached
-
the handle of a screw driver. This tool
can be wedged under a pin, then with
-
some hot air the solder will melt and
a single pin can be lifted straight up
-
without damaging any of the other pins.
-
With the pins lifted an external battery
can be attached.
-
After attaching an external battery…
-
applause
-
After attaching an external battery the
set-top-box is unplugged, and the ACP
-
can be removed from the set-top.box using
hot air. The ACP can be removed from
-
the set-top-box, glitched, and can even be
placed back in the set-top-box, if desired.
-
To do this I just use hot air and a lot of
flux. Additionally, once the interesting
-
keys have been extracted it may not even
be necessary to replace the ACP
-
in the set-top-box. The ACP is now placed
on a breakout board and connected
-
with the glitcher. Not all the pins need
to be connected. Only a handful of pins
-
are actually used by the glitcher. You can
also see at this point the glitcher is
-
in a project box. The aesthetics greatly
improved since the breadboard-based
-
glitcher. But the functionality is
identical. The timing of ACP responses
-
is different on a chip with valid RAM
compared to the previous chips
-
that I had glitched before. I didn’t
confirm whether the cause of the timing
-
difference was due to a different
oscillator configuration or just
-
a different software path. But by
adjusting the timing of the glitches
-
the executable code payload runs as it did
on the previous chips. So now we can read
-
the RAM contents of a valid ACP, including
the Category Keys, if the set-top-box had
-
current authorization, as well as the Seed
Keys that are used by this ACP to decrypt
-
EMMs. With a valid Category Key ECMs can
be decrypted, and a cracked Working Key
-
can be calculated for any channel. Now,
with the capability of running my own code
-
of the ACP it’s time to look at the
transport stream descrambling.
-
There’s a hardware register bit that
is set or cleared, based on a byte
-
in the ECM40. When this bit is cleared
standard DES decryption is used.
-
When the bit is set the transport stream
descrambler acts differently. Additionally,
-
there’s an 8-bit hardware register in the
DES peripheral area. When it’s Zero
-
the peripheral operates the standard DES.
For any other value the peripheral acts
-
differently. At this point I started to
think I might be looking at doing
-
a Gate-level reverse engineering of the
chip to understand this functionality.
-
The chip is using technology that’s older.
So reverse-engineering should be feasible.
-
But, if possible, I’d like to avoid all
this extra work. It would be quite
-
time consuming, and might give imperfect
results, similar to the optical ROM
-
extraction. So I started with trying to
characterize descrambling modes.
-
The transport stream packet is made up
of a 4-byte header and 23 blocks of
-
8 bytes each. The DES operates
on these 8 byte (64 bit) blocks.
-
By flipping one bit in encrypted input ECB,
CBC or OFB modes can be differentiated.
-
Flipping one bit causes an 8-byte block
to be corrupted, and the corresponding bit
-
in the following block to be flipped.
This indicates CBC mode is in use.
-
Timing of the input compared to the
decrypted output was measured with
-
the descrambler and standard DES,
and in the custom hardware mode.
-
No timing difference was seen. This
suggests the internal properties of DES
-
haven't changed. Which makes sense
because the decryption has to be done
-
in realtime. So this suggests that crypto
customizations are not affecting
-
some DES internals like the number of
rounds. Also by using ACP as a decryption
-
oracle I determined that the customization
affects each of the 23 blocks of the
-
transport stream differently. Next
I tested the software using DES ‘weak keys’.
-
These are certain keys not recommended
for use with DES because their properties
-
weaken the cryptographic strength.
A key of all Zero or all One bits
-
will cause DES decryption and encryption
to be identical. That is running the same
-
data through Encrypt or Decrypt will give
the same result. I can test this on an ACP
-
configured for standard DES decryption
and see the expected ‘weak key’ behavior.
-
When tested with the descrambler in custom
mode the ‘weak key’ behaviour changes.
-
Using a key of all Zero or all One didn’t
produce the same results in Encrypt
-
and Decrypt modes. Looking at the other
hardware register, testing the DES
-
peripheral with different values in the
8-bit register, and using ‘weak keys’,
-
shows that the standard DES ‘weak key’
behaviour still exists. So my hunch
-
at this point is that one customization
affects the key, and the other customization
-
affects the data. At this point I can’t be
certain, but I have a good feeling about
-
the theory, so I continue to investigate.
-
Based on the idea that the hardware
customization affects only the key
-
and decryption is static I thought the
simplest customization will be an XOR
-
mask that’s applied to the key before it’s
used for DES decryption. XOR requires
-
only a single gate in series of the DES
engine so it fits the requirements of
-
fast and very simple implement in
hardware. A change of even a single bit
-
in the key could cause the observed
effects. Flipping more than 28 bits
-
will be pointless. That’s the same as
inverting a key and flipping fewer bits.
-
More flipped bits means more gates
necessary for the customization, so
-
it makes sense to flip a minimal number
of bits. So I wrote this wonderful FOR loop,
-
nested 16 levels deep, to test decryption
results after flipping one bit of the key,
-
then flipping two bits, then three bits
etc. of the 16 bits. To test all the
-
possible keys will take a long time. But
if only a few bits are flipped then it
-
might be possible to run it in a shorter
period of time. And promising results
-
did come quickly. It turns out the theory
held up. And some of the blocks have
-
as few as three bits flipped. This takes
only seconds for the software to identify.
-
After verifying that these work for XOR
masks, for these logs the software then
-
was left running to find all 23 masks.
-
The simple brute-force method worked,
it ran for a couple of days to identify
-
all the 23 masks. By more carefully
analyzing which bits were being flipped
-
in the early results a pattern can
actually be found. So the search could
-
have been more limited. Using this
technique the software cracker could have
-
completed it in under a second.
-
After successfully solving the first
hardware customization the theory
-
that the second customization is
a Data XOR looks promising. It makes sense
-
that one or more XOR gate is enabled by
each bit of the 8-bit hardware register.
-
Using the ACP as a decryption oracle
a known key in Data were decrypted
-
with all values of the 8-bit register.
Software attack of this function
-
was successful, and 255 XOR masks were
identified, behavior matching what was
-
expected. I haven’t actually seen this
customization in actual use. Presumably,
-
they’re saving it to be used as
a countermeasure against pirate devices
-
when necessary. But it hasn’t been
necessary since the system never had
-
a security breach.
-
laughs
applause
-
In order to implement a Softcam, a software
implementation of the descrambler,
-
a few cryptographic details need to be
identified. But at this point I have
-
all the tools to do so. The initialization
vector used for CBC mode can be found
-
through simple XOR. And the handling of
short blocks – those less than the
-
64 bit DES block size can be identified
likewise. With all these details
-
a software implementation of the
EMM decryption of Category Key and
-
ECM decryption of Program Key and Working
Keys can be made and the transport stream
-
descrambler can also be implemented in
software. The rapid key changes and the
-
use of DES with h/w customizations makes
it a bit different to implement, compared
-
to a Softcam for typical DVB systems,
but overall the concept is the same.
-
And now it’s all working! I was able to
test it, and it’s fully working on both
-
the satellite and cable systems. This
is a screen that’s broadcast before
-
a pay-per-view event goes live. The
pay-per-view, like all other channels,
-
can be decrypted with the Softcam using
the algorithms learned in these keys that
-
were extracted. With the ECM and EMM
algorithms and Seed Keys for a set-top-box
-
with any level of authorization the
Category Key can be decrypted
-
and then used to decrypt any and all
of the channels that are broadcast
-
by this provider.
-
applause
-
A few of the weaknesses that I identified
in this system were that the ACP I studied
-
is relatively old technology, almost
20 years old. So this makes it a lot
-
easier for invasive analysis today
than one that was brand new.
-
The TQFP100 package is quite easy to deal
with compared to modern alternatives.
-
The chip is susceptible to voltage
glitching. It’s a van-Neumann architecture
-
without strong MMU protection preventing
code to be executed from RAM.
-
They didn’t leave any possibility for code
update or dynamic code execution
-
for countermeasure purposes. The software
for the ACP is contained entirely in ROM
-
with no mechanism for software updates in
the field. The hardware customizations
-
to the crypto were quite simple and
required no reverse-engineering
-
of the chip logic. I was basically able to
guess the hardware customizations.
-
I was impressed with the design of the
system. It was actually stronger than
-
I anticipated when I started the project.
All the key handling and decryption
-
is contained within a single chip which
makes it impossible to do key sharing
-
that’s being done with some of the
smartcard systems. The fast Working Key
-
change interval – only a 133 ms – also
makes key sharing more difficult.
-
And the short lifetime of the key makes
cracking it in realtime quite unrealistic.
-
The lack of code in any rewritable memory
means there’s nowhere to write code for
-
a permanent backdoor to disable the
access controls. I listed this also as
-
a weakness but in fact this is a strength
as it limits the attacker’s capability
-
to install any kind of persistent
backdoor. The chip operates
-
on an internal clock eliminating clock
glitch attack and making timing
-
a voltage glitch a lot more difficult.
These dead addresses in the middle
-
of DES keys prevent linear readout of
keys. If one were to cause a loop reading
-
data to go out of bounds and reach the
area of RAM where keys are stored
-
the chip will reset before an entire key
is read. After the first couple of bytes
-
a dead address will be accessed that
causes the chip to reset.
-
The personalization ROM appears to be
inaccessible so it can’t easily be used
-
to modify the keys and Unit Address
within the ACP. The Seed Keys
-
aren’t easily changed so the
set-top-boxes can’t easily be cloned.
-
The keys exist only in RAM so you have to
maintain a battery backup at all times.
-
This rules out a lot of invasive attacks
to retrieve the keys. And there are
-
no group keys used for EMMs. All the
unit addressing is to individual units.
-
So you have to pull keys from an actively
subscribed box in order to get active keys.
-
That said if you have keys from a box
that is subscribed to any channel
-
you’ll receive an EMM containing the
Category Key which is capable of
-
decrypting all channels. So you don’t need
to have a subscription to all channels
-
you want to decrypt as long as you’re
authorized for at least one channel
-
on the system.
-
The software is generally well designed
and written. I didn’t notice any glaring
-
bugs within it. Although DES is used the
EMM decryption requires using three
-
DES keys, and multiple rounds are
performed when decrypting EMM and ECMs.
-
So this part isn’t as simple as
cracking a single 56-bit key.
-
Brute-forcing, starting from the encrypted
transport stream requires cracking
-
Working Key, then Program Key,
then Category Key and, finally,
-
the three Seed Keys.
-
You might wonder how many set-top-boxes
it took for me to complete this project!
-
laughter and applause
-
The truth is I only needed the one…
…truck load!
-
laughter
-
Some of the boxes had different versions
of the ACP chip. Many of the boxes had
-
different PCB layouts. So it was
interesting to be able to look at
-
a variety of boxes. The cost of used set
top boxes was low, ca. $20. And for
-
this research I was focusing on the signal
security and didn’t need the PVR
-
functionality or any of the advanced
features from the expensive set-top-boxes.
-
So at this point I have a brief anti-piracy
message: I don’t recommend you pirate
-
cable or satellite TV. There is never
anything good on. It doesn’t matter
-
how many channels you can decrypt.
Believe me – I looked!
-
It’s not worth the effort!
-
laughter and applause
-
Herald: Do we have questions
from the room?
-
Questions – please use the microphones.
-
I know there is one question
from the interwebs.
-
Signal Angel: Okay, hello.
This is working? Good.
-
So the first question from the internet
is: how many chips did you destroy
-
or make unusable, and how did you
get all those set-top-boxes?
-
Chris: Because the cost of the used
set-top-boxes was quite low I wasn’t
-
afraid to destroy several chips in the
process. It didn’t take as many
-
as I would have expected in the beginning.
Two or three chips were used for the
-
decapsulation and the delayering process.
I ended up extracting the ROM
-
from a single chip. And then, when
it came to glitching, there were
-
three or four chips that I removed and
erased the RAM from to develop the glitch.
-
When I finally got to the point where
I was extracting keys from a valid chip
-
the very first chip that I tried worked.
So there were few casualties involved!
-
Herald: Thank you! Microphone 3
was the first one, please!
-
Mic3: How many years
did this project take you?
-
Chris: I would work for a few weeks at
a time and then get burned out and
-
take a break, and then come back to it.
Most of the work for the project
-
was completed over about a 2-year period.
-
Herald: Thank you. And…
Microphone 2, please!
-
Mic2: Hi, thank you for a great
lecture. How comes that
-
the content decryption was DES and
not a DVB-CSA because we're used
-
that content is encrypted
with DVB-CSA in these DVB systems.
-
Chris: In North America we
don’t believe in standards!
-
laughter
-
Mic2: Thanks!
-
Chris: The timing was also a part of it.
The system was being developed
-
at the same time as DVB was being
standardized. So General Instrument
-
rather than going along with the Standards
Group and waiting for the standardization
-
they went with DES, directly.
-
Herald: Thank you. And another one
from Cyber-Cyber… space!
-
Signal Angel: Okay. Another question from
the internet is: you have all this fancy
-
like lab equipment stuff. How were you
able to afford that?
-
Chris: I’ve been quite interested in this
for a long time. So I’ve collected
-
this equipment over a period of years.
And I do some work, professionally,
-
in reverse-engineering. So whenever
possible I use our client’s money
-
to buy another piece of
equipment for the lab.
-
To do this actual work, though, you could
even use more basic equipment
-
because of the age of the chip. You could
use a microscope that you could find
-
easily for $1.000 .. $2.000 or even less
and have quite good results.
-
So it’s not trivial but it’s not a huge
amount of money for a lab equipment!
-
Herald: Not that huge!
Microphone 2, please!
-
Mic2: What do you do for a living
besides reverse-engineering?
-
Chris: Reverse-engineering!
laughs
-
Herald: Thank you. And the internet!
Again.
-
Signal Angel: Okay. Next question is…
somebody wants to know how…
-
…which software did you use for the
automated image analyzing, and
-
is it available somewhere?
-
Chris: Like everybody else that I’ve known
that’s done optical ROM extraction
-
I developed it myself. Everybody seems
to develop their own tools from scratch
-
for that. The image processing I used was
really quite simple. So it didn’t take
-
a lot of advanced algorithms or anything
like that. So I’m using some software
-
I developed personally, and
it hasn’t been released.
-
Herald: Microphone 2, please!
-
Mic2: And how did you keep the boxes
subscribed? So did you call them
-
every week “Oh, my box broke down,
I got another one”, or how is this done?
-
Chris: For most of the research that
I did I didn’t need an active box. I did
-
all the research just on previously
activated boxes that had lost their
-
authorization. And by the time I had the
process figured out, that I knew how
-
to extract keys from a valid box
I only needed the one box.
-
Mic2: And had you heard back
from the cable provider about this?
-
Chris: No.
-
Herald: Okay, thank you.
Microphone 3, please!
-
Mic3: Hello, thanks very much for the
lecture and ‘well done’ on all the work!
-
My question is: how does the glitching
work, the glitching attack?
-
Chris: The glitcher was quite simple.
I drop the voltage for a very brief period
-
of time. And it’s enough time that it
causes at least one instruction to
-
not execute properly. But it’s too short
of a time to cause the chip to reset.
-
So essentially I’m corrupting one
instruction. It is for the specific target
-
that I hit that led to my code in RAM.
I’m not actually sure. I found that
-
if I glitch it this time then the code
ends up executing my code –
-
good enough for me!
-
Herald: Okay. Thank you, Chris!
Please, dear audience,
-
give an Anniversary Edition
applause to Chris Gerlinsky!
-
Anniversary Edition applause
-
postroll music
-
subtitles created by c3subtitles.de
in the year 2018