7. Security and DRM are
made of the same blocks
• Same Encryption algorithms
• Same Protocols
• Same Key exchange mechanisms
• Environments each run in (security vs
DRM) are very different
• What they are designed to protect are
different
15. Why have we not seen
this in the movie industry?
• Different types of content have different
business models
• What movie won the best picture in 2010?
• When’s the last time you watched it?
16.
17. • Movies are usually watched once
• Music is listened to over and over
• Music has transitioned from scarcity of product
(CDs and tracks) to scarcity of experience
(concerts)
• Music artists have switched to a new revenue
stream
• The movie industry still relies on scarcity of
product and delivers that to you via different
mechanisms
Consumption of music and movies
is different
27. Key Takeaway for DRM:
Good software design is not
necessarily good DRM design
Module 1 Module 2 Module 3
Module 4 Module 5 Module 6
Module 1
Module 2
Module 3
Module 4
Module 5
Module 6
28. • The fundamental building block of
protection in a DRM is encryption/
decryption
• Mathematically protect the assets you want
to control
To build a DRM
you need cryptography
33. Traditional Cryptography:
• Design of algorithms and protocols to
protect a communication channel (secret
messages, credit cards...)
• End points are assumed to be trusted and
safe
• Attacker has access to what it can capture
on the wire
• Delivery of key to end points is very hard
Trusted(End(
Point
Trusted(End(
Point
Untrusted(World(/(
Untrusted(Network
Secret&Key Secret&Key
34.
35. Dear NSA,
Please stop listening to my fu**ing phone calls.
Love,
Angela Merkel ....................../´¯/) !
....................,/¯../ !
.................../..../ !
............./´¯/'...'/´¯¯`·¸ !
........../'/.../..../......./¨¯ !
........('(...´...´.... ¯~/'...') !
..........................'...../ !
..........''............. _.·´ !
..........................( !
..............................!
Let’s create a secret message and see
how it would be traditionally
attacked:
36. Translate text to ASCII
This:
Dear NSA, Please stop listening to my fu**ing
phone calls. Love,Angela Merkel
Becomes this:
44 65 61 72 20 4E 53 41 2C 20 50
6C 65 61 73 65 20 73 74 6F 70 20
6C 69 73 74 65 6E 69 6E 67 20 74
6F 20 6D 79 20 66 75 63 6B 69 6E
67 20 70 68 6F 6E 65 20 63 61 6C
6C 73 2E 20 4C 6F 76 65 2C 20 41
6E 67 65 6C 61 20 4D 65 72 6B 65
37. Now we need to encrypt it
• Can encrypt with any algorithm that both
the sender and receiver have
• We will use the NIST algorithm:AES
• Use a standard encryption algorithm so
that only the key needs to be exchanged
between the sender and receiver
38. Details of AES
• Advanced Encryption System
• Symmetric key algorithm that comes in
three flavors: 128, 192, and 256 bit
• Those bit lengths represent the length of
the keys
• Would take 1 billion billion years to force
break 128 bit AES
39. Now encrypt the message with 128 bit AES
(Operates on 16 byte blocks)
Plain Text:
44 65 61 72 20 4E 53 41 2C 20 50 6C 65 61 73 65
Key:
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
Cipher Text:
0D 1E 8A C7 87 B2 14 9D 47 A2 71 3D 2D 27 1F 5E
Plain&Text
Key
Cryptographic&
Algorithm Ciphertext
Message&
to&encrypt
Encrypted&
Message
40. How would the NSA
attack this?
• Attacker lives in the untrusted world
• Assume the message is intercepted
• The more messages the secret key is used
to protect, the more at risk the key is for
discovery
Trusted(End(
Point
Trusted(End(
Point
Untrusted(World(/(
Untrusted(Network
44. The DRM threat model:
• Attacker has total visibility into the system
and cryptographic algorithm
• Binary is completely visible to an attacker
• Attacker has full control over the
execution environment (CPU calls, memory
registers...)
• If you want a point of trust in the system,
you must build
45. Components of an
encryption algorithm
• Code that defines the algorithm
• Variables and constants of the algorithm
• Encryption/Decryption key (a special type
of variable)
• The key determines the behavior of the
algorithm
46. At any time the algorithm that is running in software is in one
of three states:
!
1. Stored on disk
2. Loaded into memory
3. Executing
On#Disk In#Memory Execu3ng
47. On#Disk In#Memory Execu3ng
State of the algorithm determines the best way to protect it
• The closer you get to the CPU with the algorithm,
the harder it is to protect it
• As you move to the CPU, you can’t just protect, you
also need to hide things
Cryptographic,
Program
Code
(Algorithm)
Variables/
Constants
Key
51. Defense 1:
Disk Encryption
• Very secure, as long as you never need to
actually run the algorithm
• The algorithm can’t be run in its encrypted
form (CPU won’t understand it)
• Only effective at static analysis attacks
52. Defense 2:
Code Obfuscation
• A defense against reverse engineering
• Modified source and machine code that is
difficult for a human to understand
53. Take code that looks like this:
{
toSub = (y<<4 ^ y>>5) + y ^ sum + k[sum>>11 & 3];
if(toSub > z)
{
// printf("Underflow toSub: 0x%0x current: 0x%0xn", toSub, z);
z = (MAX - toSub) + (z + 1);
}
else
z-= (y<<4 ^ y>>5) + y ^ sum + k[sum>>11 & 3];
sum -= delta;
toSub = (z<<4 ^ z>>5) + z ^ sum + k[sum & 3];
if(toSub > y)
y = (MAX - toSub) + (y + 1);
else
y-= (z<<4 ^ z>>5) + z ^ sum + k[sum & 3];
}
55. Defense 3:
Code Flattening
• Inputs and outputs of the algorithm are the
exact same
• Binds blocks of code into a single and very
difficult to understand monolithic block
• Used to force the attacker into spending
time pruning down the call tree
57. Switch
Block+1 Block+2 Block+3 Block+4 Block+5 Block+6 Block+7 Block+8
Condi7on
Input
Output
Control
Flow
Graph
A>er
Obfusca8on
and
Fla:ening
Have
Been
Added
To something much harder to
understand by a human:
58. Defense 4: Data Transforms
(Creating islands of trust in an
untrusted system)
59. • Map your data from one value to another (think
about it like changing the color of a number)
• Creates a mathematical barrier for the attacker
• That barrier is the boundary between your trusted
and untrusted world.
• Attacker must reverse engineer the transform
before they can get access to the true values
• Attacked by watching the CPU add and remove
transform values
60. When the attacker has
access to everything:
• Hiding a key in software is almost
impossible
• Hiding a standard cryptographic algorithm
in software is almost impossible
• Hiding a key + a standard cryptographic
algorithm is something that mathematicians
have figured out how to do
61. Defense 5:
White-box Cryptography
• A technique that allows you to hide a key
inside an algorithm
• First published in late 2002
• The breakthrough mathematical technique
that makes software DRMs possible
64. What is this really doing?
• It applies a mathematical transform to our
numbers
• Multiplication:The mathematical operation
of scaling one number by another
• Generally taught to children using a lookup
table (the times tables)
65. Why is this so cool?
• It allows us to ‘embed’ a mathematical
transform into a lookup table
• As we do our lookup, the transform is
magically applied
• Map numbers into different spaces, while
executing the encryption algorithm
• We don’t even need to know the math
70. As we move from box to box, we apply
transforms and then migrate to new ones
White&Box*AES
S1 S2
MC1 MC2
A1 A2
S3
MC3
A3
Input
AES*Output
Shi*
71. There is one very important
dependency
• For white-boxing to really work, the input
needs to have a transform already on it
• This works well for DRM, content already
has a transform on it (encryption)
73. Costs of using these
DRM defenses
• White-box cryptography increases the
binary size
• Obfuscation increases the binary size
• Execution of a cryptographic algorithm in
white-box form is very slow
• When viewed in context of video, slow
decryption can slow the video decode
74. Hardware DRM
• No need to use white-box encryption
• Keys and algorithms are protected inside of
hardware
• Faster decrypt performance
76. What we get
• A trust point has been created in the
system using AMD hardware protection
• Hide secrets inside of the hardware instead
of hiding them in white-boxes
• Execution of crypto algorithms in hardware
is much faster than white-box
77. The most important step
is seeding the root key
• AMD provisions the root DRM key into
the the HW
• The root key is used as the base protection
for all keys
78. Hardware Protection
DRM Key
(AES, RSA, ECC)
Machine Key
(1024 bit RSA)
Domain Key
(1024 bit RSA)
Key Encryption
Key(128 bit AES)
Content Encryption
Key
(128 bit AES)
Rotation Key
(128 bit AES)
Shared Domain
Keys
(1024 RSA)
Adobe Primetime HW DRM on AMD
Hardware
Remember keys protecting keys protecting
keys?
80. Some gory details on HW DRM
• Software pushes encrypted keys down into
hardware
• Software pushes down encrypted content +
an index to get back decrypted content
• Because the root key is protected all the way
down to the HW, no key is exposed in SW
81. Video Playback Engine
(Flash Player, AIR, AVE)
Machine Key
SOC
Adobe Access DRM
HW Crypto
Audio Codec
Access Indiv Server
A/V Sync
Composite
Display
Controller
Content
Server
1
4
7
Disk
Storage
Video Codec
Video Player
2 3
License
Server
8
9
Machine Key
License
License
11
12
13
5
6
10
14
Decrypted
Video Samples
Decrypted
Audio Samples
15
16
License
Translation
Machine Key
Provisioned
DRM Key
Machine Key
Overall
Architecture