Comment stocker une clé API secrète dans le binaire d'une application?
je crée un client Twitter pour Mac OS X et j'ai un secret de consommation. A ma connaissance, Je ne devrais pas partager cela!-2 -- > secret clé. Le problème est que quand je le mets comme une chaîne littérale dans mon application et l'utilise, comme ceci:
#define QQTwitterConsumerSecret @"MYSECRETYOUMAYNOTKNOW"
[[QQTwitterEngine alloc] initWithConsumerKey:QQTwitterConsumerKey consumerSecret:QQTwitterConsumerSecret];
il est dans la section données du binaire de mon application. Les Hackers peuvent lire ça, démonter l'application, etc.
Est-il un moyen sûr de stocker le Consommateur secret? Dois-je crypter il?
4 réponses
Il n'y a pas de véritable solution parfaite. Peu importe ce que tu fais, quelqu'un qui s'y consacre pourra le voler.
même Twitter pour iPhone/iPad/Android/mac / etc. il y a une clé secrète là-dedans, ils l'ont probablement cachée d'une façon ou d'une autre.
par exemple, vous pouvez le découper en différents fichiers ou chaînes, etc.
Note: En utilisant un éditeur hex, vous pouvez lire des chaînes ascii dans un binaire, ce qui est la manière la plus simple. En le brisant en différents morceaux ou en utilisant les appels de fonction pour créer la clé secrète fonctionne habituellement pour rendre ce processus plus difficile.
Vous pouvez simplement base64-Encoder pour l'obscurcir. Ou, mieux idée, création la clé au lieu de simplement stocker - écrire quelque chose comme ceci:
char key[100];
++key[0]; ... ; ++key[0]; // increment as many times as necessary to get the ascii code of the first character
// ... and so on, you get the idea.
cependant, un très bon hacker le trouvera quoi qu'il arrive; la seule façon de vraiment le protéger des yeux des autres est d'utiliser une fonction de hachage sécurisée, mais alors vous ne pourrez pas le récupérer, aussi :)
vous ne devez pas utiliser une clé api secrète dans une application qui ne tourne pas uniquement sur votre serveur.
Même si c'est parfaitement caché.. vous pouvez toujours fouiner sur les données qui passent à travers le fil. Et puisque c'est votre appareil, vous pouvez même trafiquer avec SSL (homme au milieu avec un certificat créé par une CA personnalisée qui a été ajoutée à la liste de CA de confiance de l'appareil). Ou vous pouvez vous connecter à la bibliothèque SSL pour intercepter les données avant d'être crypté.
une réponse très tardive...
si vous configurez votre propre serveur, vous pouvez l'utiliser pour vous aider application de bureau obtenir autorisé par les utilisateurs sur twitter sans partager (i.e.: embedding) votre clé secrète.
Vous pouvez utiliser cette méthode:
quand un utilisateur installe votre application de bureau elle doit l'enregistrer avec twitter et avec votre serveur *) * ) L'application demande au serveur de générer L'URL de la requête token * ) Le serveur envoie L'URL générée à l'application *) L'application dirige L'utilisateur à l'URL authorize * ) L'Utilisateur autorise votre application sur twitter et y ajoute le NIP généré * ) Utiliser le NIP que l'application saisit le token * ) Toute autre communication utilise le jeton et n'implique pas votre serveur
Note: l'application se connecte à votre serveur en utilisant les informations d'identification (par exemple: id et mot de passe) de votre serveur.