[RELEASED] SafeSave - Secure Data Storage (Mobile Desktop)

I would like to introduce Alk Studios first Unity asset release, in the form of SafeSave.

Asset Store Link

Want to secure your save game data from hackers or cheaters?

SafeSave was developed to address the need for a multi-platform secure saving solution. This simple plugin allows developers to encrypt save data to specific devices to combat the hacking and/or sharing of save data files. all values within the save data file is encrypted individually and due to the use of a randomly generated key, no two saves ever produce the same encrypted data.

Best of all, this plugin includes a simple to use code generator, so you don’t need to write any code to integrate the plugin.

Currently several platforms have been tested including:

  • Windows.
  • Mac.
  • Linux.
  • Android.
  • IOS.

Other platforms (except webplayer) should work, however due to a lack of available testing devices, we can not currently guaranty functionality for those untested platforms.

If requested, web player support can be added to the next update.

As this is our first release, I am eager to receive both feedback and suggestions to help improve the plugin :).

Documentation Link
Support Forum Link

Show some API on usage.

How does the random generated key protect if I copy entire thing over. Maybe can explain

My apologies, the documentation shipped with the package has been added to http://unity.alkstudios.com/documents/safesave/.

Saving and loading can be achieved simply by calling the Save() or Load() functions of the user/editor generated script as seen below:

private SaveData _saveData = this.gameObject.AddComponent<SaveData>();
       
        void Update()
        {
            // Manipulating save data variables.
            _saveData.Score += 1;
        }
       
        void OnGUI()
        {
            if (GUI.Button(new Rect(0, 40, 200, 20), "Save"))
            {
                 // Saving data.
                _saveData.Save();
            }
            if (GUI.Button(new Rect(0, 60, 200, 20), "Load"))
            {
                // Loading data.
                _saveData.Load();
            }
        }

The key is generated based on the unique identifier of the device, such as an Android device. The encryption is then seeded from a randomly generated GUID. As the decryption key is generated at runtime from the UID of the device, another device is therefore incapable of reading the save data.

Hope that answers your questions :slight_smile:

SafeSave has been updated to v1.14 and the price has been corrected to $25.

Hello again fellow developers :slight_smile:
As this is our first plugin release for Unity, I would appreciate some opinions from the community regarding two matters.

  • What are your views on the pricing for this asset, if you believe it is too expensive, what price would be more appropriate?
  • With regards to the simplicity of this plugin, would you like a demo? (A video is currently being created to demonstrate usage).

Thanks for any opinions expressed.

A demo like this is helpful

http://forum.unity3d.com/threads/196578-Anti-Cheat-Toolkit-RELEASED

1 Like

Thanks for the suggestion.
Unlike the link you provided, our system does not employ the PlayerPrefs system, therefore I would have to release a standalone demo for the time being.

I shall aim to have a demo available this evening.

A video has been added to demonstrate the simplicity of the plugin.

Price have been lowered to $10 whilst we work on implementing more features.

Looks cool. It definitely adds some layer of protection, but as with any key based encryption system, if the application has access to the key so does anyone looking to hack it. All you would really need to know is the UID from the device the file came from and it could be decrypted.

Whilst any security system, including encryption can potentially be broken, this system does not solely rely upon the UID, which is primarily used to lock saves to specific devices.
The system utilises a double key approach in which one of the keys is randomly generated upon each save and thus the generated encryption key is a device UID plus a randomly generated hash. This implementation aims to further reduce the potential of cracking with regards to the method you have mentioned.

Sure I wasn’t belittling the product by any means. It looks good. Just saying don’t put your bank info in there :slight_smile:

Hello I tried to reach out to you via email. Awaiting your reply.

My apologies, I am currently on vacation, so emails are often only checked once a day.

The issue regarding “TypeLoadException: A type load exception has occurred.” occurs due to the API compatibility of your builder being set to “.Net 2,0 Subnet”.
Within the Player Settings of your project, set the “API Compatibility Level” to “.NET 2.0”.
That shall correct your issue

For anyone who has emailed us recently, If you have not heard back from us, please let us know at support@alkstudios.com as we have faced issues with migrating to the latest version of Outlook (metro), which is repeatedly rejecting our servers certificate for outgoing mail.

We have reverted back to outlook 2013 (desktop) which appears to be working and shall re-reply to all recently received emails. Our apologies if you did receive a reply from us, as you shall still receive a duplicated response.

hi is this easily usable with RFPS and UFPS and to upload online?

Hello aquilinajake and thanks for your interest in SafeSave.

Currently there is no support for online saving. With regards to integration with frameworks such as UFPS, SafeSave is a very simple to use plugin, but as I have little to no experience with the mentioned frameworks, I am unable to provide an estimate on integration ease.

SafeSave is used to store values and as such, if you can access the values you wish to save within RFPS/UFPS, then integration should be fairly straight forward.

Can you make the variables via GUI, or do you have to code everything yourself? By that i mean making custom lists, with types in there, etc. all via gfx interface. I’m looking for a gfx solution that ignores coding.
Also, is the encryption mandatory when saving? I’m asking because it might slowdown teh game if everything is encrypted I assume. Unless your method is ultra fast.