9
votes

Comment communiquer le vecteur d'initialisation d'AES au client pour cryptosystème hybride

J'ai besoin de mettre en œuvre la sécurité de la communication client-serveur. J'ai mis en place le Cryptosystème hybride

Pour chiffrer un message adressé à Alice dans un cryptosystème hybride, Bob procède les suivantes:

  1. obtient la clé publique d'Alice.
  2. génère une nouvelle clé symétrique pour le schéma d'encapsulation de données.
  3. crypte le message sous le schéma d'encapsulation de données, à l'aide de la clé symétrique vient de générer.
  4. chiffrer la clé symétrique dans le schéma d'encapsulation clé, à l'aide de la clé publique d'Alice.
  5. Envoyez ces deux cryptage à Alice.

    Pour déchiffrer ce chiffrement hybride, Alice procède les suivantes:

    1. utilise sa clé privée pour déchiffrer la clé symétrique contenue dans le segment d'encapsulation clé.
    2. utilise cette clé symétrique pour déchiffrer le message contenu dans le segment d'encapsulation de données.

      J'utilise RSA pour un cryptosystème de clé publique et des AES pour cryptosystème à clé symétrique. Tout fonctionne bien, mais je ne sais pas comment gérer le vecteur d'initialisation de AES. Actuellement, je suis concatéré la clé AES et l'initialisation vectorielle le cryptant avec la clé publique et l'envoi du serveur.

      Je voulais juste avoir des opinions sur cette approche. Comment ce problème est résolu par d'autres protocoles de communication SSL, etc.

      merci.


0 commentaires

3 Réponses :


2
votes

J'ai fait la même chose et j'ai géré la même manière - concaténate la clé AES avec le IV et les chiffrer tous les deux.

Vous pouvez également simplement envoyer la clé et utiliser la clé elle-même pour générer un IV - par exemple en utilisant les 128 premiers bits d'un hachage de la clé en tant que IV. Cela devrait être ok Security-sage tant que vous générez une nouvelle clé AES pour chaque session et que vous n'utilisez pas la même clé AES sur le même IV.


0 commentaires

2
votes

Il n'y a aucune raison de chiffrer le IV - vous pouvez envoyer cela dans le claire. Assurez-vous simplement de choisir un nouveau à chaque fois (de la même manière que vous faites la clé AES).

Cela dit, il est souvent pratique d'emballer la clé AES et IV ensemble. Le cryptage de 16 octets n'est pas aussi cher.


0 commentaires

11
votes

Vous ne chiffrez pas le IV. Placez-le avec la clé cryptée et envoyez-la (dans le clair) au destinataire.

Les normes pour cela existent. Ce schéma s'appelle "KeyTransRecipientInfo" dans CMS (sur lequel est basé S / MIME), et PGP offre un mode similaire. TLS inclut également le vecteur d'initialisation en tant que paramètre dans l'identifiant d'algorithme de cryptage clé, à l'aide de la même syntaxe ASN.1 en tant que CMS. Une bibliothèque robuste et open source pour effectuer cette opération est disponible pour de nombreuses plateformes.

À tout le moins, étudier la spécification CMS pourrait aider à éviter que certains des nombreux pièges dans une mise en œuvre de la maison à domicile. Voir §6.1 et §6.2.1 de RFC 3369.


0 commentaires