Confus comment utiliser AES et HMAC
Je suis un peu confus comment utiliser AES et HMAC (basé sur l'algorithme SHA-256) d'une manière appropriée en cas de transmission du message chiffré à partir du serveur vers le client ou vice versa
Corrigez-moi s'il vous plaît si la méthode suivante est fausse:
- Prendre la clé de cryptage du fichier de clés (par exemple, nous proposons d'utiliser l'algorithme AES-256 et nous avons déjà un valide 256 bits, la longueur de la clé)
- Générer de l'aléatoire IV pour AES-256 pour être sûr que le même texte brut sera de chiffrement différente de sortie.
- Calculer HMAC-SHA-256 avec le texte en clair et sécurisé. (La première question: dois-je utiliser IV pour HMAC calcul? Par exemple ajouter à la clé?)
- Chiffrer le texte en clair à l'aide de l'algorithme AES-256.
- De composer un message pour le client comme suit: HMAC + IV+ ENCRYPTED_MESSAGE
La grande question est: est ce que c'est possible de ne pas envoyer IV du client, mais au lieu de générer de la même manière et toujours être crypto-fort? Ou est-ce ok pour envoyer le IV trop?
J'ai à la fin avec l'aléatoire de la génération IV, car il est nécessaire que le même texte brut sera à la fin de cryptage différents résultats.
source d'informationauteur Valentin
Vous devez vous connecter pour publier un commentaire.
De ne pas envoyer de hmac(message),aes(message). Si vous envoyez le même message deux fois, n'importe qui peut le dire. En outre, vous avez besoin pour mac le chiffrement de texte pour éviter les attaques telles que le padding oracle attaque.
IV: En général, le moyen le plus facile de traiter avec le iv est à ajouter, puisque c'est de longueur fixe, pour le texte chiffré.Ensuite, vous pouvez tout simplement lire ces octets avant de déchiffrer. IV peut être publique, mais ils doivent être aléatoire.
HMAC: façon la plus Simple, si votre bibliothèque prend en charge, est d'utiliser AES en mode GCM (ou, du moins, de préférence, EAX). Ce n'est pas réellement un HMAC, mais il fournit authentifié de chiffrement qui est tout aussi bon.Si ce ne sont pas pris en charge :
Vous avez besoin de calculer le hmac à la fois sur le iv et le texte chiffré. si || est la concaténation ( ce qui peut se faire à dire la matrice de copie si vous traitez avec des tableaux d'octets), alors vous voulez
Et ensuite l'envoyer (tag,Cryptogramme). À l'autre extrémité, vous exécutez la même hmac appel à régénérer le tag et le comparer au reçu de la balise avec l'aide de l'un. Comparer le sha1 et sha256 les hachages des balises au lieu de directement de sorte que vous n'avez pas de fuite où l'échec de la comparaison.
Vous devez utiliser une autre clé pour le hmac. Dans la pratique, virer la somme sha1 de votre clé de chiffrement est assez bon.