Cryptez et compressez les codes HTML dans l'ensemble d'applications iPhone, décompressez au premier démarrage

StackOverflow https://stackoverflow.com/questions/612728

Question

Mon client souhaite chiffrer / compresser le code HTML de ses livres médicaux dans le kit iPhone, afin de protéger son adresse IP.

Quel est le bon moyen de préparer ce fichier pour le paquet d'applications et quelles bibliothèques complémentaires (C, Obj-C) dois-je utiliser pour effectuer le déchiffrement et la décompression lors du premier lancement de l'application?

Copier le fichier dans ~ / Documents, puis travailler dessus semble être la meilleure solution. Des pensées?

Était-ce utile?

La solution

Voici quelques réflexions.

Si le texte du livre contient uniquement des données alphanumériques, n'enregistrez pas les données au format ASCII, mais enregistrez-les dans votre propre format codé binaire (utilisez par exemple 5 bits au lieu de 8 et mettez-les en mots). Cela vous donne un peu de compression, une légère obfuscation et une décompression très bon marché (en cycles d'horloge). Vous auriez un format de données facile d'accès rapidement et qui empêcherait le pirate informatique occasionnel de se retrouver dans le texte. Les cycles d'horloge seraient ma principale préoccupation et la sécurité en second lieu.

Une autre idée est de stocker la clé de déchiffrement pour un chiffrement Blowfish typique au format obscurci dans l'application. Divisé en deux ou trois constantes qui nécessitent une opération étrange pour restaurer par exemple. Mais bien sûr, maintenant, les frais généraux de Blowfish ou quoi que ce soit seront votre préoccupation.

Etant donné que vous ne pourrez pas mettre en œuvre une sécurité parfaite (la perfection coûte extrêmement cher), les titulaires de la propriété intellectuelle devront utiliser les techniques traditionnelles du droit d'auteur et des secrets commerciaux pour protéger pleinement leur propriété. Vous avez rendu plus difficile le piratage, mais il incombe toujours aux avocats d'être diligent, juste un livre sur l'étagère dans la section réservée de la bibliothèque (pas de photocopies s'il vous plaît!).

A bientôt

Autres conseils

C'est assez délicat ... presque impossible de le rendre vraiment incassable. Toute personne raisonnablement motivée sera capable de la percer. Vous ne ferez que le rendre un peu plus difficile à faire. Dans tous les cas, vous ne pouvez absolument pas stocker de clé secrète dans le paquet lui-même. Vous devez obtenir de manière sécurisée la clé de déchiffrement sur un canal sécurisé auprès d'un serveur et l'utiliser au besoin. Même dans ce cas, une personne faisant du jailbreak serait probablement capable d'exécuter GDB sur votre programme en cours et d'extraire la clé secrète dans la RAM + la clé secrète serait partagée par tous les utilisateurs de votre application ... Vous essayez essentiellement d'implémenter un schéma DRM , qui est intrinsèquement défectueux de par sa conception ... Sauf si vous avez besoin d’un accès hors connexion, vous pouvez extraire les données de votre serveur sécurisé selon les besoins ... au moins, vous pouvez " fuite d'informations sur l'accélérateur ...

Je garderais les documents cryptés si j'étais vous et les déchiffrions au besoin. On pourrait facilement accéder aux documents déchiffrés sur un appareil jailbreaké.

Voir "Vue d'ensemble de la sécurité". document et exemple de code CryptoExercise pour les techniques de chiffrement

Cela ne vous plaira probablement pas, mais la meilleure solution consiste simplement à ne pas utiliser HTML. Une fois que vous avez passé le code HTML déchiffré à UIWebView, il est très facile pour un utilisateur malveillant de le voler à ce niveau, ce qui va à l'encontre de l'objectif de votre algorithme de chiffrement. Il sera beaucoup plus difficile de contourner une sous-classe UIView avec un code de dessin personnalisé et un format de support chiffré personnalisé

De Mac OS Services de sécurité X et iPhone OS :

  

Vous pouvez utiliser les services de trousseau pour   chiffrer et stocker de petites quantités de   données (voir Référence des services de porte-clés   et Programmation de porte-clés   Guide ). Si vous voulez chiffrer ou   décrypter de plus grandes quantités de données sur Mac   OS X, vous pouvez utiliser le Common Security   Gestionnaire de services (CSSM) cryptographique   Gestionnaire de services. Ce gestionnaire a également   a des fonctions pour créer et vérifier   signatures numériques, générer   clés cryptographiques, et créer   hachage cryptographique. Dans l'iPhone OS,   le certificat, la clé et la confiance   L'API de services fournit des fonctions pour   générer des clés de chiffrement, créer   et vérifier les signatures numériques, et   chiffrer des blocs de données; voir    certificat, clé et confiance Prestations de service   Référence .

C’est toujours un choix entre performances (le cryptage n’est tout simplement pas gratuit) et sécurité (sécurité et tout le reste, vraiment). Mais qu'y a-t-il d'autre de nouveau? Si vous gardez les fichiers individuels suffisamment petits, le déchiffrement ne vous ralentira peut-être pas beaucoup. Alternativement, vous pouvez envisager le déchiffrement prédictif comme si vous avez certains fichiers déchiffrés en arrière-plan, par exemple ceux liés au fichier en cours de lecture, etc. comme je n'ai pas laissé tomber l'argent pour une licence). Vous pouvez également réaliser des gains de performances en ne faisant que crypter les fichiers qui en ont réellement besoin; un index / une table des matières ou un autre fichier auquel on accède fréquemment doivent-ils vraiment être chiffrés? Est-ce que cela compte comme une adresse IP qui inquiète votre client?

Pour la compression, je peux recommander QuickLZ (moteur le plus rapide que j'ai vu, excellent taux de compression).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top