Cryptography - White box Cryptography
Cryptography - White box Cryptography
In penetration testing, white-box testing is where the testers (or attackers) have access to the source code and internal workings of the system.
White-box cryptography:
- attackers have access to the compiled code where the keys exist.
- The difficult problem that it aims to solve is how to keep those keys safe while using them in execution.
- remove the distinction between keys and crypto algorithm code
Kerckhoffs’s Principle
Kerckhoffs’s principle
- revolutionized the way we think about cryptography
- we should allow the attacker to know everything about a crypto implementation, except the key.
- If a cryptosystem can stand up to that level of scrutiny it will be the better for it.
White-box crypto
- kind-of takes this one step further.
- we technically give the attacker access to the key, we just hide/encrypt it well enough that they can’t find it.
basic
In order to secure a program using white-box cryptography, we assume the attacker has complete access to the system. This includes:
- Access to executable binary
- Access to execution memory
- CPU call intercepts
to successfully hide the keys given this scenario, take the steps for white-box a block cipher:
- Partial Evaluation: When performing an operation, we alter the operation based on the key. For example, in the substitution phase of a block cipher, we would change the lookup table to be dependent on the key. Note that if someone were to see this table, they could derive the key (solved in step 3)
- Tabularizing: Transform all other operations to also use lookup tables. This is possible because lookup tables can describe any function.
Randomization and Delinearization: We create an encoded chain of lookup tables that has the same functionality as the original chain, but hides the key. Now, using this new chain, we have an obfuscated algorithm. For reading on the details of this operation, see here.
- encoding:
attacks
Fault injection attacks: modifying the white box execution so the output cipher text is wrong, not expected
-
.
This post is licensed under CC BY 4.0 by the author.
Comments powered by Disqus.