2017-10-06 8 views
0

J'ai besoin de crypter certaines chaînes de texte en utilisant les clés du côté client, puis décrypter cette chaîne cryptée sur le côté serveur en utilisant la même clé utilisée pour le cryptage sur le côté client. Donc, d'après ce que je comprends, AWS KMS est construit sur AES.Pouvez-vous utiliser le cryptage AES sur le client et le cryptage KMS sur le serveur, car KMS utilise AES?

Puis-je utiliser le cryptage AES en Javascript en utilisant CryptoJS sur le client et AWS KMS SDK sur le serveur pour le décrypter?

La raison de cette question est que je peux utiliser AWS Javascript SDK sur le côté client (navigateur), mais ... Je pense que AWS Javascript SDK aura probablement une grande empreinte mémoire. Et je ne veux pas initialiser AWS config etc sur le côté client non plus (pas sûr si je dois faire cela pour simplement utiliser la fonction de chiffrement unique à partir de AWS KMS JS SDK). CryptoJS semble être plus lisse et a une faible empreinte mémoire. Et il prend en charge AES. Je veux garder ma tâche au minimum ... car le but principal ici est de faire du chiffrement côté client, puis de le décrypter sur le serveur en utilisant un chiffrement symétrique.

Répondre

1

Ce serait une coïncidence si les deux implémentations correspondent. Habituellement, il ne correspondra pas car AES est seulement l'algorithme de chiffrement, mais ces cadres de chiffrement utilisent plus que cela. Par conséquent, tous les autres algorithmes doivent correspondre aussi:

  1. L'algorithme de dérivation de clé utilisée (crée la clé AES du mot de passe fourni)
  2. Le mode de chiffrement utilisé. Il y a très différents modes de chiffrement (BCE, CBC, OFB, GCM, ...) résultant dans les textes de chiffrement totalement différentes
  3. Le rembourrage utilisé (le cas échéant par le mode de chiffrement)

Seulement si ces trois algorithmes sont les mêmes sur le côté client et serveur, vous serez en mesure de crypter avec un cadre et décrypter avec l'autre.