Domanda

Il mio cliente vuole crittografare / comprimere il codice html per i suoi libri di medicina nel pacchetto iPhone, per proteggere il loro IP.

Qual è un buon modo per preparare questo file per il bundle dell'app e quali librerie complementari (C, Obj-C) dovrei usare per fare la decrittazione e la decompressione al primo avvio dell'app?

Copiare il file in ~ / Documents, quindi lavorarci su sembra la soluzione migliore. Pensieri?

È stato utile?

Soluzione

Ecco alcuni pensieri.

Se il testo del libro è costituito da tutti i dati alfanumerici, non salvare i dati come ASCII: salvarli nel proprio formato binario codificato (ad esempio, utilizzare 5 bit anziché 8 e comprimere le parole). Questo ti dà un po 'di compressione, leggera offuscamento e una decompressione molto economica (in cicli di clock). Avresti un formato dati che è veloce da accedere al volo e manterrà il curioso hacker curioso fuori dal testo. I cicli di clock sarebbero la mia principale preoccupazione e la sicurezza secondo.

Un'altra idea è memorizzare la chiave di decrittografia per una tipica crittografia Blowfish in formato offuscato nell'app. Dividi in due o tre costanti che richiedono, ad esempio, alcune operazioni dispari per il ripristino. Ma ovviamente, ora il sovraccarico di Blowfish o qualsiasi altra cosa sarà la tua preoccupazione.

Dal momento che non sarai in grado di implementare una sicurezza perfetta (la perfezione è estremamente costosa), i proprietari di IP dovranno utilizzare il copyright tradizionale e le tecniche commerciali segrete per proteggere completamente le loro proprietà. Hai reso più difficile l'hacking, ma spetta agli avvocati essere diligenti, solo un libro sullo scaffale nella sezione riservata della biblioteca (niente fotocopie per favore!).

Saluti

Altri suggerimenti

Questo è abbastanza complicato ... quasi impossibile renderlo davvero indistruttibile. Qualsiasi persona ragionevolmente motivata sarà in grado di perforarla. Lo renderai solo un po 'più difficile da fare. In ogni caso, sicuramente non è possibile memorizzare alcuna chiave segreta nel pacchetto stesso. Dovresti ottenere in modo sicuro la chiave di decodifica su un canale sicuro da un server e usarla secondo necessità. Anche allora, qualcuno che esegue il jailbreak sarebbe probabilmente in grado di eseguire GDB sul tuo programma in esecuzione ed estrarre la chiave segreta nella RAM + la chiave segreta sarebbe condivisa tra tutti gli utenti della tua app ... Stai essenzialmente cercando di implementare uno schema DRM , che è intrinsecamente imperfetto dal design ... A meno che tu non abbia bisogno di un accesso offline, potresti voler estrarre i dati come necessario da un dispositivo di sicurezza sicuro ... almeno tu " potresti " perdita di informazioni sull'acceleratore ...

Terrei i documenti crittografati se fossi in te e li decifrerei solo se necessario. Si potrebbe facilmente accedere ai documenti decifrati su un dispositivo jailbreak.

Vedi " Panoramica sulla sicurezza " documento e il codice di esempio CryptoExercise per le tecniche di crittografia

Probabilmente non ti piacerà, ma il modo migliore è semplicemente non usare HTML. Una volta passato l'HTML decrittografato a UIWebView, è molto facile per un utente malintenzionato rubarlo a quel livello, vanificando qualsiasi scopo del vostro algoritmo di crittografia. Una sottoclasse UIView con codice di disegno personalizzato e un formato di supporto crittografato personalizzato sarà molto più difficile aggirare

Da Mac OS Servizi di sicurezza del sistema operativo X e iPhone :

  

Puoi usare i servizi di portachiavi per   crittografare e archiviare piccole quantità di   dati (vedi Riferimento servizi portachiavi   e Programmazione dei servizi portachiavi   Guida ). Se si desidera crittografare o   decifrare grandi quantità di dati in Mac   OS X, è possibile utilizzare Common Security   Services Manager (CSSM) crittografico   Responsabile dei servizi. Anche questo manager   ha funzioni da creare e verificare   firme digitali, generare   chiavi crittografiche e crea   hash crittografici. Nel sistema operativo iPhone,   il certificato, la chiave e la fiducia   L'API dei servizi fornisce funzioni per   generare chiavi di crittografia, creare   e verifica delle firme digitali e   crittografia di blocchi di dati; vedere    Certificate, Key and Trust Servizi   Riferimento .

È sempre una scelta tra prestazioni (la crittografia non è gratuita) e sicurezza (sicurezza e tutto il resto, davvero). Ma cos'altro c'è di nuovo? Se mantieni i singoli file abbastanza piccoli, forse la decrittografia non ti rallenta molto. In alternativa, puoi prendere in considerazione la decrittazione predittiva in modo tale che alcuni file vengano decrittografati in background, ad esempio quelli collegati dal file attualmente visualizzato, ecc. Mi rendo conto, tuttavia, che la concorrenza su iPhone potrebbe essere piuttosto imprevedibile (non lo so come non ho lasciato cadere i soldi per una licenza). Puoi anche ottenere miglioramenti delle prestazioni solo codificando quei file che ne hanno davvero bisogno; un indice / sommario o altri file a cui si accede spesso devono davvero essere crittografati? Conta come IP di cui il tuo cliente è preoccupato?

Per la compressione posso consigliare QuickLZ (motore più veloce che ho visto, ottimo rapporto di compressione).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top