The Key Recovery Attacks against Commercial
White-box cryptography Implementations
Sanghwan Ahn | LINE Corporation
CodeBlue 2017 —Tokyo — Nov 7, 2017
About me
• Ahn Sanghwan(@h2spice)
• LINE corporation
• Senior security engineer

• Security research and development
• SecuInside 2013 “How to find vulnerability in software”
• Intertrust and LINE Security summit, KimchiCon, PacSec, CodeBlue,
HITCON 2017 “Key recovery attacks against commercial white-box
cryptography implementations”


Outline
• Introduction
• White-box Cryptography(WBC)
• Existing attacks against published white-box implementations
• Attacks against commercial white-box Implementations
• Conclusion
Introduction
Application security
Digital rights management
- Data encryption
- Watermarks
- Signature
End-to-End Encryption
Digital signature
Payment tokenization
- Easy payment service
- Masking sensitive data
Transport layer protection
- SSL/TLS
Authentication(id/password, biometric)
+ 2-Factor-Authentication(SMS, Call, OTP), FIDO
Attacking end-point directly
Digital rights management
- Data encryption
- Watermarks
- Signature
Tamper resistant
- Anti-debug
- Integrity
- Obfuscation
End-to-End Encryption
Digital signature
Payment tokenization
- Easy payment service
- Masking sensitive data
Transport layer protection
- SSL/TLS
Authentication(id/password, biometric)
+ 2-Factor-Authentication(SMS, Call, OTP), FIDO
Mallory
Mallory own devices
Mallory Bob
The person who purchased the device or content is attacking it
• Binary is completely visible to an attacker
• Attacker has full access to the cryptography algorithm
• Attacker has full control over its execution environment
• Unlimited amount of queries
• Static Analysis
• Code Analysis(reverse engineering)

• Dynamic Analysis
• Debugging
• DBI(dynamic binary instrumentation)
White-box threat model
• Trusted execution environment(TEE)
• ARM Trustzone, Intel SGX, AMD Memory Encryption
• It’s almost safe, but not many supported devices 

(mostly latest devices)
• White-box cryptography(WBC)
• All academic WBC solutions have been broken.
• No attack has been observed to date on commercial WBC

Solutions for white-box threat model
Virtual 

Black box
White-box Cryptography(WBC)
White-box AES Implementation
Ciphertext
Plaintext
ShiftRows
SubBytes
MixColumns
AddRoundKey
Ciphertext
PlaintextKey
WBC
Key partial evaluation
Key
S
INPUT x (0-255)
Sbox ( x ⊕ key )
Tbox

 unsigned int Tboxes[9][16][256] =
{
/*First Round, K[0] is 0x6c*/
{
0xf05050a0, 0x443c3c78, 0xba9f9f25, 0xe3a8a84b, 0xcf45458a, 0x10f9f9e9, 0x06020204, 0x817f7ffe,
0xc5434386, 0xd74d4d9a, 0x55333366, 0x94858511, 0x6bd0d0bb, 0x2aefefc5, 0xe5aaaa4f, 0x16fbfbed,
0x30101020, 0x1affffe5, 0x0ef3f3fd, 0x6dd2d2bf, 0xdfbcbc63, 0xc1b6b677, 0x75dadaaf, 0x63212142,
0xad92923f, 0xbc9d9d21, 0x48383870, 0x04f5f5f1, 0xf35151a2, 0xfea3a35d, 0xc0404080, 0x8a8f8f05,
0x7b292952, 0x3ee3e3dd, 0x712f2f5e, 0x97848413, 0xf65252a4, 0x4d3b3b76, 0x61d6d6b7, 0xceb3b37d,
0x2d1b1b36, 0xb26e6edc, 0xee5a5ab4, 0xfba0a05b, 0x1b090912, 0x9e83831d, 0x742c2c58, 0x2e1a1a34,
0xde4a4a94, 0xd44c4c98, 0xe85858b0, 0x4acfcf85, 0xbe6a6ad4, 0x46cbcb8d, 0xd9bebe67, 0x4b393972,
0x60202040, 0x1ffcfce3, 0xc8b1b179, 0xed5b5bb6, 0xf55353a6, 0x68d1d1b9, 0x00000000, 0x2cededc1,
0x937171e2, 0x73d8d8ab, 0x53313162, 0x3f15152a, 0x5c343468, 0xf4a5a551, 0x34e5e5d1, 0x08f1f1f9,
0x5a36366c, 0x413f3f7e, 0x02f7f7f5, 0x4fcccc83, 0xc2b7b775, 0x1cfdfde1, 0xae93933d, 0x6a26264c,
0x26ebebcd, 0x6927274e, 0xcdb2b27f, 0x9f7575ea, 0x0907070e, 0x36121224, 0x9b80801b, 0x3de2e2df,
0x28181830, 0xa1969637, 0x0f05050a, 0xb59a9a2f, 0x0c040408, 0x52c7c795, 0x65232346, 0x5ec3c39d,
0x19fefee7, 0x62d7d7b5, 0xe6abab4d, 0x9a7676ec, 0x50303060, 0x03010102, 0xa96767ce, 0x7d2b2b56,
0x0df2f2ff, 0xbd6b6bd6, 0xb16f6fde, 0x54c5c591, 0xa56363c6, 0x847c7cf8, 0x997777ee, 0x8d7b7bf6,
0xbf9c9c23, 0xf7a4a453, 0x967272e4, 0x5bc0c09b, 0xecadad41, 0x67d4d4b3, 0xfda2a25f, 0xeaafaf45,
0x15fafaef, 0xeb5959b2, 0xc947478e, 0x0bf0f0fb, 0x45caca8f, 0x9d82821f, 0x40c9c989, 0x877d7dfa,
0x49cece87, 0xff5555aa, 0x78282850, 0x7adfdfa5, 0xb69b9b2d, 0x221e1e3c, 0x92878715, 0x20e9e9c9,
0xbb6969d2, 0x70d9d9a9, 0x898e8e07, 0xa7949433, 0x38e1e1d9, 0x13f8f8eb, 0xb398982b, 0x33111122,
0xcbb0b07b, 0xfc5454a8, 0xd6bbbb6d, 0x3a16162c, 0xc3414182, 0xb0999929, 0x772d2d5a, 0x110f0f1e,
0xdabfbf65, 0x31e6e6d7, 0xc6424284, 0xb86868d0, 0x8f8c8c03, 0xf8a1a159, 0x80898909, 0x170d0d1a,
0xdd4b4b96, 0xdcbdbd61, 0x868b8b0d, 0x858a8a0f, 0x23e8e8cb, 0x7cdddda1, 0x9c7474e8, 0x211f1f3e,
0x241c1c38, 0xf1a6a657, 0xc7b4b473, 0x51c6c697, 0xd5baba6f, 0x887878f0, 0x6f25254a, 0x722e2e5c,
0x91868617, 0x58c1c199, 0x271d1d3a, 0xb99e9e27, 0xa36161c2, 0x5f35356a, 0xf95757ae, 0xd0b9b969,
0xd8484890, 0x05030306, 0x01f6f6f7, 0x120e0e1c, 0x907070e0, 0x423e3e7c, 0xc4b5b571, 0xaa6666cc,
0xa8919139, 0xa4959531, 0x37e4e4d3, 0x8b7979f2, 0x5dc2c29f, 0x6ed3d3bd, 0xefacac43, 0xa66262c4,
0xdb494992, 0x0a06060c, 0x6c242448, 0xe45c5cb8, 0x3be0e0db, 0x56323264, 0x4e3a3a74, 0x1e0a0a14,
0xaf6565ca, 0x8e7a7af4, 0xe9aeae47, 0x18080810, 0xb46c6cd8, 0xfa5656ac, 0x07f4f4f3, 0x25eaeacf,
0x8c8d8d01, 0x64d5d5b1, 0xd24e4e9c, 0xe0a9a949, 0x32e7e7d5, 0x43c8c88b, 0x5937376e, 0xb76d6dda,
0xac6464c8, 0xe75d5dba, 0x2b191932, 0x957373e6, 0x57c4c493, 0xf2a7a755, 0x827e7efc, 0x473d3d7a,
0xe15f5fbe, 0xa2979735, 0xcc444488, 0x3917172e, 0x4ccdcd81, 0x140c0c18, 0x35131326, 0x2fececc3,
0x79dedea7, 0xe25e5ebc, 0x1d0b0b16, 0x76dbdbad, 0xca46468c, 0x29eeeec7, 0xd3b8b86b, 0x3c141428,
0x66222244, 0x7e2a2a54, 0xab90903b, 0x8388880b, 0xa06060c0, 0x98818119, 0xd14f4f9e, 0x7fdcdca3
},
...
Table based AES implementation
T-Box
XOR Table
ShiftRows
AddRoundKey
SubByte
MixColumns
Data flow for round one of table based AES 128 implementation, 2-9 rounds are the same.
Example code
Reference : https://github.com/0vercl0k/stuffz/tree/master/wbaes_attack/wbaes128
Encoding
A1
A0
-1
T1
A2
A1
-1
T2
An
An-1
-1
Tn
IN
A0
An
-1
OUT
…
Obfuscated Table, Tn’
A * A-1 = I(identity matrix)
Encoding
A1
A0
-1
T1
A2
A1
-1
T2
An
An-1
-1
Tn
IN
A0
An
-1
OUT
…
Obfuscated Table, Tn’
A * A-1 = I(identity matrix) Canceled
Canceled
Canceled
Canceled
WB-AES implementation - internal encoding
XOR Table
XOR Table
Internal Decoding

it cancels encoding in the previous round
T’Box
Internal Encoding

it will be canceled in the next round
T’Box transformed 

With Mixing Bijection

it will be canceled in the next transformation
Data flow for second round of table based AES 128 implementation.
WB-AES implementation - external encoding
First 

round
Input
Sender
White-box
Decode 

the input Final 

round
Encode 

the output
Output
Receiver
Decode the output
Encode 

the input
Network of look-up tables
ShiftRows
SubBytes
MixColumns
AddRoundKey
Conventional AES and white-box AES Implementation
Existing attacks against 

published white-box implementations
Possible attacks : table-decomposition
Ciphertext
Plaintext
WBC
f(…)
Table decomposition
function
Possible attacks : power analysis
Ciphertext
Plaintext
WBC
Recode intermediate
computation result
And then compare it 

and simulated data
ShiftRows
SubBytes
MixColumns
AddRoundKey
Ciphertext
PlaintextKey
Simulator
Typical example of a (hardware) power trace of an unprotected AES-128 implementation (one can observe the ten rounds)
Power analysis on the hardware
Reference : Joppe W. Bos et al. - Differential Computation Analysis: Hiding your White-Box Designs is Not Enough
Typical example of a (hardware) power trace of an unprotected AES-128 implementation (one can observe the ten rounds)
Power analysis on the hardware
Reference : Joppe W. Bos et al. - Differential Computation Analysis: Hiding your White-Box Designs is Not Enough
Typical example of a portion of a serialized software trace of stack writes in an WBAES-128, with only two possible values: 0 or 1
Power analysis on the software
Reference : Joppe W. Bos et al. - Differential Computation Analysis: Hiding your White-Box Designs is Not Enough
The correlation between the sensitive data and the power consumption for the 256 key guesses for a single byte
Correlation power analysis(CPA)
Reference : W. Hnath, J. Pettengill, “Differential Power Analysis Side-Channel Attacks in Cryptography,” Major Qualifying Project, Worcester Polytechnic Institute, April 2010
The correlation between the sensitive data and the power consumption for the 256 key guesses for 16 byte
Correlation power analysis(CPA)
Reference : W. Hnath, J. Pettengill, “Differential Power Analysis Side-Channel Attacks in Cryptography,” Major Qualifying Project, Worcester Polytechnic Institute, April 2010
Possible attacks : fault analysis
Faulty Ciphertext

(incorrect result)
Plaintext
WBC
Ciphertext(correct result)
Plaintext
WBC
1. Modify
intermediate data
2. Record changes to the output
3, Compare incorrect result and correct result
Differential fault analysis(DFA)
87 F2 4D 97
6E 4C 90 EC
46 E7 4A C3
A6 8C D8 95
After ShiftRow9
99 F2 4D 97
6E 4C 90 EC
46 E7 4A C3
A6 8C D8 95
Fault injected ‘1E’
7B 40 43 4C
29 D4 70 9F
8A E4 3A 42
CF A5 A6 BC
After Mixcolumns
AC 19 28 57
77 FA D1 5C
66 DC 29 00
F3 21 41 6E
K9
D7 59 8B 1B
5E 2E A1 C3
EC 38 13 42
3C 84 E7 D2
After AddRoundKey9
0E CB 3D AF
58 31 32 2E
CE 07 7D 2C
EB 5F 94 B5
After SubBytes10
0E CB 3D AF
31 32 2E 58
7D 2C CE 07
B5 EB 5F 94
After ShiftRows10
D0 C9 E1 B6
14 EE 3F 63
F9 25 0C 0C
A8 89 C8 A6
K10
DE 02 DC 19
25 DC 11 3B
84 09 C2 0B
1D 62 97 32
Output with faults
39 02 DC 19
25 DC 11 6A
84 09 85 0B
1D FB 97 32
Output without fault
⊕
⊕
=
Input = ’3243F6A8885A308D313198A2E0370734’
Cipher Key =’2B7E151628AED2A6ABF7158809CF4F3C’
Output= ’3925841D02DC09FBDC118597196A0B32’
Reference : P. Dusart, G. Letourneux and O. Vivolo, “Differential Fault Analysis on A.E.S.,” Cryptology ePrint Archive of IACR, No. 010, 2003
Differential fault analysis(DFA)
87 F2 4D 97
6E 4C 90 EC
46 E7 4A C3
A6 8C D8 95
After ShiftRow9
99 F2 4D 97
6E 4C 90 EC
46 E7 4A C3
A6 8C D8 95
Fault injected ‘1E’
AC 19 28 57
77 FA D1 5C
66 DC 29 00
F3 21 41 6E
K9
D7 59 8B 1B
5E 2E A1 C3
EC 38 13 42
3C 84 E7 D2
After AddRoundKey9
0E CB 3D AF
58 31 32 2E
CE 07 7D 2C
EB 5F 94 B5
After SubBytes10
0E CB 3D AF
31 32 2E 58
7D 2C CE 07
B5 EB 5F 94
After ShiftRows10
D0 C9 E1 B6
14 EE 3F 63
F9 25 0C 0C
A8 89 C8 A6
K10
DE 02 DC 19
25 DC 11 3B
84 09 C2 0B
1D 62 97 32
Output with faults
39 02 DC 19
25 DC 11 6A
84 09 85 0B
1D FB 97 32
Output without fault
E7 00 00 00
00 00 00 51
00 00 47 00
00 99 00 00
Error
⊕
⊕
⊕= =
Input = ’3243F6A8885A308D313198A2E0370734’
Cipher Key =’2B7E151628AED2A6ABF7158809CF4F3C’
Output= ’3925841D02DC09FBDC118597196A0B32’
Reference : P. Dusart, G. Letourneux and O. Vivolo, “Differential Fault Analysis on A.E.S.,” Cryptology ePrint Archive of IACR, No. 010, 2003
7B 40 43 4C
29 D4 70 9F
8A E4 3A 42
CF A5 A6 BC
After Mixcolumns
87 F2 4D 97
6E 4C 90 EC
46 E7 4A C3
A6 8C D8 95
After ShiftRow9
99 F2 4D 97
6E 4C 90 EC
46 E7 4A C3
A6 8C D8 95
Fault injected ‘1E’
AC 19 28 57
77 FA D1 5C
66 DC 29 00
F3 21 41 6E
K9
D7 59 8B 1B
5E 2E A1 C3
EC 38 13 42
3C 84 E7 D2
After AddRoundKey9
0E CB 3D AF
58 31 32 2E
CE 07 7D 2C
EB 5F 94 B5
After SubBytes10
0E CB 3D AF
31 32 2E 58
7D 2C CE 07
B5 EB 5F 94
After ShiftRows10
D0 C9 E1 B6
14 EE 3F 63
F9 25 0C 0C
A8 89 C8 A6
K10
DE 02 DC 19
25 DC 11 3B
84 09 C2 0B
1D 62 97 32
Output with faults
39 02 DC 19
25 DC 11 6A
84 09 85 0B
1D FB 97 32
Output without fault
⊕
⊕
⊕= =
Differential fault analysis(DFA)
E7 00 00 00
00 00 00 51
00 00 47 00
00 99 00 00
Error
Input = ’3243F6A8885A308D313198A2E0370734’
Cipher Key =’2B7E151628AED2A6ABF7158809CF4F3C’
Output= ’3925841D02DC09FBDC118597196A0B32’
Reference : P. Dusart, G. Letourneux and O. Vivolo, “Differential Fault Analysis on A.E.S.,” Cryptology ePrint Archive of IACR, No. 010, 2003
7B 40 43 4C
29 D4 70 9F
8A E4 3A 42
CF A5 A6 BC
After Mixcolumns
Secret Key
4A 32 4D 72 39 33 33 6C
61 54 4E 6B 32 4D 4A 30
WB Engine
Protected Key
49 D8 AD DC 2B AE 89 D1
EE 67 D0 5F CB F3 5C 07
35 2D B4 93 F1 63 D8 51
DC 58 BB DA E0 9A 60 0B
11 6E 12 15 B9 53 0E 66
F6 34 98 43 AC 80 7D F7
DA 02 DF 95 66 21 AE B4
5F 9E 7F 13 75 35 C3 95
5B D6 7A 81 4E 75 7D 55
56 CE 47 69 32 5A 5E D8
12 15 DA E0 2D 2B AE D8
…
Commercial white-box implementation
Secret Key
4A 32 4D 72 39 33 33 6C
61 54 4E 6B 32 4D 4A 30
WB Engine
Protected Key
49 D8 AD DC 2B AE 89 D1
EE 67 D0 5F CB F3 5C 07
35 2D B4 93 F1 63 D8 51
DC 58 BB DA E0 9A 60 0B
11 6E 12 15 B9 53 0E 66
F6 34 98 43 AC 80 7D F7
DA 02 DF 95 66 21 AE B4
5F 9E 7F 13 75 35 C3 95
5B D6 7A 81 4E 75 7D 55
56 CE 47 69 32 5A 5E D8
12 15 DA E0 2D 2B AE D8
…
It's very difficult to recover protected key to plain key
Commercial white-box implementation
• Side channel attacks
• Correlation Power analysis (CPA)
• Differential Fault Analysis (DFA) 

• Control flow visualization
White-box cryptanalysis — existing research
References
- Joppe W. Bos et al. - Differential Computation Analysis: Hiding your White-Box Designs is Not Enough
- Paul Bottinelli and Joppe W. Bos - Computational Aspects of Correlation Power Analysis
- Eloi Sanfelix, Cristofaro Mune, Job de Haas - Unboxing The White-Box: Practical Attacks Against Obfuscated Ciphers
Typical example of a (hardware) power trace of an unprotected AES-128 implementation (one can observe the ten rounds)
Cryptographic primitive
Reference : Kevin Meritt, “Differential Power Analysis attacks on AES”
White-box cryptanalysis — existing research
• Side channel attacks
• Correlation Power analysis (CPA)
• Differential Fault Analysis (DFA) 

• Control flow visualization
References
- Joppe W. Bos et al. - Differential Computation Analysis: Hiding your White-Box Designs is Not Enough
- Paul Bottinelli and Joppe W. Bos - Computational Aspects of Correlation Power Analysis
- Eloi Sanfelix, Cristofaro Mune, Job de Haas - Unboxing The White-Box: Practical Attacks Against Obfuscated Ciphers
Software execution trace with DBI
[.code execution]
start_addr : 000000000400c1b7
end_addr : 000000000400c1d0
instruction info
000000000400c1b7: mov eax, dword ptr [ebp + 8]
000000000400c1ba: add dword ptr [ebx + 0x550], 1
000000000400c1c1: mov edx, dword ptr [eax + 0x228]
000000000400c1c7: mov edi, dword ptr [eax + 0x224]
000000000400c1cd: mov dword ptr [ebp - 0x44], edx
000000000400c1d0: jmp 0x400b3c1
[.mem write]
code_addr : 000000000400c1ba
mem_addr : 0000000004023550
size : 4
data : 30040000
[.mem write]
code_addr : 000000000400c1c1
mem_addr : 0000000004025da8
size : 4
data : 347b0608
[.mem write]
code_addr : 000000000400c1c7
mem_addr : 0000000004025da4
size : 4
data : 38390204
[.mem read]
code_addr : 000000000400c1b7
mem_addr : 00000000beef7470
size : 4
data : 805b0204
[.mem read]
code_addr : 000000000400c1b7
mem_addr : 00000000beef7470
size : 4
data : 805b0204
[.mem read]
code_addr : 000000000400c1ba
mem_addr : 0000000004023550
size : 4
data : 2f040000
Visualized map of open-source WBAES-128
Write
Read
Execution
Memory Address
Time
10 rounds of AES-128 (white-box implementation, opensource)
10 rounds of WBAES-128
rank 1 rank 2 rank 3 rank 4 rank 5 rank 6 rank 7 rank 8 rank 9 rank 10
key 1 0x2b

(2.00538)
0x07 (1.80379) 0xc1 (1.73824) 0xee (1.70429) 0x08 (1.697) 0x0c (1.69357) 0x72 (1.67844) 0x2c (1.67127) 0x81 (1.66722) 0x0a (1.65412)
key 2 0x7e
(2.51091)
0x93 (1.74067) 0x06 (1.68867) 0x02 (1.68841) 0xa8 (1.67424) 0x54 (1.67341) 0x62 (1.67227) 0xb6 (1.66756) 0xe9 (1.66338) 0x86 (1.65473)
key 3 0x15
(2.48606)
0xc8 (1.72634) 0xe4 (1.72553) 0x20 (1.70805) 0x92 (1.69391) 0x74 (1.68563) 0x1e (1.68499) 0x89 (1.67014) 0x43 (1.66724) 0xd6 (1.66098)
key 4 0x16
(2.28568)
0xb5 (1.69677) 0x8f (1.68429) 0xbb (1.67537) 0x45 (1.66008) 0xe9 (1.64984) 0xcf (1.64378) 0xc2 (1.63327) 0x38 (1.61959) 0x6c (1.61645)
key 5 0x28
(2.31281)
0x7d (1.69297) 0x5a (1.69283) 0xc9 (1.69053) 0x8e (1.68747) 0xfb (1.6714) 0xf3 (1.66702) 0x5b (1.6599) 0xaa (1.65702) 0x67 (1.65374)
key 6 0xae
(2.5603)
0x69 (1.73705) 0x8a (1.73109) 0xf5 (1.67828) 0xc4 (1.67624) 0xfe (1.67155) 0xa0 (1.66758) 0xe5 (1.66617) 0x98 (1.6579) 0xb8 (1.65789)
key 7 0xd2
(2.47133)
0xb4 (1.81599) 0x5f (1.75024) 0xe0 (1.74447) 0xa1 (1.73202) 0x5a (1.71384) 0x8b (1.70006) 0x0b (1.69626) 0xcd (1.68755) 0x68 (1.66165)
key 8 0xa6
(1.80113)
0x4b (1.70776) 0x9d (1.69386) 0x2d (1.67404) 0x01 (1.6456) 0x0d (1.64192) 0xbf (1.63917) 0xea (1.63454) 0xe7 (1.62918) 0x3e (1.62822)
key 9 0xab
(2.4717)
0x1d (1.7161) 0xc9 (1.71101) 0xe5 (1.70354) 0x7c (1.69538) 0x77 (1.68859) 0x2f (1.65904) 0xc4 (1.65721) 0xa1 (1.65257) 0x60 (1.64843)
key 10 0xf7
(3.61634)
0xb8 (3.41278) 0xa4 (3.39504) 0x76 (3.38843) 0xc4 (3.38602) 0x17 (3.38253) 0xea (3.37196) 0xbe (3.35624) 0x8b (3.3548) 0x97 (3.33779)
key 11 0x15
(2.02783)
0x16 (1.71121) 0xb6 (1.69905) 0x69 (1.69321) 0xbe (1.69316) 0x7b (1.69135) 0x41 (1.6857) 0x2f (1.67168) 0x91 (1.65783) 0x22 (1.65519)
key 12 0x88
(2.8446)
0x3c (1.75204) 0xe4 (1.70494) 0x52 (1.66283) 0x79 (1.66221) 0x08 (1.64197) 0xb9 (1.62887) 0x40 (1.62375) 0x42 (1.61559) 0xb5 (1.60839)
key 13 0x09
(1.88167)
0x96 (1.71604) 0xf2 (1.68481) 0xb4 (1.68284) 0x0d (1.67969) 0x6d (1.67959) 0x3f (1.67024) 0xaf (1.66383) 0x78 (1.66288) 0xe6 (1.66193)
key 14 0xcf 

(2.3232)
0x19 (1.76684) 0x9a (1.74075) 0x3d (1.72711) 0x03 (1.69709) 0xe2 (1.68798) 0x07 (1.68521) 0xd2 (1.67812) 0x6f (1.67621) 0xca (1.67311)
key 15 0x4f
(2.11058)
0xd7 (1.80632) 0xce (1.71211) 0xad (1.71185) 0x45 (1.70138) 0x0e (1.69954) 0x62 (1.68237) 0x76 (1.67043) 0xc0 (1.66782) 0x48 (1.66293)
key 16 0x3c
(2.22229)
0x97 (1.70098) 0xa7 (1.69181) 0x5d (1.68828) 0x02 (1.67629) 0xea (1.65554) 0x07 (1.65372) 0x7e (1.65026) 0xe6 (1.6479) 0x29 (1.64527)
WBAES-128 key recovery with CPA
Attacks against commercial white-box
Implementations
• Two commercial AES implementations
• Simple-cipher mode for performance
• Complex-cipher mode for security
Commercial white-box ciphers
Commercial white-box ciphers
• Two commercial AES implementations
• Simple-cipher mode for performance
• Complex-cipher mode for security
Write
Read
Execution
Visualized map of simple-cipher
Visualized map of simple-cipher
the round pattern 

not found
• Taint analysis instead of binary-visualization
• Correlation power analysis (CPA)
• Code analysis(reverse engineering)
• Differential fault analysis (DFA)
White-box cryptanalysis — my works
Taint analysis
Object A
Object B
Taint analysis - plaintext trace
Cryptographic primitive
Taint analysis for simple-cipher
0x4200986: (in /lib/i386-linux-gnu/libc-2.21.so)
0x42B34AE: (in /lib/i386-linux-gnu/libc-2.21.so)
0x42B34B3: (in /lib/i386-linux-gnu/libc-2.21.so)
0x42B34B8: (in /lib/i386-linux-gnu/libc-2.21.so)
0x42B34BD: (in /lib/i386-linux-gnu/libc-2.21.so)
…
0x8181ABA: (in Commercial-SimpleWB-AES)
0x8181AC4: (in Commercial-SimpleWB-AES)
0x8181ACC: (in Commercial-SimpleWB-AES)
0x8181AD0: (in Commercial-SimpleWB-AES)
0x8181AE0: (in Commercial-SimpleWB-AES)
0x8181AE4: (in Commercial-SimpleWB-AES)
0x8181AEE: (in Commercial-SimpleWB-AES)
0x8181AF2: (in Commercial-SimpleWB-AES)
0x8181B04: (in Commercial-SimpleWB-AES)
0x8181B08: (in Commercial-SimpleWB-AES)
0x8181B10: (in Commercial-SimpleWB-AES)
0x8181B14: (in Commercial-SimpleWB-AES)
0x8181B24: (in Commercial-SimpleWB-AES)
0x8181B28: (in Commercial-SimpleWB-AES)
0x8181B32: (in Commercial-SimpleWB-AES)
…
Cryptographic
primitive
Cryptographic primitive of simple-cipher
CPA on the simple-cipher
rank 1 rank 2 rank 3 rank 4 rank 5 rank 6 rank 7 rank 8 rank 9 rank 10
key 1
0x4a

(3.55009)
0x6b(3.38731) 0xbe(3.29755) 0x1e(3.29697) 0x2e(3.27285) 0x35(3.27269) 0x65(3.26551) 0x92(3.26066) 0x1d(3.25067) 0x58(3.24932)
key 2 0x32

(4.34452)
0xd0(3.35588) 0xe8(3.31946) 0xcc(3.30517) 0x78(3.29646) 0xdf(3.28295) 0x17(3.27702) 0x64(3.27235) 0x79(3.26674) 0x8a(3.26442)
key 3 0x4d

(3.82747)
0xcc(3.31759) 0x23(3.29281) 0x91(3.28571) 0xb9(3.28026) 0xb3(3.27443) 0x4e(3.2596) 0xa2(3.25797) 0x8f(3.25309) 0x04(3.24456)
key 4 0x72

(3.64867)
0x38(3.35217) 0xdf(3.3211) 0x2f(3.31467) 0xae(3.30714) 0xa1(3.30303) 0xf8(3.28997) 0xd3(3.28245) 0x1b(3.26429) 0x8b(3.26017)
key 5 0x39

(4.1895)
0xc4(3.43936) 0xbb(3.32822) 0x8b(3.32537) 0x7c(3.31265) 0x8e(3.30741) 0x13(3.30152) 0x69(3.299) 0x9e(3.28805) 0x89(3.28379)
key 6 0x33

(3.62186)
0x2d(3.38423) 0xa8(3.31917) 0xb8(3.30849) 0x72(3.28712) 0x48(3.28305) 0x96(3.27886) 0x4d(3.27446) 0x23(3.27344) 0x9a(3.27234)
key 7 0x33

(4.26236)
0xda(3.30169) 0xc8(3.28577) 0x23(3.28246) 0x5f(3.26833) 0x17(3.26592) 0xd3(3.26428) 0xe6(3.26389) 0x64(3.25394) 0x85(3.24545)
key 8 0x6c

(3.61456)
0x21(3.35728) 0xba(3.3402) 0xb3(3.32199) 0x65(3.29623) 0xaf(3.27848) 0x1f(3.27791) 0x61(3.27659) 0x44(3.27522) 0xc6(3.26389)
key 9 0x61

(4.19043)
0x8d(3.33732) 0x68(3.32288) 0x5f(3.30976) 0x1e(3.28015) 0xeb(3.27355) 0x96(3.26578) 0x13(3.26007) 0x0c(3.25348) 0xc0(3.25069)
key 10 0x54

(3.66626)
0x42(3.45208) 0xd6(3.38613) 0x5d(3.37338) 0x3f(3.3665) 0xbc(3.34422) 0x3a(3.33917) 0xed(3.33183) 0x2d(3.32099) 0x14(3.3029)
key 11 0x4e

(3.71877)
0x74(3.32473) 0x39(3.32183) 0xee(3.30932) 0x52(3.30156) 0x68(3.27952) 0x7b(3.27918) 0x1a(3.27585) 0x30(3.25335) 0x16(3.25267)
key 12 0x6b

(3.65183)
0xab(3.45354) 0x28(3.34018) 0xbc(3.33583) 0xc1(3.33411) 0x02(3.31736) 0x07(3.28696) 0x13(3.27714) 0x75(3.27475) 0xc0(3.26212)
key 13 0x32

(3.65053)
0x15(3.38309) 0x72(3.29484) 0xe9(3.28438) 0x88(3.28182) 0x52(3.25202) 0x95(3.24498) 0x6c(3.24336) 0x2d(3.24149) 0xc7(3.22936)
key 14 0x4d

(3.4734)
0x7d(3.31076) 0xcd(3.30883) 0x8e(3.30059) 0x5f(3.28006) 0x0b(3.27518) 0x10(3.26867) 0xee(3.26289) 0x7b(3.2615) 0x1a(3.24988)
key 15 0x4a

(3.65855)
0x0a(3.30734) 0x89(3.29788) 0xaf(3.29663) 0xf0(3.2857) 0xf1(3.28402) 0xcd(3.26806) 0x48(3.26561) 0xc8(3.26545) 0x87(3.25869)
key 16 0x30

(4.20028)
0xc0(3.36153) 0xce(3.3276) 0x2c(3.32361) 0xe9(3.30428) 0x7b(3.29937) 0x8f(3.29511) 0x4e(3.29502) 0x1c(3.28909) 0xd6(3.27938)
Commercial white-box ciphers
• Two commercial AES implementations
• Simple-cipher mode for performance
• Complex-cipher mode for security
Visualized map of complex-cipher
Plaintext trace on the complex-cipher
Ciphertext
Plaintext
• Taint analysis instead of binary-visualization
• Correlation power analysis (CPA)
• Code analysis(reverse engineering)
• Differential fault analysis (DFA)
White-box cryptanalysis — my works
Visualized map of complex-cipher
Cryptographic primitive ?
• Taint analysis instead of binary-visualization
• Correlation power analysis (CPA)
• Code analysis(reverse engineering)
• Differential fault analysis (DFA)
White-box cryptanalysis — my works
Code analysis for complex-cipher
Key recovery attacks against commercial white-box cryptography implementations by Sanghwan Ahn
Complex-cipher control flow
Function B
Function A
Plaintext
Ciphertext
Repeats many times
White-box table in complex-cipher
• Taint analysis instead of binary-visualization
• Correlation power analysis (CPA)
• Code analysis(reverse engineering)
• Differential fault analysis (DFA)
White-box cryptanalysis — my works
White-box table in complex-cipher
1 byte flip; 0xBD→ 0x34
White-box table in complex-cipher
Faulty ciphertext
h2spice@ubuntu:~/Documents/WBC/Commercial/DFA/complexWB-AES$ 

./complexWB-AES testtesttesttest
6CB721A5633DFD7F94A6474524789026 ← normal cipher-text

h2spice@ubuntu:~/Documents/WBC/Commercial/DFA/complexWB-AES$ 

./complexWB-AES-mod testtesttesttest
FF1E4C03844DD800CE9CF34C6B7EEAE8 ← faulty cipher-text
DFA on complex-cipher
Plaintext(in hex)
0x74657374746573747465737474657374
Correct ciphertext
0x6CB721A5633DFD7F94A6474524789026
Good faulty ciphertexts
0x8EB721A5633DFDB794A61E4524359026
0x6CD921A5113DFD7F94A6479824786026
0x6CB740A563C5FD7F8BA64745247890A8
0x6CB72161633DA97F94A447453D789026
… other 625 good faulty ciphertext
Final round key 0x5CB2FAF4F3FB94543BFA87DFE92660FC
Final round key 0x5CB2FAF4F3FB94543BFA87DFE92660FC
Round 9 key 0xEC26DC41AF496EA0C801138BD2DCE723
Round 8 key 0x36991EE3436FB2E167487D2B1ADDF4A8
Round 7 key 0x9C3EF21C75F6AC022427CFCA7D958983
Round 6 key 0xEB64C9D7E9C85E1E51D163C859B24649
Round 5 key 0x305BC5E702AC97C9B8193DD608632581
Round 4 key 0xFAF69E0032F7522EBAB5AA1FB07A1857
Round 3 key 0x78C1CC67C801CC2E8842F8310ACFB248
Round 2 key 0x21177A74B0C000494043341F828D4A79
Round 1 key 0xA8E4495191D77A3DF0833456C2CE7E66
Secret key 0x4A324D723933336C61544E6B324D4A30
DFA on complex-cipher
In conclusion
The way to use WBC safer in apps
• No single key for everything
• No hardcoded key(protected key)
• No static IV
• External encoding
• Asymmetric crypto algorithm based on WBC
• RSA, Elliptic curves, Diffie–Hellman
• Tamper resistant embedded integrity checksums
• Cryptographic key device binding
• device identifier + user identifier + external identifier(e,g, pin, biometric)
Device binding
• Device Identifier
• User Identifier
• External Identifier

(e,g, pin, biometric)
Future works
• White-box version of crypto libraries
• Retrieve a master key embedded white-box engine
• Since the vulnerabilities have already been fixed, 

I will focus on finding other vulnerability.
Thank you
if you have any question, feel free to contact me
e-mail : h2spice@gmail.com

facebook, twitter : @h2spice

More Related Content

PDF
An introduction to X.509 certificates
PPTX
Cryptography
PDF
Apache spark-the-definitive-guide-excerpts-r1
PDF
Asymmetric Cryptography
PDF
wolfSSL and TLS 1.3
PDF
Blockchain Explained | Blockchain Simplified | Blockchain Technology | Blockc...
PPTX
Thick client pentesting_the-hackers_meetup_version1.0pptx
PPTX
Blockchain - HyperLedger Fabric
An introduction to X.509 certificates
Cryptography
Apache spark-the-definitive-guide-excerpts-r1
Asymmetric Cryptography
wolfSSL and TLS 1.3
Blockchain Explained | Blockchain Simplified | Blockchain Technology | Blockc...
Thick client pentesting_the-hackers_meetup_version1.0pptx
Blockchain - HyperLedger Fabric

What's hot (20)

PDF
The Security Code Review Guide
PDF
Vault 101
PPTX
Cryptography and Network Security
PDF
暗認本読書会9
PPTX
Cryptography
PPTX
PPT
UNIT3_class (1).ppt CRYPTOGRAPHY NOTES AND NETWORK
PPTX
Inetsecurity.in Ethical Hacking presentation
PPTX
What makes blockchain secure: Key Characteristics & Security Architecture
PDF
SSL intro
PPTX
Dask: Scaling Python
PPTX
Catch Me If You Can: PowerShell Red vs Blue
PDF
A Threat Hunter Himself
PDF
Introduction to Cryptography
PDF
Decentralized Identifier (DIDs) fundamentals deep dive
PPT
6. cryptography
PPT
Digital signature algorithm (de la cruz, genelyn).ppt 2
PDF
Introduction to JWT and How to integrate with Spring Security
PPTX
The Travelling Pentester: Diaries of the Shortest Path to Compromise
The Security Code Review Guide
Vault 101
Cryptography and Network Security
暗認本読書会9
Cryptography
UNIT3_class (1).ppt CRYPTOGRAPHY NOTES AND NETWORK
Inetsecurity.in Ethical Hacking presentation
What makes blockchain secure: Key Characteristics & Security Architecture
SSL intro
Dask: Scaling Python
Catch Me If You Can: PowerShell Red vs Blue
A Threat Hunter Himself
Introduction to Cryptography
Decentralized Identifier (DIDs) fundamentals deep dive
6. cryptography
Digital signature algorithm (de la cruz, genelyn).ppt 2
Introduction to JWT and How to integrate with Spring Security
The Travelling Pentester: Diaries of the Shortest Path to Compromise
Ad

Similar to Key recovery attacks against commercial white-box cryptography implementations by Sanghwan Ahn (20)

PDF
Ahn pacsec2017 key-recovery_attacks_against_commercial_white-box_cryptography...
PDF
Practical attacks on commercial white-box cryptography solutions
PPT
IDS-ETHZ - NSG-IDS-REPORTING_of_year_2015
PPT
2007 Tidc India Profiling
PPTX
A New Framework for Detection
PDF
Blockchain, cryptography and tokens — NYC Bar presentation
PDF
Xbfs HPDC'2019
PDF
BERserk: New RSA Signature Forgery Attack
PDF
Spectre(v1%2 fv2%2fv4) v.s. meltdown(v3)
PDF
23_Advanced_Processors controller system
PPT
simple notes for ug students for college
PPTX
Let's talks about string operations in C++17
PPTX
Klessydra t - designing vector coprocessors for multi-threaded edge-computing...
PDF
Sourcefire Vulnerability Research Team Labs
PDF
Scaling Down Instrumentation Deploying Analog Mixed Signal Technology
PPTX
MaPU-HPCA2016
PDF
BlinkDB and G-OLA: Supporting Continuous Answers with Error Bars in SparkSQL-...
PDF
Whose Stack Is It Anyway?
PDF
Cryptography and secure systems
PDF
Mixed Scanning and DFT Techniques for Arithmetic Core
Ahn pacsec2017 key-recovery_attacks_against_commercial_white-box_cryptography...
Practical attacks on commercial white-box cryptography solutions
IDS-ETHZ - NSG-IDS-REPORTING_of_year_2015
2007 Tidc India Profiling
A New Framework for Detection
Blockchain, cryptography and tokens — NYC Bar presentation
Xbfs HPDC'2019
BERserk: New RSA Signature Forgery Attack
Spectre(v1%2 fv2%2fv4) v.s. meltdown(v3)
23_Advanced_Processors controller system
simple notes for ug students for college
Let's talks about string operations in C++17
Klessydra t - designing vector coprocessors for multi-threaded edge-computing...
Sourcefire Vulnerability Research Team Labs
Scaling Down Instrumentation Deploying Analog Mixed Signal Technology
MaPU-HPCA2016
BlinkDB and G-OLA: Supporting Continuous Answers with Error Bars in SparkSQL-...
Whose Stack Is It Anyway?
Cryptography and secure systems
Mixed Scanning and DFT Techniques for Arithmetic Core
Ad

More from CODE BLUE (20)

PDF
[cb22] Hayabusa Threat Hunting and Fast Forensics in Windows environments fo...
PDF
[cb22] Tales of 5G hacking by Karsten Nohl
PDF
[cb22] Your Printer is not your Printer ! - Hacking Printers at Pwn2Own by A...
PDF
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...
PDF
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(4) by 板橋 博之
PDF
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...
PDF
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(3) by Lorenzo Pupillo
PDF
[cb22] ”The Present and Future of Coordinated Vulnerability Disclosure” Inte...
PDF
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(2)by Allan Friedman
PDF
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...
PDF
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション (1)by 高橋 郁夫
PDF
[cb22] Are Embedded Devices Ready for ROP Attacks? -ROP verification for low-...
PPTX
[cb22] Wslinkのマルチレイヤーな仮想環境について by Vladislav Hrčka
PPTX
[cb22] Under the hood of Wslink’s multilayered virtual machine en by Vladisla...
PDF
[cb22] CloudDragon’s Credential Factory is Powering Up Its Espionage Activiti...
PDF
[cb22] From Parroting to Echoing: The Evolution of China’s Bots-Driven Info...
PDF
[cb22] Who is the Mal-Gopher? - Implementation and Evaluation of “gimpfuzzy”...
PDF
[cb22] Mal-gopherとは?Go系マルウェアの分類のためのgimpfuzzy実装と評価 by 澤部 祐太, 甘粕 伸幸, 野村 和也
PDF
[cb22] Tracking the Entire Iceberg - Long-term APT Malware C2 Protocol Emulat...
PDF
[cb22] Fight Against Malware Development Life Cycle by Shusei Tomonaga and Yu...
[cb22] Hayabusa Threat Hunting and Fast Forensics in Windows environments fo...
[cb22] Tales of 5G hacking by Karsten Nohl
[cb22] Your Printer is not your Printer ! - Hacking Printers at Pwn2Own by A...
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(4) by 板橋 博之
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(3) by Lorenzo Pupillo
[cb22] ”The Present and Future of Coordinated Vulnerability Disclosure” Inte...
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(2)by Allan Friedman
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション (1)by 高橋 郁夫
[cb22] Are Embedded Devices Ready for ROP Attacks? -ROP verification for low-...
[cb22] Wslinkのマルチレイヤーな仮想環境について by Vladislav Hrčka
[cb22] Under the hood of Wslink’s multilayered virtual machine en by Vladisla...
[cb22] CloudDragon’s Credential Factory is Powering Up Its Espionage Activiti...
[cb22] From Parroting to Echoing: The Evolution of China’s Bots-Driven Info...
[cb22] Who is the Mal-Gopher? - Implementation and Evaluation of “gimpfuzzy”...
[cb22] Mal-gopherとは?Go系マルウェアの分類のためのgimpfuzzy実装と評価 by 澤部 祐太, 甘粕 伸幸, 野村 和也
[cb22] Tracking the Entire Iceberg - Long-term APT Malware C2 Protocol Emulat...
[cb22] Fight Against Malware Development Life Cycle by Shusei Tomonaga and Yu...

Recently uploaded (20)

PDF
AI Guide for Business Growth - Arna Softech
PDF
Guide to Food Delivery App Development.pdf
PDF
Visual explanation of Dijkstra's Algorithm using Python
PDF
How Tridens DevSecOps Ensures Compliance, Security, and Agility
DOCX
How to Use SharePoint as an ISO-Compliant Document Management System
PPTX
CNN LeNet5 Architecture: Neural Networks
PPTX
Computer Software - Technology and Livelihood Education
PPTX
Cybersecurity: Protecting the Digital World
PDF
AI/ML Infra Meetup | Beyond S3's Basics: Architecting for AI-Native Data Access
PPTX
Trending Python Topics for Data Visualization in 2025
PDF
Introduction to Ragic - #1 No Code Tool For Digitalizing Your Business Proces...
PDF
MCP Security Tutorial - Beginner to Advanced
PDF
Top 10 Software Development Trends to Watch in 2025 🚀.pdf
PPTX
Lecture 5 Software Requirement Engineering
PDF
Workplace Software and Skills - OpenStax
PDF
Multiverse AI Review 2025: Access All TOP AI Model-Versions!
PPTX
Full-Stack Developer Courses That Actually Land You Jobs
PPTX
Cybersecurity-and-Fraud-Protecting-Your-Digital-Life.pptx
PDF
EaseUS PDF Editor Pro 6.2.0.2 Crack with License Key 2025
PDF
CCleaner 6.39.11548 Crack 2025 License Key
AI Guide for Business Growth - Arna Softech
Guide to Food Delivery App Development.pdf
Visual explanation of Dijkstra's Algorithm using Python
How Tridens DevSecOps Ensures Compliance, Security, and Agility
How to Use SharePoint as an ISO-Compliant Document Management System
CNN LeNet5 Architecture: Neural Networks
Computer Software - Technology and Livelihood Education
Cybersecurity: Protecting the Digital World
AI/ML Infra Meetup | Beyond S3's Basics: Architecting for AI-Native Data Access
Trending Python Topics for Data Visualization in 2025
Introduction to Ragic - #1 No Code Tool For Digitalizing Your Business Proces...
MCP Security Tutorial - Beginner to Advanced
Top 10 Software Development Trends to Watch in 2025 🚀.pdf
Lecture 5 Software Requirement Engineering
Workplace Software and Skills - OpenStax
Multiverse AI Review 2025: Access All TOP AI Model-Versions!
Full-Stack Developer Courses That Actually Land You Jobs
Cybersecurity-and-Fraud-Protecting-Your-Digital-Life.pptx
EaseUS PDF Editor Pro 6.2.0.2 Crack with License Key 2025
CCleaner 6.39.11548 Crack 2025 License Key

Key recovery attacks against commercial white-box cryptography implementations by Sanghwan Ahn

  • 1. The Key Recovery Attacks against Commercial White-box cryptography Implementations Sanghwan Ahn | LINE Corporation CodeBlue 2017 —Tokyo — Nov 7, 2017
  • 2. About me • Ahn Sanghwan(@h2spice) • LINE corporation • Senior security engineer
 • Security research and development • SecuInside 2013 “How to find vulnerability in software” • Intertrust and LINE Security summit, KimchiCon, PacSec, CodeBlue, HITCON 2017 “Key recovery attacks against commercial white-box cryptography implementations” 

  • 3. Outline • Introduction • White-box Cryptography(WBC) • Existing attacks against published white-box implementations • Attacks against commercial white-box Implementations • Conclusion
  • 5. Application security Digital rights management - Data encryption - Watermarks - Signature End-to-End Encryption Digital signature Payment tokenization - Easy payment service - Masking sensitive data Transport layer protection - SSL/TLS Authentication(id/password, biometric) + 2-Factor-Authentication(SMS, Call, OTP), FIDO
  • 6. Attacking end-point directly Digital rights management - Data encryption - Watermarks - Signature Tamper resistant - Anti-debug - Integrity - Obfuscation End-to-End Encryption Digital signature Payment tokenization - Easy payment service - Masking sensitive data Transport layer protection - SSL/TLS Authentication(id/password, biometric) + 2-Factor-Authentication(SMS, Call, OTP), FIDO Mallory
  • 7. Mallory own devices Mallory Bob The person who purchased the device or content is attacking it
  • 8. • Binary is completely visible to an attacker • Attacker has full access to the cryptography algorithm • Attacker has full control over its execution environment • Unlimited amount of queries • Static Analysis • Code Analysis(reverse engineering)
 • Dynamic Analysis • Debugging • DBI(dynamic binary instrumentation) White-box threat model
  • 9. • Trusted execution environment(TEE) • ARM Trustzone, Intel SGX, AMD Memory Encryption • It’s almost safe, but not many supported devices 
 (mostly latest devices) • White-box cryptography(WBC) • All academic WBC solutions have been broken. • No attack has been observed to date on commercial WBC
 Solutions for white-box threat model Virtual 
 Black box
  • 12. Key partial evaluation Key S INPUT x (0-255) Sbox ( x ⊕ key ) Tbox
  • 13. 
 unsigned int Tboxes[9][16][256] = { /*First Round, K[0] is 0x6c*/ { 0xf05050a0, 0x443c3c78, 0xba9f9f25, 0xe3a8a84b, 0xcf45458a, 0x10f9f9e9, 0x06020204, 0x817f7ffe, 0xc5434386, 0xd74d4d9a, 0x55333366, 0x94858511, 0x6bd0d0bb, 0x2aefefc5, 0xe5aaaa4f, 0x16fbfbed, 0x30101020, 0x1affffe5, 0x0ef3f3fd, 0x6dd2d2bf, 0xdfbcbc63, 0xc1b6b677, 0x75dadaaf, 0x63212142, 0xad92923f, 0xbc9d9d21, 0x48383870, 0x04f5f5f1, 0xf35151a2, 0xfea3a35d, 0xc0404080, 0x8a8f8f05, 0x7b292952, 0x3ee3e3dd, 0x712f2f5e, 0x97848413, 0xf65252a4, 0x4d3b3b76, 0x61d6d6b7, 0xceb3b37d, 0x2d1b1b36, 0xb26e6edc, 0xee5a5ab4, 0xfba0a05b, 0x1b090912, 0x9e83831d, 0x742c2c58, 0x2e1a1a34, 0xde4a4a94, 0xd44c4c98, 0xe85858b0, 0x4acfcf85, 0xbe6a6ad4, 0x46cbcb8d, 0xd9bebe67, 0x4b393972, 0x60202040, 0x1ffcfce3, 0xc8b1b179, 0xed5b5bb6, 0xf55353a6, 0x68d1d1b9, 0x00000000, 0x2cededc1, 0x937171e2, 0x73d8d8ab, 0x53313162, 0x3f15152a, 0x5c343468, 0xf4a5a551, 0x34e5e5d1, 0x08f1f1f9, 0x5a36366c, 0x413f3f7e, 0x02f7f7f5, 0x4fcccc83, 0xc2b7b775, 0x1cfdfde1, 0xae93933d, 0x6a26264c, 0x26ebebcd, 0x6927274e, 0xcdb2b27f, 0x9f7575ea, 0x0907070e, 0x36121224, 0x9b80801b, 0x3de2e2df, 0x28181830, 0xa1969637, 0x0f05050a, 0xb59a9a2f, 0x0c040408, 0x52c7c795, 0x65232346, 0x5ec3c39d, 0x19fefee7, 0x62d7d7b5, 0xe6abab4d, 0x9a7676ec, 0x50303060, 0x03010102, 0xa96767ce, 0x7d2b2b56, 0x0df2f2ff, 0xbd6b6bd6, 0xb16f6fde, 0x54c5c591, 0xa56363c6, 0x847c7cf8, 0x997777ee, 0x8d7b7bf6, 0xbf9c9c23, 0xf7a4a453, 0x967272e4, 0x5bc0c09b, 0xecadad41, 0x67d4d4b3, 0xfda2a25f, 0xeaafaf45, 0x15fafaef, 0xeb5959b2, 0xc947478e, 0x0bf0f0fb, 0x45caca8f, 0x9d82821f, 0x40c9c989, 0x877d7dfa, 0x49cece87, 0xff5555aa, 0x78282850, 0x7adfdfa5, 0xb69b9b2d, 0x221e1e3c, 0x92878715, 0x20e9e9c9, 0xbb6969d2, 0x70d9d9a9, 0x898e8e07, 0xa7949433, 0x38e1e1d9, 0x13f8f8eb, 0xb398982b, 0x33111122, 0xcbb0b07b, 0xfc5454a8, 0xd6bbbb6d, 0x3a16162c, 0xc3414182, 0xb0999929, 0x772d2d5a, 0x110f0f1e, 0xdabfbf65, 0x31e6e6d7, 0xc6424284, 0xb86868d0, 0x8f8c8c03, 0xf8a1a159, 0x80898909, 0x170d0d1a, 0xdd4b4b96, 0xdcbdbd61, 0x868b8b0d, 0x858a8a0f, 0x23e8e8cb, 0x7cdddda1, 0x9c7474e8, 0x211f1f3e, 0x241c1c38, 0xf1a6a657, 0xc7b4b473, 0x51c6c697, 0xd5baba6f, 0x887878f0, 0x6f25254a, 0x722e2e5c, 0x91868617, 0x58c1c199, 0x271d1d3a, 0xb99e9e27, 0xa36161c2, 0x5f35356a, 0xf95757ae, 0xd0b9b969, 0xd8484890, 0x05030306, 0x01f6f6f7, 0x120e0e1c, 0x907070e0, 0x423e3e7c, 0xc4b5b571, 0xaa6666cc, 0xa8919139, 0xa4959531, 0x37e4e4d3, 0x8b7979f2, 0x5dc2c29f, 0x6ed3d3bd, 0xefacac43, 0xa66262c4, 0xdb494992, 0x0a06060c, 0x6c242448, 0xe45c5cb8, 0x3be0e0db, 0x56323264, 0x4e3a3a74, 0x1e0a0a14, 0xaf6565ca, 0x8e7a7af4, 0xe9aeae47, 0x18080810, 0xb46c6cd8, 0xfa5656ac, 0x07f4f4f3, 0x25eaeacf, 0x8c8d8d01, 0x64d5d5b1, 0xd24e4e9c, 0xe0a9a949, 0x32e7e7d5, 0x43c8c88b, 0x5937376e, 0xb76d6dda, 0xac6464c8, 0xe75d5dba, 0x2b191932, 0x957373e6, 0x57c4c493, 0xf2a7a755, 0x827e7efc, 0x473d3d7a, 0xe15f5fbe, 0xa2979735, 0xcc444488, 0x3917172e, 0x4ccdcd81, 0x140c0c18, 0x35131326, 0x2fececc3, 0x79dedea7, 0xe25e5ebc, 0x1d0b0b16, 0x76dbdbad, 0xca46468c, 0x29eeeec7, 0xd3b8b86b, 0x3c141428, 0x66222244, 0x7e2a2a54, 0xab90903b, 0x8388880b, 0xa06060c0, 0x98818119, 0xd14f4f9e, 0x7fdcdca3 }, ...
  • 14. Table based AES implementation T-Box XOR Table ShiftRows AddRoundKey SubByte MixColumns Data flow for round one of table based AES 128 implementation, 2-9 rounds are the same.
  • 15. Example code Reference : https://github.com/0vercl0k/stuffz/tree/master/wbaes_attack/wbaes128
  • 17. Encoding A1 A0 -1 T1 A2 A1 -1 T2 An An-1 -1 Tn IN A0 An -1 OUT … Obfuscated Table, Tn’ A * A-1 = I(identity matrix) Canceled Canceled Canceled Canceled
  • 18. WB-AES implementation - internal encoding XOR Table XOR Table Internal Decoding
 it cancels encoding in the previous round T’Box Internal Encoding
 it will be canceled in the next round T’Box transformed 
 With Mixing Bijection
 it will be canceled in the next transformation Data flow for second round of table based AES 128 implementation.
  • 19. WB-AES implementation - external encoding First 
 round Input Sender White-box Decode 
 the input Final 
 round Encode 
 the output Output Receiver Decode the output Encode 
 the input
  • 22. Existing attacks against 
 published white-box implementations
  • 23. Possible attacks : table-decomposition Ciphertext Plaintext WBC f(…) Table decomposition function
  • 24. Possible attacks : power analysis Ciphertext Plaintext WBC Recode intermediate computation result And then compare it 
 and simulated data ShiftRows SubBytes MixColumns AddRoundKey Ciphertext PlaintextKey Simulator
  • 25. Typical example of a (hardware) power trace of an unprotected AES-128 implementation (one can observe the ten rounds) Power analysis on the hardware Reference : Joppe W. Bos et al. - Differential Computation Analysis: Hiding your White-Box Designs is Not Enough
  • 26. Typical example of a (hardware) power trace of an unprotected AES-128 implementation (one can observe the ten rounds) Power analysis on the hardware Reference : Joppe W. Bos et al. - Differential Computation Analysis: Hiding your White-Box Designs is Not Enough
  • 27. Typical example of a portion of a serialized software trace of stack writes in an WBAES-128, with only two possible values: 0 or 1 Power analysis on the software Reference : Joppe W. Bos et al. - Differential Computation Analysis: Hiding your White-Box Designs is Not Enough
  • 28. The correlation between the sensitive data and the power consumption for the 256 key guesses for a single byte Correlation power analysis(CPA) Reference : W. Hnath, J. Pettengill, “Differential Power Analysis Side-Channel Attacks in Cryptography,” Major Qualifying Project, Worcester Polytechnic Institute, April 2010
  • 29. The correlation between the sensitive data and the power consumption for the 256 key guesses for 16 byte Correlation power analysis(CPA) Reference : W. Hnath, J. Pettengill, “Differential Power Analysis Side-Channel Attacks in Cryptography,” Major Qualifying Project, Worcester Polytechnic Institute, April 2010
  • 30. Possible attacks : fault analysis Faulty Ciphertext
 (incorrect result) Plaintext WBC Ciphertext(correct result) Plaintext WBC 1. Modify intermediate data 2. Record changes to the output 3, Compare incorrect result and correct result
  • 31. Differential fault analysis(DFA) 87 F2 4D 97 6E 4C 90 EC 46 E7 4A C3 A6 8C D8 95 After ShiftRow9 99 F2 4D 97 6E 4C 90 EC 46 E7 4A C3 A6 8C D8 95 Fault injected ‘1E’ 7B 40 43 4C 29 D4 70 9F 8A E4 3A 42 CF A5 A6 BC After Mixcolumns AC 19 28 57 77 FA D1 5C 66 DC 29 00 F3 21 41 6E K9 D7 59 8B 1B 5E 2E A1 C3 EC 38 13 42 3C 84 E7 D2 After AddRoundKey9 0E CB 3D AF 58 31 32 2E CE 07 7D 2C EB 5F 94 B5 After SubBytes10 0E CB 3D AF 31 32 2E 58 7D 2C CE 07 B5 EB 5F 94 After ShiftRows10 D0 C9 E1 B6 14 EE 3F 63 F9 25 0C 0C A8 89 C8 A6 K10 DE 02 DC 19 25 DC 11 3B 84 09 C2 0B 1D 62 97 32 Output with faults 39 02 DC 19 25 DC 11 6A 84 09 85 0B 1D FB 97 32 Output without fault ⊕ ⊕ = Input = ’3243F6A8885A308D313198A2E0370734’ Cipher Key =’2B7E151628AED2A6ABF7158809CF4F3C’ Output= ’3925841D02DC09FBDC118597196A0B32’ Reference : P. Dusart, G. Letourneux and O. Vivolo, “Differential Fault Analysis on A.E.S.,” Cryptology ePrint Archive of IACR, No. 010, 2003
  • 32. Differential fault analysis(DFA) 87 F2 4D 97 6E 4C 90 EC 46 E7 4A C3 A6 8C D8 95 After ShiftRow9 99 F2 4D 97 6E 4C 90 EC 46 E7 4A C3 A6 8C D8 95 Fault injected ‘1E’ AC 19 28 57 77 FA D1 5C 66 DC 29 00 F3 21 41 6E K9 D7 59 8B 1B 5E 2E A1 C3 EC 38 13 42 3C 84 E7 D2 After AddRoundKey9 0E CB 3D AF 58 31 32 2E CE 07 7D 2C EB 5F 94 B5 After SubBytes10 0E CB 3D AF 31 32 2E 58 7D 2C CE 07 B5 EB 5F 94 After ShiftRows10 D0 C9 E1 B6 14 EE 3F 63 F9 25 0C 0C A8 89 C8 A6 K10 DE 02 DC 19 25 DC 11 3B 84 09 C2 0B 1D 62 97 32 Output with faults 39 02 DC 19 25 DC 11 6A 84 09 85 0B 1D FB 97 32 Output without fault E7 00 00 00 00 00 00 51 00 00 47 00 00 99 00 00 Error ⊕ ⊕ ⊕= = Input = ’3243F6A8885A308D313198A2E0370734’ Cipher Key =’2B7E151628AED2A6ABF7158809CF4F3C’ Output= ’3925841D02DC09FBDC118597196A0B32’ Reference : P. Dusart, G. Letourneux and O. Vivolo, “Differential Fault Analysis on A.E.S.,” Cryptology ePrint Archive of IACR, No. 010, 2003 7B 40 43 4C 29 D4 70 9F 8A E4 3A 42 CF A5 A6 BC After Mixcolumns
  • 33. 87 F2 4D 97 6E 4C 90 EC 46 E7 4A C3 A6 8C D8 95 After ShiftRow9 99 F2 4D 97 6E 4C 90 EC 46 E7 4A C3 A6 8C D8 95 Fault injected ‘1E’ AC 19 28 57 77 FA D1 5C 66 DC 29 00 F3 21 41 6E K9 D7 59 8B 1B 5E 2E A1 C3 EC 38 13 42 3C 84 E7 D2 After AddRoundKey9 0E CB 3D AF 58 31 32 2E CE 07 7D 2C EB 5F 94 B5 After SubBytes10 0E CB 3D AF 31 32 2E 58 7D 2C CE 07 B5 EB 5F 94 After ShiftRows10 D0 C9 E1 B6 14 EE 3F 63 F9 25 0C 0C A8 89 C8 A6 K10 DE 02 DC 19 25 DC 11 3B 84 09 C2 0B 1D 62 97 32 Output with faults 39 02 DC 19 25 DC 11 6A 84 09 85 0B 1D FB 97 32 Output without fault ⊕ ⊕ ⊕= = Differential fault analysis(DFA) E7 00 00 00 00 00 00 51 00 00 47 00 00 99 00 00 Error Input = ’3243F6A8885A308D313198A2E0370734’ Cipher Key =’2B7E151628AED2A6ABF7158809CF4F3C’ Output= ’3925841D02DC09FBDC118597196A0B32’ Reference : P. Dusart, G. Letourneux and O. Vivolo, “Differential Fault Analysis on A.E.S.,” Cryptology ePrint Archive of IACR, No. 010, 2003 7B 40 43 4C 29 D4 70 9F 8A E4 3A 42 CF A5 A6 BC After Mixcolumns
  • 34. Secret Key 4A 32 4D 72 39 33 33 6C 61 54 4E 6B 32 4D 4A 30 WB Engine Protected Key 49 D8 AD DC 2B AE 89 D1 EE 67 D0 5F CB F3 5C 07 35 2D B4 93 F1 63 D8 51 DC 58 BB DA E0 9A 60 0B 11 6E 12 15 B9 53 0E 66 F6 34 98 43 AC 80 7D F7 DA 02 DF 95 66 21 AE B4 5F 9E 7F 13 75 35 C3 95 5B D6 7A 81 4E 75 7D 55 56 CE 47 69 32 5A 5E D8 12 15 DA E0 2D 2B AE D8 … Commercial white-box implementation
  • 35. Secret Key 4A 32 4D 72 39 33 33 6C 61 54 4E 6B 32 4D 4A 30 WB Engine Protected Key 49 D8 AD DC 2B AE 89 D1 EE 67 D0 5F CB F3 5C 07 35 2D B4 93 F1 63 D8 51 DC 58 BB DA E0 9A 60 0B 11 6E 12 15 B9 53 0E 66 F6 34 98 43 AC 80 7D F7 DA 02 DF 95 66 21 AE B4 5F 9E 7F 13 75 35 C3 95 5B D6 7A 81 4E 75 7D 55 56 CE 47 69 32 5A 5E D8 12 15 DA E0 2D 2B AE D8 … It's very difficult to recover protected key to plain key Commercial white-box implementation
  • 36. • Side channel attacks • Correlation Power analysis (CPA) • Differential Fault Analysis (DFA) 
 • Control flow visualization White-box cryptanalysis — existing research References - Joppe W. Bos et al. - Differential Computation Analysis: Hiding your White-Box Designs is Not Enough - Paul Bottinelli and Joppe W. Bos - Computational Aspects of Correlation Power Analysis - Eloi Sanfelix, Cristofaro Mune, Job de Haas - Unboxing The White-Box: Practical Attacks Against Obfuscated Ciphers
  • 37. Typical example of a (hardware) power trace of an unprotected AES-128 implementation (one can observe the ten rounds) Cryptographic primitive Reference : Kevin Meritt, “Differential Power Analysis attacks on AES”
  • 38. White-box cryptanalysis — existing research • Side channel attacks • Correlation Power analysis (CPA) • Differential Fault Analysis (DFA) 
 • Control flow visualization References - Joppe W. Bos et al. - Differential Computation Analysis: Hiding your White-Box Designs is Not Enough - Paul Bottinelli and Joppe W. Bos - Computational Aspects of Correlation Power Analysis - Eloi Sanfelix, Cristofaro Mune, Job de Haas - Unboxing The White-Box: Practical Attacks Against Obfuscated Ciphers
  • 39. Software execution trace with DBI [.code execution] start_addr : 000000000400c1b7 end_addr : 000000000400c1d0 instruction info 000000000400c1b7: mov eax, dword ptr [ebp + 8] 000000000400c1ba: add dword ptr [ebx + 0x550], 1 000000000400c1c1: mov edx, dword ptr [eax + 0x228] 000000000400c1c7: mov edi, dword ptr [eax + 0x224] 000000000400c1cd: mov dword ptr [ebp - 0x44], edx 000000000400c1d0: jmp 0x400b3c1 [.mem write] code_addr : 000000000400c1ba mem_addr : 0000000004023550 size : 4 data : 30040000 [.mem write] code_addr : 000000000400c1c1 mem_addr : 0000000004025da8 size : 4 data : 347b0608 [.mem write] code_addr : 000000000400c1c7 mem_addr : 0000000004025da4 size : 4 data : 38390204 [.mem read] code_addr : 000000000400c1b7 mem_addr : 00000000beef7470 size : 4 data : 805b0204 [.mem read] code_addr : 000000000400c1b7 mem_addr : 00000000beef7470 size : 4 data : 805b0204 [.mem read] code_addr : 000000000400c1ba mem_addr : 0000000004023550 size : 4 data : 2f040000
  • 40. Visualized map of open-source WBAES-128 Write Read Execution Memory Address Time
  • 41. 10 rounds of AES-128 (white-box implementation, opensource) 10 rounds of WBAES-128
  • 42. rank 1 rank 2 rank 3 rank 4 rank 5 rank 6 rank 7 rank 8 rank 9 rank 10 key 1 0x2b
 (2.00538) 0x07 (1.80379) 0xc1 (1.73824) 0xee (1.70429) 0x08 (1.697) 0x0c (1.69357) 0x72 (1.67844) 0x2c (1.67127) 0x81 (1.66722) 0x0a (1.65412) key 2 0x7e (2.51091) 0x93 (1.74067) 0x06 (1.68867) 0x02 (1.68841) 0xa8 (1.67424) 0x54 (1.67341) 0x62 (1.67227) 0xb6 (1.66756) 0xe9 (1.66338) 0x86 (1.65473) key 3 0x15 (2.48606) 0xc8 (1.72634) 0xe4 (1.72553) 0x20 (1.70805) 0x92 (1.69391) 0x74 (1.68563) 0x1e (1.68499) 0x89 (1.67014) 0x43 (1.66724) 0xd6 (1.66098) key 4 0x16 (2.28568) 0xb5 (1.69677) 0x8f (1.68429) 0xbb (1.67537) 0x45 (1.66008) 0xe9 (1.64984) 0xcf (1.64378) 0xc2 (1.63327) 0x38 (1.61959) 0x6c (1.61645) key 5 0x28 (2.31281) 0x7d (1.69297) 0x5a (1.69283) 0xc9 (1.69053) 0x8e (1.68747) 0xfb (1.6714) 0xf3 (1.66702) 0x5b (1.6599) 0xaa (1.65702) 0x67 (1.65374) key 6 0xae (2.5603) 0x69 (1.73705) 0x8a (1.73109) 0xf5 (1.67828) 0xc4 (1.67624) 0xfe (1.67155) 0xa0 (1.66758) 0xe5 (1.66617) 0x98 (1.6579) 0xb8 (1.65789) key 7 0xd2 (2.47133) 0xb4 (1.81599) 0x5f (1.75024) 0xe0 (1.74447) 0xa1 (1.73202) 0x5a (1.71384) 0x8b (1.70006) 0x0b (1.69626) 0xcd (1.68755) 0x68 (1.66165) key 8 0xa6 (1.80113) 0x4b (1.70776) 0x9d (1.69386) 0x2d (1.67404) 0x01 (1.6456) 0x0d (1.64192) 0xbf (1.63917) 0xea (1.63454) 0xe7 (1.62918) 0x3e (1.62822) key 9 0xab (2.4717) 0x1d (1.7161) 0xc9 (1.71101) 0xe5 (1.70354) 0x7c (1.69538) 0x77 (1.68859) 0x2f (1.65904) 0xc4 (1.65721) 0xa1 (1.65257) 0x60 (1.64843) key 10 0xf7 (3.61634) 0xb8 (3.41278) 0xa4 (3.39504) 0x76 (3.38843) 0xc4 (3.38602) 0x17 (3.38253) 0xea (3.37196) 0xbe (3.35624) 0x8b (3.3548) 0x97 (3.33779) key 11 0x15 (2.02783) 0x16 (1.71121) 0xb6 (1.69905) 0x69 (1.69321) 0xbe (1.69316) 0x7b (1.69135) 0x41 (1.6857) 0x2f (1.67168) 0x91 (1.65783) 0x22 (1.65519) key 12 0x88 (2.8446) 0x3c (1.75204) 0xe4 (1.70494) 0x52 (1.66283) 0x79 (1.66221) 0x08 (1.64197) 0xb9 (1.62887) 0x40 (1.62375) 0x42 (1.61559) 0xb5 (1.60839) key 13 0x09 (1.88167) 0x96 (1.71604) 0xf2 (1.68481) 0xb4 (1.68284) 0x0d (1.67969) 0x6d (1.67959) 0x3f (1.67024) 0xaf (1.66383) 0x78 (1.66288) 0xe6 (1.66193) key 14 0xcf 
 (2.3232) 0x19 (1.76684) 0x9a (1.74075) 0x3d (1.72711) 0x03 (1.69709) 0xe2 (1.68798) 0x07 (1.68521) 0xd2 (1.67812) 0x6f (1.67621) 0xca (1.67311) key 15 0x4f (2.11058) 0xd7 (1.80632) 0xce (1.71211) 0xad (1.71185) 0x45 (1.70138) 0x0e (1.69954) 0x62 (1.68237) 0x76 (1.67043) 0xc0 (1.66782) 0x48 (1.66293) key 16 0x3c (2.22229) 0x97 (1.70098) 0xa7 (1.69181) 0x5d (1.68828) 0x02 (1.67629) 0xea (1.65554) 0x07 (1.65372) 0x7e (1.65026) 0xe6 (1.6479) 0x29 (1.64527) WBAES-128 key recovery with CPA
  • 43. Attacks against commercial white-box Implementations
  • 44. • Two commercial AES implementations • Simple-cipher mode for performance • Complex-cipher mode for security Commercial white-box ciphers
  • 45. Commercial white-box ciphers • Two commercial AES implementations • Simple-cipher mode for performance • Complex-cipher mode for security
  • 47. Visualized map of simple-cipher the round pattern 
 not found
  • 48. • Taint analysis instead of binary-visualization • Correlation power analysis (CPA) • Code analysis(reverse engineering) • Differential fault analysis (DFA) White-box cryptanalysis — my works
  • 50. Taint analysis - plaintext trace Cryptographic primitive
  • 51. Taint analysis for simple-cipher 0x4200986: (in /lib/i386-linux-gnu/libc-2.21.so) 0x42B34AE: (in /lib/i386-linux-gnu/libc-2.21.so) 0x42B34B3: (in /lib/i386-linux-gnu/libc-2.21.so) 0x42B34B8: (in /lib/i386-linux-gnu/libc-2.21.so) 0x42B34BD: (in /lib/i386-linux-gnu/libc-2.21.so) … 0x8181ABA: (in Commercial-SimpleWB-AES) 0x8181AC4: (in Commercial-SimpleWB-AES) 0x8181ACC: (in Commercial-SimpleWB-AES) 0x8181AD0: (in Commercial-SimpleWB-AES) 0x8181AE0: (in Commercial-SimpleWB-AES) 0x8181AE4: (in Commercial-SimpleWB-AES) 0x8181AEE: (in Commercial-SimpleWB-AES) 0x8181AF2: (in Commercial-SimpleWB-AES) 0x8181B04: (in Commercial-SimpleWB-AES) 0x8181B08: (in Commercial-SimpleWB-AES) 0x8181B10: (in Commercial-SimpleWB-AES) 0x8181B14: (in Commercial-SimpleWB-AES) 0x8181B24: (in Commercial-SimpleWB-AES) 0x8181B28: (in Commercial-SimpleWB-AES) 0x8181B32: (in Commercial-SimpleWB-AES) … Cryptographic primitive
  • 52. Cryptographic primitive of simple-cipher
  • 53. CPA on the simple-cipher rank 1 rank 2 rank 3 rank 4 rank 5 rank 6 rank 7 rank 8 rank 9 rank 10 key 1 0x4a
 (3.55009) 0x6b(3.38731) 0xbe(3.29755) 0x1e(3.29697) 0x2e(3.27285) 0x35(3.27269) 0x65(3.26551) 0x92(3.26066) 0x1d(3.25067) 0x58(3.24932) key 2 0x32
 (4.34452) 0xd0(3.35588) 0xe8(3.31946) 0xcc(3.30517) 0x78(3.29646) 0xdf(3.28295) 0x17(3.27702) 0x64(3.27235) 0x79(3.26674) 0x8a(3.26442) key 3 0x4d
 (3.82747) 0xcc(3.31759) 0x23(3.29281) 0x91(3.28571) 0xb9(3.28026) 0xb3(3.27443) 0x4e(3.2596) 0xa2(3.25797) 0x8f(3.25309) 0x04(3.24456) key 4 0x72
 (3.64867) 0x38(3.35217) 0xdf(3.3211) 0x2f(3.31467) 0xae(3.30714) 0xa1(3.30303) 0xf8(3.28997) 0xd3(3.28245) 0x1b(3.26429) 0x8b(3.26017) key 5 0x39
 (4.1895) 0xc4(3.43936) 0xbb(3.32822) 0x8b(3.32537) 0x7c(3.31265) 0x8e(3.30741) 0x13(3.30152) 0x69(3.299) 0x9e(3.28805) 0x89(3.28379) key 6 0x33
 (3.62186) 0x2d(3.38423) 0xa8(3.31917) 0xb8(3.30849) 0x72(3.28712) 0x48(3.28305) 0x96(3.27886) 0x4d(3.27446) 0x23(3.27344) 0x9a(3.27234) key 7 0x33
 (4.26236) 0xda(3.30169) 0xc8(3.28577) 0x23(3.28246) 0x5f(3.26833) 0x17(3.26592) 0xd3(3.26428) 0xe6(3.26389) 0x64(3.25394) 0x85(3.24545) key 8 0x6c
 (3.61456) 0x21(3.35728) 0xba(3.3402) 0xb3(3.32199) 0x65(3.29623) 0xaf(3.27848) 0x1f(3.27791) 0x61(3.27659) 0x44(3.27522) 0xc6(3.26389) key 9 0x61
 (4.19043) 0x8d(3.33732) 0x68(3.32288) 0x5f(3.30976) 0x1e(3.28015) 0xeb(3.27355) 0x96(3.26578) 0x13(3.26007) 0x0c(3.25348) 0xc0(3.25069) key 10 0x54
 (3.66626) 0x42(3.45208) 0xd6(3.38613) 0x5d(3.37338) 0x3f(3.3665) 0xbc(3.34422) 0x3a(3.33917) 0xed(3.33183) 0x2d(3.32099) 0x14(3.3029) key 11 0x4e
 (3.71877) 0x74(3.32473) 0x39(3.32183) 0xee(3.30932) 0x52(3.30156) 0x68(3.27952) 0x7b(3.27918) 0x1a(3.27585) 0x30(3.25335) 0x16(3.25267) key 12 0x6b
 (3.65183) 0xab(3.45354) 0x28(3.34018) 0xbc(3.33583) 0xc1(3.33411) 0x02(3.31736) 0x07(3.28696) 0x13(3.27714) 0x75(3.27475) 0xc0(3.26212) key 13 0x32
 (3.65053) 0x15(3.38309) 0x72(3.29484) 0xe9(3.28438) 0x88(3.28182) 0x52(3.25202) 0x95(3.24498) 0x6c(3.24336) 0x2d(3.24149) 0xc7(3.22936) key 14 0x4d
 (3.4734) 0x7d(3.31076) 0xcd(3.30883) 0x8e(3.30059) 0x5f(3.28006) 0x0b(3.27518) 0x10(3.26867) 0xee(3.26289) 0x7b(3.2615) 0x1a(3.24988) key 15 0x4a
 (3.65855) 0x0a(3.30734) 0x89(3.29788) 0xaf(3.29663) 0xf0(3.2857) 0xf1(3.28402) 0xcd(3.26806) 0x48(3.26561) 0xc8(3.26545) 0x87(3.25869) key 16 0x30
 (4.20028) 0xc0(3.36153) 0xce(3.3276) 0x2c(3.32361) 0xe9(3.30428) 0x7b(3.29937) 0x8f(3.29511) 0x4e(3.29502) 0x1c(3.28909) 0xd6(3.27938)
  • 54. Commercial white-box ciphers • Two commercial AES implementations • Simple-cipher mode for performance • Complex-cipher mode for security
  • 55. Visualized map of complex-cipher
  • 56. Plaintext trace on the complex-cipher Ciphertext Plaintext
  • 57. • Taint analysis instead of binary-visualization • Correlation power analysis (CPA) • Code analysis(reverse engineering) • Differential fault analysis (DFA) White-box cryptanalysis — my works
  • 58. Visualized map of complex-cipher Cryptographic primitive ?
  • 59. • Taint analysis instead of binary-visualization • Correlation power analysis (CPA) • Code analysis(reverse engineering) • Differential fault analysis (DFA) White-box cryptanalysis — my works
  • 60. Code analysis for complex-cipher
  • 62. Complex-cipher control flow Function B Function A Plaintext Ciphertext Repeats many times
  • 63. White-box table in complex-cipher
  • 64. • Taint analysis instead of binary-visualization • Correlation power analysis (CPA) • Code analysis(reverse engineering) • Differential fault analysis (DFA) White-box cryptanalysis — my works
  • 65. White-box table in complex-cipher
  • 66. 1 byte flip; 0xBD→ 0x34 White-box table in complex-cipher
  • 67. Faulty ciphertext h2spice@ubuntu:~/Documents/WBC/Commercial/DFA/complexWB-AES$ 
 ./complexWB-AES testtesttesttest 6CB721A5633DFD7F94A6474524789026 ← normal cipher-text
 h2spice@ubuntu:~/Documents/WBC/Commercial/DFA/complexWB-AES$ 
 ./complexWB-AES-mod testtesttesttest FF1E4C03844DD800CE9CF34C6B7EEAE8 ← faulty cipher-text
  • 68. DFA on complex-cipher Plaintext(in hex) 0x74657374746573747465737474657374 Correct ciphertext 0x6CB721A5633DFD7F94A6474524789026 Good faulty ciphertexts 0x8EB721A5633DFDB794A61E4524359026 0x6CD921A5113DFD7F94A6479824786026 0x6CB740A563C5FD7F8BA64745247890A8 0x6CB72161633DA97F94A447453D789026 … other 625 good faulty ciphertext Final round key 0x5CB2FAF4F3FB94543BFA87DFE92660FC
  • 69. Final round key 0x5CB2FAF4F3FB94543BFA87DFE92660FC Round 9 key 0xEC26DC41AF496EA0C801138BD2DCE723 Round 8 key 0x36991EE3436FB2E167487D2B1ADDF4A8 Round 7 key 0x9C3EF21C75F6AC022427CFCA7D958983 Round 6 key 0xEB64C9D7E9C85E1E51D163C859B24649 Round 5 key 0x305BC5E702AC97C9B8193DD608632581 Round 4 key 0xFAF69E0032F7522EBAB5AA1FB07A1857 Round 3 key 0x78C1CC67C801CC2E8842F8310ACFB248 Round 2 key 0x21177A74B0C000494043341F828D4A79 Round 1 key 0xA8E4495191D77A3DF0833456C2CE7E66 Secret key 0x4A324D723933336C61544E6B324D4A30 DFA on complex-cipher
  • 71. The way to use WBC safer in apps • No single key for everything • No hardcoded key(protected key) • No static IV • External encoding • Asymmetric crypto algorithm based on WBC • RSA, Elliptic curves, Diffie–Hellman • Tamper resistant embedded integrity checksums • Cryptographic key device binding • device identifier + user identifier + external identifier(e,g, pin, biometric)
  • 72. Device binding • Device Identifier • User Identifier • External Identifier
 (e,g, pin, biometric)
  • 73. Future works • White-box version of crypto libraries • Retrieve a master key embedded white-box engine • Since the vulnerabilities have already been fixed, 
 I will focus on finding other vulnerability.
  • 74. Thank you if you have any question, feel free to contact me e-mail : h2spice@gmail.com
 facebook, twitter : @h2spice