2015-10-13 1 views
0

L'application pourrait avoir une clé privée codée en dur et mon serveur pourrait avoir le public et l'application pourrait tout signer. Mais alors un piratage pourrait identifier la clé privée dans le code objet et écrire une application malveillante qui signe tout avec la même clé. Ensuite, cette application pourrait utiliser mon serveur.Dans iOS, quel est le moyen standard de garder les applications inconnues hors de votre serveur?

L'application peut effectuer un échange de clés avec mon serveur, mais comment le serveur sait-il que l'application est authentique lors de l'échange de clés?

Répondre

1

Essentiellement, vous ne pouvez pas savoir.

La raison est simple: puisque tout le monde peut obtenir au client et ont tout le client est et connaît par ingénierie inverse le client (auquel ils ont tout ce qu'ils doivent perfrom que), il n'y a rien qui peut empêcher à partir de répondre à n'importe quel défi que vous pourriez définir à ce que la vraie application répondrait.

Toutefois, vous pouvez rendre la vie plus dure sur de fausses applications. Mais ils pourraient (si c'est bien) donner la réponse de toute façon.

E.g. comment rendre plus difficile: Le serveur envoie un défi à l'application cliente pour calculer par ex. le CRC32 (ou md5, sha-1, sha-256, ... n'a pas d'importance en tant que tel) de l'application elle-même d'un début donné à une fin donnée. Si vous définissez ces points de début et de fin comme étant entièrement aléatoires pour chaque défi que vous envoyez, vous forcez essentiellement l'application fausse à avoir le code compilé de l'application réelle en entier ... Donc vous placez le fardeau d'avoir la vraie application (pas le forcer à exécuter réellement le code (non modifié), ayant juste le code réel non modifié). Prenez soin de prendre en charge le côté serveur en autorisant plusieurs versions du client, etc., ou vous ne pouvez plus mettre à niveau les clients. Toute personne distribuant une fausse application serait donc forcée de violer vos droits d'auteur sur la vraie application (et vos avocats auraient peut-être plus de facilité).

Alternatives:

Pour choisir une alternative, vous devez comprendre pourquoi il est (donc) important d'avoir votre client? Si le client contient des secrets: supprimez-les, affichez uniquement le client et disposez d'un modèle à trois niveaux dans lequel vous laissez uniquement l'utilisateur exécuter la partie d'affichage et garder tous les secrets sur vos serveurs.

Si vous obtenez vos revenus en vendant une application, donnez-la gratuitement et vendez des comptes sur votre serveur. Utilisez l'authentification pour cela: vous pouvez authentifier les utilisateurs (login & mot de passe, authentification 2 facteurs réels, ...) vous pouvez également les empêcher de changer radicalement leur position géographique en peu de temps, interdire les connexions simultanées, ... le prix est le cerceau pour l'utilisateur de sauter à travers. Et ils pourraient utiliser d'autres clients néanmoins.

Si vous autorisez la logique (comme par exemple dans les jeux en ligne) à utiliser la puissance de l'unité centrale de l'utilisateur pour effectuer des opérations, vous pouvez toujours surveiller un niveau logique sur le serveur: par ex. si cela prend 5 minutes au minimum pour accomplir une tâche dans le vrai client, et si le client se présente comme «accompli» avant que ces 5 minutes soient faites: vous avez un tricheur ... De même, assurez-vous que tous les atouts importants sont seulement donné par le serveur, ne faites pas confiance aux clients ...

+0

swa66 vous semblez connaître vos affaires. Mon profil inclut une adresse e-mail. (C'est mon adresse e-mail anonyme, mais je la vérifie de temps en temps.) Votre profil n'a pas d'adresse e-mail. Pouvons-nous correspondre brièvement un jour? –

+0

Regardez WhatsApp. Ils facturent 0,99 $ pour l'application, puis vous créez un compte gratuitement. Êtes-vous en train de dire que quelqu'un pourrait désosser WhatsApp et écrire un produit concurrent qui utilise simplement le serveur de WhatsApp? Si oui, ils pourraient même être en mesure de message avec les utilisateurs WhatsApp existants. –

+0

Votre email: ne pas le voir sur votre profil - Je suppose qu'ils gardent cela privé ... ou je pourrais avoir besoin de plus de 'rep' pour accéder à ces fonctionnalités. – swa66