GCM (Galois / Counter Mode), en particulier en combinaison avec AES, est de facto un étalon-or depuis des années. Crypter et authentifier en une seule étape, cest tout simplement trop génial, et des termes comme AEAD fonctionnent bien pour impressionner une fille, ce serait donc gagnant-gagnant. Mais, blague à part …

Je « ai Je me suis toujours demandé ce qui le rendait si spécial, et plus jy pense, moins je comprends. Si vous le regardez, alors la magie globale nest pas du tout géniale. Ou peut-être que je suis juste trop stupide pour la gogner (doù ma question).

Mes pensées:

Tout dabord, GCM est une forme de mode compteur . Ce qui signifie que contrairement à par ex. enchaînement de blocs de chiffrement, la sortie dun bloc dépend exactement dun bloc dentrée. Pire encore: vous pouvez modifier un seul bit et le résultat décrypté différera exactement de ce bit. Parce que si vous êtes honnête, un chiffrement par bloc en mode compteur nest pas du tout un  » chiffrement par bloc « , mais un PRNG (à clé) suivi dune opération XOR. Fondamentalement, un chiffrement de flux  » blocky « . Il ne faut pas grand-chose pour imaginer un scénario où quelquun pourrait en abuser pour modifier les messages de manière nuisible (par exemple, changez  » transaction: +5 000 \ $  » à  » transaction: -5 000 \ $ « ). Les chiffrements par blocs ont normalement la propriété innée de se transformer en charabia complet lorsque vous en retournez un morceau (plus, avec chaînage, tout le reste du message). Cest en fait une propriété plutôt agréable et souhaitable, que nous venons de jeter par-dessus bord sans raison valable.
Bien sûr, avec lauthentificateur , lattaque ci-dessus est difficile à réaliser car la falsification sera découverte. Mais fondamentalement, lauthentificateur ne résout que le problème que le choix du mode de fonctionnement introduit .

GHASH est un MAC qui prend en charge des données authentifiées supplémentaires. Daprès ce que je peux dire, cest « un mensonge pur et simple. Ou appelez-le  » exagération optimiste  » si vous voulez. Cest juste une fonction de compression avec des mathématiques non intuitives (pour les non-mathématiciens) derrière, mais au final, elle ne fait quune simple multiplication et jeter la moitié des bits dentrée avec léquivalent de  » débordement « . Cest exactement ce qui, avec des mathématiques plus banales, peut être fait en deux lignes de code C par bloc en une douzaine de cycles (ou si vous êtes daccord avec lutilisation de multiplications 32 bits plutôt que 64, peut être fait en parallèle, par exemple avec AVX2  » s vpmulld pour deux blocs complets en ~ 4 cycles).
Ceux qui se souviennent encore dIDEA se rappelleront quils ont utilisé le mod daddition 2 16 et le mod de multiplication 2 16 + 1 comme S-box qui avait la belle propriété dêtre réversible (un peu nécessaire si vous souhaitez décrypter). Malheureusement, cela ne pouvait pas être étendu à 32 bits car 2 32 +1 nest pas « ta nombre premier, donc toutes les entrées ne sont pas garanties dêtre relativement premières, et vous avez donc du mal à inverser lopération. Mais … cest très bien dans notre cas, nous ne le voulons pas notre fonction de compression doit être inversible! Alors vraiment,  » simple « , la multiplication ordinaire devrait également faire laffaire?

Donc, cette compression simple, sans spécial, sans magie la fonction se trouve être initialisée avec la clé et IV, ce qui rend la clé de sortie finale dépendante dune manière ou dune autre, donc cette fonction ordinaire devient effectivement un MAC. Si vous disposez de  » données supplémentaires « , il vous suffit de les insérer dans le hachage avant de chiffrer vos données, terminé. Encore une fois, ce nest pas quelque chose de très spécial.
Dans lensemble, ce nest rien que vous ne puissiez pas réaliser avec à peu près toutes les autres fonctions de hachage également.

Maintenant, Galois / counter suppose que le mode compteur doit être utilisé. Le mode compteur (et ses dérivés) ainsi que GHASH ont lavantage de pouvoir crypter / décrypter des blocs en parallèle. De plus, GHASH est trivialement parallélisable.
Yay, performance ! Mais soyons honnêtes, est-ce vraiment un avantage ou plutôt un énorme désavantage ?

Le temps nécessaire pour déchiffrer un gigaoctet ou un téraoctet importe-t-il message, et comment pouvez-vous mettre en parallèle ce travail? Ou des applications où vous voulez absolument pouvoir  » rechercher  » vers des positions aléatoires? Eh bien, il y a des applications où cela peut avoir de limportance, bien sûr. Le cryptage complet du disque vient à lesprit. Mais vous ne voudriez pas utiliser GCM dans ce cas puisque vous voulez que la taille dentrée et la taille de sortie soient identiques.

Pour un serveur (ou VPN) occupé, cela importera, ou du moins il semble , mais ceux-ci peuvent traiter tout en parallèle de toute façon car ils ont de nombreuses connexions simultanées.Donc, que vous puissiez ou non mettre en parallèle un flux ne fait vraiment aucune différence dans l’ensemble. Quen est-il des applications où il ny a que peu de connexions? Eh bien, vous ne transmettez normalement pas de téraoctets de données via un terminal de connexion, et si vous le faites, votre connexion Internet reste probablement le facteur limitant de toute façon, car les performances monocœur dépassent facilement la bande passante GbE, même sur les processeurs de bureau âgés de 7 à 8 ans. .
Daccord, vous devrez peut-être attendre 2 à 3 secondes de plus lors de lextraction dun fichier 7z chiffré de 2 To sur votre disque dur (si la création de milliers dentrées de répertoire nest pas vraiment le goulot détranglement, ce que je suis enclin à pense que ce sera le cas). À quelle fréquence avez-vous fait cela au cours de la dernière année? Moi: zéro fois.

Les seuls pour qui cela fait vraiment une différence est le  » méchants « , cest-à-dire exactement ceux que vous ne voulez pas avoir la vie facile. Effectivement, si vous pouvez effectuer une parallélisation triviale, les attaques deviennent beaucoup plus faciles. Jetez une pièce pleine de matériel dédié (GPU, FPGA, peu importe) au problème et laissez-le grincer. Aucune communication entre les nœuds nécessaire? Eh bien, parfait, ça ne peut pas aller mieux.
Est-ce vraiment un avantage? Je ne sais pas, pour moi cela ressemble à un énorme désavantage. Si quoi que ce soit, je voudrais rendre la parallélisation aussi difficile que possible, pas aussi facile que possible.

Donc … assez de réflexion, et à la question:

Quel est le chose fondamentale qui me manque dans GCM et qui le rend tellement génial que vous devriez absolument lutiliser?

Commentaires

  • Mais qui sont les  » les méchants  » est impossible à définir. Et cela a un impact ÉNORME sur les recommandations gouvernementales et les réponses de ce forum.

Réponse

TL; DR: GCM fournit des performances excellentes avec les meilleures propriétés de sécurité que nous attendons des chiffrements actuels (AEAD).

GCM utilise le CTR pour créer un chiffrement de flux. Cest une méthode bien étudiée, qui na quun seul inconvénient: elle a absolument besoin dune authentification pour éviter le retournement de bits. Avant GCM, CTR-then-MAC était la solution. Lun des principaux avantages des chiffrements de flux est labsence dattaques de remplissage (car il ny a pas besoin de remplissage). Un autre avantage est quAES-CTR peut bénéficier des instructions AES-NI.

GCM est CTR-then-MAC avec de meilleures performances . Une amélioration clé par rapport à CRT-then-MAC est la capacité à chevaucher lexécution du cryptage et de lauthentification. De plus, il sest avéré sûr dans le modèle de sécurité concret et il nest pas encombré de brevets, il est donc évident de lutiliser.

Il présente quelques inconvénients: il nest pas efficace dans le matériel embarqué et il est difficile à mettre en œuvre efficacement. Le dernier point est contré en utilisant des bibliothèques écrites par dautres. Cependant, ce sont les raisons pour lesquelles xchacha20-poly1305 est devenu populaire sur GCM.

Commentaires

  • Je dirais quune autre raison pour laquelle ChaCha20 a gagné en popularité est quil nest pas AES. Ne ‘ ne vous méprenez pas, AES est un excellent algorithme, mais mettre littéralement tous nos œufs dans le même panier nest peut-être pas la plus intelligente de toutes les idées. Et avoir un autre algorithme bien testé en dehors dAES est très utile
  • @ MechMK1 Je suis daccord avec vous , mais je nai pas écrit quils sont tous les raisons de la popularité de ChaCha20 ‘, parce que ‘ Ce nest pas la question posée ici. Mon point était t hat GCM nest pas considéré comme  » awesome  » comme le pense lOP.
  • Absolument vrai. Ce ‘ n’est pas une oie d’or, mais personne n’a jamais été viré pour avoir utilisé AES-GCM, pour ainsi dire.
  • Et cela ‘ nest pas grevé de brevets.
  • @StephenTouset Merci, jai modifié mon message pour inclure votre commentaire.

Réponse

Tout dabord, GCM est une forme de mode compteur. Ce qui signifie que contrairement à par ex. enchaînement de blocs de chiffrement, la sortie dun bloc dépend exactement dun bloc dentrée. Pire encore: vous pouvez modifier un seul bit et le résultat décrypté différera exactement de ce bit. Car si vous êtes honnête, un chiffrement par bloc en mode compteur nest pas du tout un « chiffrement par bloc », mais un PRNG (à clé) suivi dune opération XOR. Fondamentalement, un chiffrement de flux «par blocs». Il ne faut pas grand-chose pour imaginer un scénario où quelquun pourrait en abuser pour modifier les messages de manière nuisible (par exemple, changer « transaction: +5 000 \ $ » en « transaction: -5 000 \ $ »).

Lauthentification de message que GCM superpose au CTR rend sa malléabilité sans importance.

Les chiffrements par blocs ont normalement la propriété innée de se transformer en charabia complet lorsque vous retournez un seul bit (plus, avec le chaînage, le reste du message) . Cest en fait une propriété plutôt agréable et souhaitable, que nous venons de jeter par-dessus bord sans raison valable.

Cest très, très faux. Tout dabord , Le mode CBC souffre également dune sorte de faiblesse de malléabilité; si vous retournez un bit du texte chiffré, vous ne brouillez quun seul bloc et retournez le bit correspondant du bloc net. Et il y a dautres attaques de malléabilité contre CBC; voir, par exemple, lattaque EFail .

Plus généralement, votre idée informelle des messages « qui se transforment en charabia » nest pas suffisante. Nous avons absolument besoin dordinateurs pour détecter mécaniquement, avec une réponse définitive «oui / non», lorsquun message chiffré a été falsifié. Il ne suffit pas de croire quun humain sera dans la boucle suffisamment tôt pour repérer « charabia ».

GHASH est un MAC qui prend en charge des données authentifiées supplémentaires. Daprès ce que je peux dire, cest un mensonge pur et simple. Ou appelez cela une «exagération optimiste» si vous voulez. Cest juste une fonction de compression avec des mathématiques non intuitives (pour les non-mathématiciens) derrière, mais à la fin cela ne fait rien dautre quune simple multiplication et jeter la moitié des bits dentrée avec léquivalent de « débordement ».

Le MAC ne fonctionne pas parce que les utilisateurs ne comprennent pas les calculs. Cest comme dire que les gens ne peuvent pas regarder la télévision par satellite parce quils ne le font pas « Je sais pas le calcul. Les MAC à champ fini sont une construction standard, connue depuis des décennies maintenant.

Cest exactement ce qui, avec des mathématiques plus banales, peut être fait en deux lignes de C code par bloc en une douzaine de cycles (ou si vous êtes daccord avec lutilisation de multiplications 32 bits plutôt que 64, peut être fait en parallèle, par exemple avec AVX2 « s vpmulld pour deux blocs complets en ~ 4 cycles).

Il y a un débat réel sur la question de savoir si les MAC basés sur des champs de Galois comme GHASH, ou les MAC basés sur des champs principaux comme Poly1305, sont un choix plus pratique. Cela dépend en grande partie des compromis entre la conception de MAC pour mettre laccent sur les implémentations logicielles et matérielles; par exemple, les multiplications de terrain de Galois sont cauchemardesques dans le logiciel, mais beaucoup plus simples que les multiplications arithmétiques dans le matériel. Une bonne partie des compromis dépend également de la vulnérabilité aux attaques par canal latéral, par exemple, lanalyse de puissance .

Mais il ny a pas de débat pour savoir si les champs de Galois ou les champs de premier choix sont fondamentalement nd. Le calcul vérifie les deux.

Yay, performance! Mais soyons honnêtes, est-ce vraiment un avantage, ou plutôt un énorme inconvénient?

Dites cela aux interminables défilés dingénieurs à travers les décennies qui ont résisté à lajout de cryptage aux produits en raison de leurs performances. Et ne pensez pas seulement aux PC puissants; pensez aux appareils embarqués et ayez très peur de lInternet des objets.

Je veux dire, ce nest pas du tout un problème mort. Au cours des deux dernières années, un débat animé a eu lieu et le développement dune nouvelle construction cryptographique pour prendre en charge le chiffrement complet du disque sur les appareils Android bas de gamme qui ont été jugés pas assez puissant pour les algorithmes basés sur AES quAndroid proposait auparavant.

Les seuls pour qui [la performance] fait vraiment une différence sont les « méchants », cest-à-dire exactement ceux pour qui vous ne voulez pas vie facile. Effectivement, si vous pouvez effectuer une parallélisation triviale, les attaques deviennent beaucoup plus faciles. Jetez une salle pleine de matériel dédié (GPU, FPGA, peu importe) au problème et laissez-le disparaître.

Les chiffrements résolvent ce problème en utilisant des tailles de clé suffisamment grandes, et non en ralentissant les chiffrements. Le problème que vous soulevez se pose dans la cryptographie basée sur un mot de passe où vous ne le faites pas. « Je nai pas de clés secrètes suffisamment entropiques. Les clés symétriques de 256 bits seront à jamais plus que suffisantes pour vaincre toute attaque par force brute dans notre univers.

Quest-ce que la chose fondamentale qui me manque à propos de GCM qui le rend si génial que vous devriez absolument lutiliser?

Vous nêtes pas obligé dutiliser GCM . Cest en même temps:

  • Fundamentall y son et très largement pris en charge dans le matériel;
  • Encombré par un certain nombre d’inconvénients que vous n’avez pas évoqué, comme des performances logicielles médiocres et un échec d’authenticité catastrophique lors de la non-réutilisation, qui le disqualifient souvent dans certains contextes pratiques .

Si vous disposez dun matériel compatible AES-GCM natif et dun logiciel bien audité qui en tire parti, il ne serait pas judicieux de ne pas lavoir parmi vos meilleurs candidats.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *