Towards a theory of special-purpose program obfuscation