2016-11-04 3 views
1

Je suis nouveau dans le développement d'iOS 3. Maintenant, je travaille sur un projet qui a besoin de cryptage, le code d'authentification de message (MAC) et Hashed-base-MAC. Ces algorithmes nécessitent des clés secrètes. Je sais qu'il est une mauvaise pratique à coder en dur les clés à l'intérieur du code, comme:swift3 - Comment protéger la clé secrète

let key = "secretkeyabc123" 

Cherché et lire quelques articles comme: In iOS, how can I store a secret "key" that will allow me to communicate with my server?

Depuis d'autres personnes peuvent effectuer l'ingénierie inverse, je suis trouver un moyen de protéger mes clés. Exigences:

  1. Pas de hachage de la clé. Le temps permet de le casser, ou avec une table hachée et un dictionnaire
  2. Peut ne pas se connecter à Internet (Mon application est une application hors ligne .Si votre réponse doit se connecter à Internet.) Oui, veuillez le signaler.
  3. Il s'agit d'une clé statique. Il peut changer tous les mois
  4. Il s'agit d'une clé de symétrie.

Les codes, le concept ou d'autres choses sont les bienvenus. Merci!

+0

"Le temps permet de le craquer" si vous vous inquiétez d'un laps de temps de l'ordre de la durée de vie de l'univers, alors je suppose. – Alexander

Répondre

0

Ne stockez pas la clé du tout. Effectuez un échange de clé Diffie-Hellman pour démarrer un canal crypté asymétriquement et utilisez ce canal pour envoyer une clé symétrique au client, qui peut être utilisée pour une utilisation ultérieure par le client.

0

Vérifiez le Keychain iCloud (en fonction de vos tags [ios], [swift], [touche]). Il fonctionne comme une base de données sécurisée qui permet de stocker en toute sécurité des informations telles que les mots de passe de connexion, les mots de passe réseau Wi-Fi, la gestion des cartes de crédit/débit (sans CVV) et remplissage automatique sur les pages Web et ailleurs lorsque l'utilisateur a besoin d'un accès instantané à eux. Ils sont toujours stockés cryptés à l'aide du cryptage AES 256 bits, stockés sur l'appareil et transférés depuis iCloud entre les appareils, et uniquement disponibles sur les appareils de confiance d'un utilisateur.