Take the 2-minute tour ×
Cryptography Stack Exchange is a question and answer site for software developers, mathematicians and others interested in cryptography. It's 100% free, no registration required.

I have been reading the question "What is a white-box implementation of a cryptographic algorithm?" and it led to this short article / Q&A which states in question 2:

Q2: What is the difference with code obfuscation?

Related and complementary techniques for protecting software implementations but with different security goals include code obfuscation and software tamper- resistance. Code obfuscation is aimed at protecting against the reverse engineering of a (cryptographic) algorithm while software tamper-resistance is aimed at protecting against modifications of the code. All these techniques have however in common that the resulting implementation must remain directly executable.

Now, it shows the differences between obfuscation and temper-resistance, but it says nothing about the difference between white-box cryptography and code obfuscation.

So I guess my question is: are those two completely different things? Or is code obfuscation a way to achieve white-box cryptography? If the second is true, are there other ways to achieve it?

share|improve this question

2 Answers 2

up vote 8 down vote accepted

As you suspected, there's a very close relationship between white-box cryptography and obfuscation. (Good instincts!) White-box cryptography is basically all about obfuscating an encryption implementation.

White-box cryptography is obfuscation of crypto code. Imagine that you took an AES implementation, picked a random AES key, and then hardcoded that AES key into the code. Obviously, publishing this code would be insecure, because it would immediately reveal the AES secret key. It might be nice if we could obfuscate the resulting code, hardcoded key and all, in a way that preserves its function but hides the encryption key. In other words, the result should be obfuscated code, which still computes the same function, but no longer reveals the AES key. This is exactly what "white-box cryptography" does -- or, at least, what it tries to achieve.

So you can view white-box cryptography as a special-purpose obfuscation method, designed for obfuscating a very specific kind of code.

More background. There's a lot more that can be said about white-box cryptography. For instance, many published methods for white-box cryptography have been broken; both white-box AES and white-box DES have been cryptanalyzed and are now known to be insecure. As far as I know, every published approach to white-box cryptography has subsequently been broken, so it is not known whether it is possible to achieve the goals of white-box cryptography securely.

Here is an outstanding overview and introduction to white-box cryptography:

Marc Joye, On White-Box Cryptography. Security of Information and Networks, 2008.

share|improve this answer
    
do you mean white-box cryptography is not a specific method, but some approach? Or some key hiding methods will be considered white-box cryptography and some won't? –  MByD Aug 12 '11 at 20:31
    
@MbyD, yes, that seems about right. In the broadest sense, white-box cryptography is a goal (a security notion we might want to achieve). There have also been some proposed schemes/algorithms for achieving this goal. I'm frequently guilty of conflating "goal" and "scheme", partly because the original papers introducing the concept both defined the general goal and then proposed some schemes intended to achieve that goal. I suspect I've caused confusion by my sloppy use of "white-box cryptography" for both goal and a particular scheme intended to achieve that goal; sorry about that. –  D.W. Aug 12 '11 at 22:15
    
BTW, regarding the last link - that's exactly where my question came from... –  MByD Aug 14 '11 at 9:20

White-box cryptography is aimed at protecting secret keys from being disclosed in a software implementation.

A cryptography algorithm gets the key and plaintext(encryption mode)/ciphertext(decryption mode) as input and outputs the ciphertext/plaintext. A white box implementation of the cryptography algorithm gets just plaintext/ciphertext as input and outputs the ciphertext/plaintext. The key embedded in the algorithm(merged on S-boxes or something else).

White-Box Cryptography and an AES Implementation is a way to implement a white-box implementation of AES.

In code obfuscation we should protect some parts of the code. For example to protecting an algorithm, we can encrypt the algorithm or some key features of the algorithm. Now, the query is, how can we protect the encryption key? Because if someone have the key can decrypt the algorithm. white-box implementation is the Answer.

So, code obfuscation is NOT a way to achieve white-box cryptography. White-box cryptography used in code obfuscation.

share|improve this answer
    
Thanks for the answer, I need some time before I fully understand to really comment, could you please re-phrase the first sentence of the last section? It is not clear to me what you are saying there... Thanks! –  MByD Aug 12 '11 at 20:10
    
Excuse me. I re-phrased it. –  ir01 Aug 13 '11 at 1:07

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.