Cifratura dei miei dati e messa in sicurezza in Unity

1

Ho un kit RPG in Unity Store e volevo aggiungere una certa protezione ai consumatori per quando vogliono salvare praticamente qualsiasi informazione. Dagli ingranaggi che il personaggio indossa per l'inventario, le bombe, le chiavi, i luoghi in cui gli oggetti sono stati spostati ecc. Ho già tutto ciò che funziona è che stavo usando il serializzatore Unity C # ma ho incontrato il problema quando ho deserializzato quando aggiungo altro a la classe che contiene le informazioni salvate. Quindi ho usato JsonUtility, ho trasformato la classe salvata in dati Json e l'avrei messa in PlayerPrefs ma volevo offrire una protezione extra per i consumatori, quindi ho esaminato AES e Asymmetrical Encryption.

Questa è la mia corsa veloce verso il basso e, a partire da ora, quando salvi i miei dati:

1) Genero una stringa casuale per la mia "chiave" con AES.
2) I Simmetrically Encrypt my data (AES).
3) Poi, in modo asimmetrico, crittografo la "chiave" AES.
4) Archivia la "chiave" asimmetrica crittografata e i dati crittografati AES in PlayerPrefs.

Mi sento però da quando ho archiviato la chiave "Asymmetrically Encrypted" in PlayerPrefs che detiene ancora la stessa quantità di sicurezza di se stessi per memorizzare la "chiave" AES generata in modo casuale in PlayerPrefs poiché la chiave è lì per qualsiasi inversione processo.

Sono corretto nel pensarlo? C'è un passaggio che mi manca o che devo cambiare?

    
posta JoeyL 25.10.2016 - 01:13
fonte

1 risposta

3

Inizierò con una risposta un po 'dickish, vale a dire, se non sei sicuro di queste cose dovresti concentrarti sulla ricerca di una (rispettabile) libreria che gestirà questo genere di cose per te. Non sono così familiare con Unity, quindi se esiste una tale libreria, spero che qualcun altro possa fornire una risposta che la indichi. Come sono sicuro che tu sappia, anche le grandi società fanno confusione su questo genere di cose.

Detto questo, non capisco davvero da chi stai provando a proteggere questi dati. (Anche io non capisco perché questo sarebbe sensibile ma non è importante.) Per quanto posso dire, PlayerPrefs è memorizzato localmente quindi i tipi di attacker che stai considerando sono 1) altre applicazioni sul dispositivo, 2) altri utenti sul dispositivo, 3) attaccanti con accesso fisico alla memoria persistente es la scheda SD. La maggior parte di questi sono già protetti contro i meccanismi del sistema operativo. Ma per essere completamente chiari, facendo la crittografia, aumenterà la protezione oltre a ciò che sta facendo il sistema operativo. L'argomento discende la definizione di un modello di minaccia e l'analisi costi-benefici della mitigazione delle minacce. L'analisi costi-benefici includerà i costi di sviluppo e manutenzione per te e i costi di gestione chiave per l'utente, ad es. se l'utente perde la chiave, perde i propri dati e nulla può essere fatto al riguardo.

Affrontando il penultimo paragrafo, se hai appena archiviato la chiave simmetrica con i dati crittografati, non avresti alcuna sicurezza. Potresti anche memorizzare i dati non crittografati.

Il tuo schema in quattro fasi dovrebbe funzionare (anche se ci sono dettagli che devi correggere), ma sembra essere eccessivo. Se la chiave simmetrica è crittografata, allora avrò bisogno di avere accesso alla chiave privata per decodificarla. Se riesco a memorizzare in modo sicuro la chiave privata, perché non ripongo la chiave simmetrica dove ripongo la chiave privata? In alternativa, a meno che non sia una grande quantità di dati, perché non criptare semplicemente i dati direttamente con la chiave privata? O anche, se riesco a memorizzare le chiavi in modo sicuro, perché non mi limito a memorizzare i dati lì?

Vedo che la procedura in quattro passaggi è utile solo se le chiavi asimmetriche sono gestite dal sistema operativo ma non viene fornita alcuna gestione delle chiavi simmetriche ed è necessario crittografare grandi quantità di dati. Di fatto, le librerie crittografiche decenti di solito gestiscono automaticamente la generazione di una chiave simmetrica e la memorizzano crittografate con il testo cifrato, quindi non devi preoccuparti di questo e non devi preoccuparti di limitazioni di dimensioni o prestazioni.

    
risposta data 25.10.2016 - 23:31
fonte

Leggi altre domande sui tag