/ / Transition vers de nouveaux algorithmes de cryptage - ios, objective-c, cryptage, cryptographie, migration

Transition vers de nouveaux algorithmes de chiffrement - ios, objectif-c, chiffrement, cryptographie, migration

Comment peut-on passer des données cryptées à un nouvel algorithme / paramètres de cryptage dans une application iOS? Je ne demande pas exactement comment faire cela avec du code, c’est plutôt un question conceptuelle.

Des milliers de personnes utilisent actuellement monApplication iOS pour chiffrer leurs données. J'ai trouvé des problèmes avec les méthodes de cryptage actuelles. Afin de résoudre ces problèmes, il me faudrait mettre en place un système de cryptage amélioré (voir les détails ci-dessous) et faire la transition des utilisateurs actuels vers le nouveau système.

Je ne suis pas sûr de savoir comment migrer les utilisateurs versle nouveau système sans les inviter à entrer leurs clés privées, à décrypter et à rechiffrer avec le nouveau système. Idéalement, cette transition devrait être aussi transparente et invisible que possible. Si la transition ne fonctionne pas, je crains que les utilisateurs perdent leurs données ou deviennent frustrés.

Ancienne méthode de cryptage

  • AES 256 bits
  • Mode CBC

Nouvelle méthode de cryptage

  • AES 256 bits
  • Mode CBC
  • Extension de mot de passe avec PBKDF2
  • Salage de mot de passe
  • IV aléatoire
  • Hash HMAC

Avez-vous des idées sur la manière de procéder pour la transition entre ces deux systèmes de cryptage AES?

Réponses:

3 pour la réponse № 1

Les clés de cryptage actuelles sont-elles bonnes? Si c'est le cas, vous pouvez les conserver et les envelopper avec la nouvelle fonction de déviation de clé. Cela permet à l'utilisateur de changer son mot de passe sans avoir à rechiffrer les données. Si les clés sont trop faibles, vous devrez déchiffrer et rechiffrer les données.

Je vois "Mot de passe salé" et "Hash HMAC", vousPensez plutôt à utiliser PBKDF2 pour créer des clés de chiffrement à partir d'un mot de passe / phrase secrète fourni par l'utilisateur. Utilisez la fonction d’étalonnage pour choisir le nombre de tours.

Si vous pensiez à l’avenir, vous avez un indicateur de version et, le cas échéant, vous pouvez simplement chiffrer les nouvelles données avec la nouvelle version de schéma de clé et assurer la compatibilité ascendante.

Je me demande ce que l'encodage Base64 fait avec le cryptage, sinon pour transporter les données cryptées via une interface qui ne peut pas gérer les octets 8 bits tels que JSON et XML.