For a typical windows phone game where storage files could contain high scores or in-game currency data, how does one go about protecting these files from user tampering?
1 Answer
Each Windows Phone application has a private storage area (called Isolated Storage) assigned to itself. This area cannot be accessed by any other apps so it is considered safe to save sensitive data here.
The typical user won't be able to access it either. There are ways to do it though (via tools), so I'd also encrypt all sensitive data before storage. Then again, encryption is a good idea when working with sensitive data no matter how closed the storage area is.
There's an article discussing the whole thing on Isolated Storage here: http://www.jeffblankenburg.com/2010/10/15/31-days-of-windows-phone-day-15-isolated-storage/
An encryption w/ C# .NET question was asked on StackOverflow a while back: https://stackoverflow.com/questions/202011/encrypt-decrypt-string-in-net
Just one more thing: since you're so worried that users might tamper with your data, I presume you're working on a game that has some sort of online syncing functionality. If that's the case, then your best bet would be to keep sensitive data on the device for as long as required only. Save data, send data to server, get response, delete data depending on the response, repeat when required.
Encrypting the data won't make it hack-proof.
If this is not your case, then you should not worry about the user tampering with the data. It's like protecting a single player game against cheats or hacks: not worth it.