The proposal for inclusion of DRM on html5 is hitting the news lately. It's only predictable that the key storage mechanism will eventually be cracked, as it was on dvd playback software. This is also known as the trusted client problem
My question is simple: is there a way to encrypt data such that only a specific piece of executable code is able to decrypt it?
Normally, a private (asymmetric) key is included in the software code, and used to decrypt the symmetric key (distributed with the content) that the content was encrypted with. This makes it trivial to extract the said private key from the software and bypass it.
I was wondering if it was possible to have decryption depend on the integrity of the software itself.
I can't see any obvious solution with existing cryptographic primitives. The must obvious one would be to take a hash of some internal program state on runtime, and pass it through a key derivation function, but this will still fail on memory inspection
Is this possible at all? If it's not, is there a mathematical proof? I'm not looking for definitive answers here, just pointers to existing work.