The problem in brief: I develop an application (for example a game) which is distributed in binary form. The game calls home and sends the user's high score as a message to an online game server.
What I'd like to do is digitally encrypt and sign the message so that I can trust it hasn't been tampered with.
Public key cryptography relies on each end of the conversation having a secret each, but I can't rely on my software not being reverse engineered, and the private key discovered.
Is there a secure or secure enough way of digitally signing (the encryption part isn't necessary in this case) a message from my distributed binary application when I know it can be reverse engineered?