AES256 CBC + HMAC SHA256 assurant la confidentialité * et * l'authentification?

Je suis en train de penser à l'aide de AES256-CBC + HMAC SHA-256 comme un bloc de construction pour les messages qui assure à la fois la confidentialité et l'authentification.

En particulier, d'envisager ce scénario:

  • Alice est en possession d'une clé publique appartenant à Bob (l'échange de clé et d'un algorithme est en dehors de la portée de cette question). Alice a une identification de la clé K, a également partagé avec Bob, qu'elle peut utiliser pour s'identifier avec. Seulement Alice et Bob connaît la clé K.
  • Alice crypte (nonce || K) à l'aide de la clé publique de Bob.
  • Bob déchiffre le paquet et a maintenant a K et nonce.
  • Bob utilise l'algorithme SHA-256 avec SHA256(K || nonce) pour donner un K(e) de 256 bits.
  • Bob utilise l'algorithme SHA-256 avec SHA256(K || nonce + 1) pour donner un K(s) de 256 bits.

Maintenant, pour chaque paquet de Bob veut envoyer Alice, il effectue les opérations suivantes:

  • Créer une nouvelle aléatoire de 128 bits IV
  • Crypte le message avec la IV et K(e) comme clé.
  • Crée un SHA-256 HMAC avec K(s) et (IV || message Crypté) en tant que données.
  • Enfin envoie (IV || HMAC || Cryptogramme) à Alice

Alice a également calculé K(e) et K(s), et suit la procédure suivante lors de la réception de données à partir de Bob:

  • Diviser le message en IV, texte chiffré et HMAC.
  • Calculer le HMAC à l'aide de K(s), IV et chiffré.
  • Comparer HMAC avec le HMAC envoyé. Si cela correspond, Alice considère ce message authentifié comme un message envoyé par Bob, sinon il est éliminé.
  • Alice déchiffre le message à l'aide de K(e)

N'présent protocole s'assurer que Alice déchiffre uniquement les messages de Bob, en supposant que nul autre que Bob peut lire le message crypté qu'Alice envoie lui chiffré à l'aide de sa clé publique?

I. e. ne des messages construits de cette manière d'assurer à la fois la confidentialité et l'authentification?

Remarque: Si le protocole exige Bob envoyer plusieurs messages, ce système a besoin d'une légère modification pour éviter les attaques de relecture.

P. S. je suis conscient de l'AES-GCM/CCM, mais ce schéma serait de travailler avec la base AES, SHA et HMAC algorithmes que l'on trouve dans la plupart des crypto paquets. Cette solution pourrait également être plus lent, mais qui est aussi en dehors de la portée de la question.

source d'informationauteur Nuoji