Une analyse formelle a été réalisée par Phil Rogaway en 2011, aquí . La section 1.6 donne un résumé que je retranscris ici, en ajoutant mon propre accent en gras (si vous êtes impatient, sa recommandation est d'utiliser le mode CTR, mais je vous suggère de lire mes paragraphes sur l'intégrité des messages par rapport au cryptage ci-dessous).
Notez que la plupart d'entre elles exigent que le IV soit aléatoire, ce qui signifie non prévisible et doit donc être généré avec une sécurité cryptographique. Cependant, certaines requièrent uniquement un "nonce", qui n'exige pas cette propriété mais uniquement qu'il ne soit pas réutilisé. Par conséquent, les conceptions qui s'appuient sur un nonce sont moins sujettes aux erreurs que celles qui ne le font pas (et croyez-moi, j'ai vu de nombreux cas où le CBC n'est pas mis en œuvre avec une sélection correcte des IV). Vous verrez donc que j'ai ajouté du gras lorsque Rogaway dit quelque chose comme "la confidentialité n'est pas atteinte lorsque le IV est un nonce", cela signifie que si vous choisissez votre IV cryptographiquement sûr (imprévisible), alors pas de problème. Mais si vous ne le faites pas, alors vous perdez les bonnes propriétés de sécurité. Ne jamais réutiliser une perfusion pour l'un ou l'autre de ces modes.
Il est également important de comprendre la différence entre l'intégrité des messages et le cryptage. Le cryptage cache les données, mais un attaquant peut être en mesure de modifier les données cryptées, et les résultats peuvent potentiellement être acceptés par votre logiciel si vous ne vérifiez pas l'intégrité du message. Alors que le développeur dira "mais les données modifiées reviendront sous forme de déchets après le décryptage", un bon ingénieur en sécurité trouvera la probabilité que les déchets provoquent un comportement indésirable dans le logiciel, puis il transformera cette analyse en une véritable attaque. J'ai vu de nombreux cas où le chiffrement était utilisé mais où l'intégrité du message était vraiment plus nécessaire que le chiffrement. Comprenez ce dont vous avez besoin.
Je dois préciser que, bien que la GCM assure à la fois le cryptage et l'intégrité des messages, sa conception est très fragile : si vous réutilisez un IV, vous êtes fichu - l'attaquant peut récupérer votre clé. D'autres conceptions sont moins fragiles. Personnellement, j'ai peur de recommander la GCM en raison de la quantité de codes de chiffrement médiocres que j'ai vus dans la pratique.
Si vous avez besoin des deux, intégrité du message et chiffrement, vous pouvez combiner deux algorithmes : on voit généralement CBC avec HMAC, mais il n'y a aucune raison de s'attacher à CBC. Ce qu'il faut savoir, c'est que chiffrer d'abord, puis MAC le contenu chiffré et non l'inverse. De plus, l'IV doit faire partie du calcul du MAC.
Je ne suis pas au courant des problèmes de propriété intellectuelle.
Maintenant, passons aux bonnes choses du Professeur Rogaway :
Modes de chiffrement par blocs, chiffrement mais pas intégrité du message
BCE : Un chiffrage par blocs, ce mode permet de chiffrer les messages qui sont un multiple de n bits en chiffrant séparément chaque morceau de n bits. Les propriétés de sécurité sont faibles la méthode laisse subsister l'égalité des blocs à la fois dans la position des blocs et dans le temps. D'une valeur considérable pour l'héritage, et d'une valeur en tant que bloc de construction pour d'autres schémas, mais le mode n'atteint aucun objectif de sécurité généralement souhaitable en soi et doit être utilisé avec beaucoup de prudence ; La BCE ne doit pas être considérée comme un mode de confidentialité "généraliste". .
CBC : Un schéma de cryptage basé sur l'IV, le mode est sûr comme un schéma de cryptage probabiliste, réalisant l'indiscernabilité des bits aléatoires, en supposant un IV aléatoire. La confidentialité n'est pas atteinte si le IV est simplement un nonce. ni s'il s'agit d'un nonce chiffré sous la même clé que celle utilisée par le schéma, comme la norme suggère incorrectement de le faire. Les ciphertexts sont très malléables. Aucune sécurité d'attaque par texte chiffré choisi (CCA). La confidentialité est perdue en présence d'un oracle de remplissage correct pour de nombreuses méthodes de remplissage. Le chiffrement est inefficace car il est intrinsèquement sériel. Largement utilisé, les propriétés de sécurité du mode de confidentialité uniquement entraînent une mauvaise utilisation fréquente. Peut être utilisé comme un bloc de construction pour les algorithmes CBC-MAC. Je ne peux identifier aucun avantage important par rapport au mode CTR.
BFC : Un schéma de cryptage basé sur l'IV, le mode est sûr comme un schéma de cryptage probabiliste, réalisant l'indiscernabilité des bits aléatoires, en supposant un IV aléatoire. La confidentialité n'est pas atteinte si l'IV est prévisible. ni si elle est faite par un nonce chiffré sous la même clé utilisée par le schéma, comme la norme suggère incorrectement de le faire. Les Ciphertexts sont malléables. Pas de sécurité CCA. Le chiffrement est inefficace car il est intrinsèquement sériel. Le schéma dépend d'un paramètre s, 1 ≤ s ≤ n, typiquement s = 1 ou s = 8. Inefficace car nécessitant un appel au blockcipher pour traiter seulement s bits . Le mode atteint une propriété intéressante d'"auto-synchronisation" ; l'insertion ou la suppression d'un nombre quelconque de caractères de s bits dans le texte chiffré ne perturbe que temporairement le décryptage correct.
OFB : Un schéma de cryptage basé sur IV, le mode est sûr comme un schéma de cryptage probabiliste, réalisant l'indiscernabilité des bits aléatoires, en supposant un IV aléatoire. La confidentialité n'est pas atteinte si le IV est un nonce, bien qu'une séquence fixe de IV (par exemple, un compteur) fonctionne bien. Les cryptogrammes sont très malléables. Pas de sécurité CCA. Le cryptage et le décryptage sont inefficaces car ils sont intrinsèquement sériels. Crypte nativement des chaînes de n'importe quelle longueur de bit (pas de remplissage nécessaire). Je ne peux identifier aucun avantage important par rapport au mode CTR.
CTR : Un schéma de cryptage basé sur IV, le mode atteint l'indiscernabilité des bits aléatoires en supposant un nonce IV. En tant que schéma sécurisé basé sur un nonce, le mode peut également être utilisé comme schéma de cryptage probabiliste, avec un IV aléatoire. Échec complet de la confidentialité si un nonce est réutilisé lors du cryptage ou du décryptage. La parallélisation du mode le rend souvent plus rapide, voire beaucoup plus rapide dans certains cas, que d'autres modes de confidentialité. Un bloc de construction important pour les schémas de cryptage authentifié. Dans l'ensemble, il s'agit généralement du meilleur moyen, et le plus moderne, de réaliser un cryptage exclusivement privé.
XTS : Un schéma de cryptage basé sur l'IV, le mode fonctionne en appliquant un chiffrement par blocs modifiable (sécurisé comme un strong-PRP) à chaque bloc de n bits. Pour les messages dont la longueur n'est pas divisible par n, les deux derniers blocs sont traités spécialement. La seule utilisation autorisée de ce mode est le chiffrement de données sur un dispositif de stockage structuré en blocs. La faible largeur du PRP sous-jacent et le mauvais traitement des blocs finaux fractionnaires posent problème. Il serait plus efficace, mais moins souhaitable, d'utiliser un chiffrement par blocs (large) sécurisé par le PRP.
MACs (intégrité des messages mais pas de cryptage)
ALG1-6 : Une collection de MAC, tous basés sur le CBC-MAC. Trop de schémas. Certains sont prouvés sûrs en tant que VIL PRFs, d'autres en tant que FIL PRFs, et certains n'ont pas de sécurité prouvable. Certains des schémas admettent des attaques dommageables. Certains des modes sont datés. La séparation des clés n'est pas suffisamment prise en compte pour les modes qui en disposent. Ne devrait pas être adopté en masse, mais une sélection des "meilleurs" schémas est possible. Il serait également possible de n'adopter aucun de ces modes, en faveur de CMAC. Certains des MAC de la norme ISO 9797-1 sont largement normalisés et utilisés, notamment dans le secteur bancaire. Une version révisée de la norme (ISO/IEC FDIS 9797-1:2010) sera bientôt publiée [93].
CACM : Un MAC basé sur le CBC-MAC, le mode est provablement sûr (jusqu'à la limite d'anniversaire) comme un (VIL) PRF (en supposant que le blockcipher sous-jacent est un bon PRP). Frais généraux essentiellement minimes pour un schéma basé sur CBCMAC. La nature intrinsèquement sérielle est un problème dans certains domaines d'application, et l'utilisation avec un chiffrement par blocs de 64 bits nécessiterait une nouvelle clé occasionnelle. Plus propre que la collection de MACs de l'ISO 9797-1.
HMAC : Un MAC basé sur une fonction de hachage cryptographique plutôt que sur un blockchain (bien que la plupart des fonctions de hachage cryptographique soient elles-mêmes basées sur des blockchips). Le mécanisme bénéficie de fortes limites de sécurité prouvables, bien que ce ne soit pas à partir des hypothèses préférées. De multiples variantes étroitement liées dans la littérature compliquent la compréhension de ce qui est connu. Aucune attaque dommageable n'a jamais été suggérée. Largement normalisé et utilisé.
GMAC : Un MAC basé sur un nonce qui est un cas particulier de GCM. Il hérite de nombreuses caractéristiques, bonnes et mauvaises, du GCM. Mais l'exigence de nonce n'est pas nécessaire pour un MAC, et ici elle apporte peu d'avantages. Attaques pratiques si les tags sont tronqués à ≤ 64 bits et si l'étendue du décryptage n'est pas surveillée et limitée. Échec complet sur la réutilisation du nonce. L'utilisation est implicite de toute façon si le GCM est adopté. Non recommandé pour une normalisation séparée.
le cryptage authentifié (à la fois le cryptage et l'intégrité du message)
CCM : Un schéma AEAD basé sur un nonce qui combine le chiffrement en mode CTR et le système brut CBC-MAC. Intrinsèquement sériel, limitant la vitesse dans certains contextes. Provablement sûr, avec de bonnes limites, en supposant que le chiffrement par blocs sous-jacent est un bon PRP. Construction simple qui fait manifestement l'affaire. Plus simple à mettre en œuvre que le GCM. Peut être utilisé comme un MAC basé sur un nonce. Largement normalisé et utilisé.
GCM : Un schéma AEAD basé sur un nonce qui combine le cryptage en mode CTR et une fonction de hachage universelle basée sur GF(2128). Bonnes caractéristiques d'efficacité pour certains environnements de mise en œuvre. Bons résultats de sécurité prouvable en supposant une troncature minimale des étiquettes. Attaques et limites de sécurité prouvables médiocres en présence d'une troncature substantielle des étiquettes. Peut être utilisé comme un MAC basé sur les nonces, qui est alors appelé GMAC. Choix discutable d'autoriser des nonces autres que 96 bits. Il est recommandé de limiter les nonces à 96 bits et les tags à au moins 96 bits. Largement normalisé et utilisé.