Utilizzo della classe Apple NSKeyedArchiver senza crittografia per salvare localmente i dati del punteggio

3

prima di tutto mi dispiace per il mio pessimo inglese!

Ho una domanda sulla sicurezza di NSKeyedArchiver, una sottoclasse di NSCoder di Apple Foundation.framework ( link )

Nelle mie app, per la gestione della classifica Apple ho usato ABGameKitHelper di Alexander Blunck ( link ). Ho notato che questo helper utilizza la crittografia AES per salvare i punteggi in locale quando la classifica di Apple non è accessibile (ad esempio non c'è rete, ecc.) Con la classe NSKeyedArchiver.

Quindi, la mia domanda: esiste una possibilità reale che un utente malintenzionato possa decodificare i dati scritti senza crittografia utilizzando NSKeyedArchiver e comprendere le coppie chiave-valore? E anche modificare i dati del punteggio, riconnettersi alla rete e attendere l'aggiornamento automatico della classifica da ABGameKitHelper?

Grazie in anticipo, Alesanco

    
posta Alesanco 10.07.2013 - 14:44
fonte

1 risposta

3

Qualsiasi oggetto NSKeyedArchiver può essere annullato da chiunque se non è crittografato, poiché non crittografa nulla da solo. Tutto ciò che NSKeyedArchiver fa è, dalla Documentazione:

NSKeyedArchiver, a concrete subclass of NSCoder, provides a way to encode objects (and scalar values) into an architecture-independent format that can be stored in a file. When you archive a set of objects, the class information and instance variables for each object are written to the archive. NSKeyedArchiver’s companion class, NSKeyedUnarchiver, decodes the data in an archive and creates a set of objects equivalent to the original set.

Quindi, in altre parole, crea una struttura in cui il contenuto di ciascun oggetto è memorizzato con un'identificazione della sua Classe originale, quindi l'oggetto originale può essere decodificato in seguito. Pensala come una specie di XML binario.

Quello che ti consiglio di fare è prendere il NSData creato da [NSKeyedArchiver archivedDataWithRootObject:(id)rootObject] e crittografarlo usando qualsiasi metodo tu preferisca. Se i dati sono davvero segreti, ti consiglio di utilizzare AES256 o Blowfish . Quando devi usarlo, decrittografali prima e inseriscili in [NSKeyedUnarchiver unarchiveObjectWithData:(NSData *)data] .

    
risposta data 10.11.2013 - 22:15
fonte

Leggi altre domande sui tag