Cryptographie
GHASH est la fonction de hachage universelle de GCM : elle évalue un polynôme dans le corps de Galois à 2^128 éléments pour condenser données associées et texte chiffré en un bloc de 128 bits, qui devient le tag une fois masqué.
Calcul : Chaque bloc de 128 bits est ajouté par XOR à un accumulateur, lui-même multiplié par la clé de hachage H dans GF(2^128). H est le chiffrement AES d'un bloc nul sous la clé de session.
Pas un hachage cryptographique : Sans la clé H, sa sortie est imprévisible ; avec H, la fonction est linéaire et fabriquer des collisions devient trivial. GHASH sert à l'authentification, jamais à hacher des mots de passe ni à signer.
Masquage du tag : La sortie de GHASH est combinée par XOR avec le chiffrement AES du bloc compteur initial dérivé du nonce. D'où la gravité d'une répétition de nonce : deux tags sous le même masque permettent d'isoler H.
Performance : Sur processeur doté de multiplication sans retenue, GHASH va très vite, ce qui explique le succès d'AES-GCM dans TLS. Une multiplication maison à tables précalculées, en revanche, offre un canal auxiliaire par cache à qui passe par là.
Ce qui arrive si on s'en passe
Sans GHASH, GCM se réduit au mode compteur : un chiffrement sans aucune intégrité. Un attaquant peut alors inverser des bits choisis du texte chiffré et obtenir exactement les modifications voulues dans le texte clair, sans connaître la clé, et les en-têtes transmis en clair ne sont plus protégés. GHASH n'est lui-même sûr que si sa clé H reste secrète : une répétition de nonce sous la même clé permet de la calculer, donc de forger des tags valides pour n'importe quel message. Un tag tronqué affaiblit aussi la protection plus vite qu'avec un MAC classique.
Explication de la marmotte
Quand on envoie un message brouillé, on veut aussi prouver qu'il n'a pas été modifié en chemin. Cette fonction mélange tous les morceaux du message avec un nombre secret, à la manière d'un calcul de somme très particulier, pour obtenir un petit résumé. Le destinataire, qui connaît le même secret, refait le calcul : si le résultat diffère, le message a été trafiqué. Ce résumé n'est pas une empreinte universelle comme celles qui servent à ranger des mots de passe : sans le secret il ne prouve rien, et si le secret fuit, n'importe qui peut fabriquer de faux résumés.
Où ce terme est utilisé
- Chiffrer et authentifier en une seule construction (3 occurrences)
- RNG matériel ou PRNG dans un HSM (1 occurrence)
