N-PN White-Hat Project
Meilleur mode pour le chiffrement par bloc - Version imprimable

+- N-PN White-Hat Project (https://dev.n-pn.fr/forum)
+-- Forum : Questions (https://dev.n-pn.fr/forum/forumdisplay.php?fid=11)
+--- Forum : Chiffrement / Déchiffrement / Stéganographie (https://dev.n-pn.fr/forum/forumdisplay.php?fid=26)
+--- Sujet : Meilleur mode pour le chiffrement par bloc (/showthread.php?tid=3877)



Meilleur mode pour le chiffrement par bloc - Serphentas - 08-03-2016

Salut Smile

Depuis quelques semaines maintenant, j'essaie de trouver le meilleur mode quand on a un block cipher (chiffrement par bloc).

Pour rappel, voici une liste de ceux qu'on a à disposition:

ECB - ne doit pas être utilisé si on chiffre plus de données que la taille d'un bloc (généralement 128b)
CBC - tout mode avec du feedback devrait être considéré comme non sûr ou affaibli, voir [1]
PCBC - voir CBC
CFB - voir CBC
OFB - voir CBC
CTR - bien, mais ne garantit pas l'intégrité et l'authenticité
XTS - seulement pour le chiffrement d'un disque local en entier
*Authenticated encryption ci-dessous*
OCB - ?
CCM - CTR w/ CBC-MAC, ?
CWC - ?
EAX - ?
GCM - pas mal, mais il existe des attaques utilisant des weak keys (clef faible), biclique attacks, etc.
SGCM - pareil que pour GCM sauf que les weak keys ne sont plus un problème car on utilise plus GF(128)

Quand il y a un "?" c'est que je ne sais pas si le mode est susceptible d'être attaqué.

Les modes tels que (S)GCM et CTR emploient un nonce au lieu d'un IV (que CBC, etc. utilisent). La différence entre les deux, hormis le fait que tout mode en a besoin pour le chiffrement/déchiffrement initial, est que le premier doit être unique tandis que le deuxième doit être unique ET random (aléatoire) ou pseudo-random au minimum.

En effet, si on utilise un même nonce pour deux différentes invocations de GCM avec la même clef (donc GCM(P1,K,N) et GCM(P2,K,N)), alors on peut forger des ciphertext. Par contre, avec un IV, si c'est pas assez random, un attaquant peut deviner des portions du plaintext en fonction du ciphertext.

Ceci étant dit, j'opterais personnellement pour un mode basé sur un nonce. Pourquoi ? Parce que je n'ai plus à faire confiance à mon RNG pour qu'il ne soit pas biaisé. Je dois juste faire attention à ce qu'un nonce ne soit utilisé qu'un et une seule fois. Donc en fin de compte, GCM semble être pas mal. C'est globalement adopté comme mode AE (Authenticated Encryption).

Par contre, le fait qu'il soit recommandé par le NIST peut laisser penser qu'il est "broken" ou bien que la NSA l'a déjà cryptanalysé. Non, le NIST n'est pas une organisation nette car ils ont fait en sorte que certains algorithmes et RNG soient affaiblis par le passé.

Et vous, vous en pensez quoi ? C'est quoi votre mode préféré ?

EDIT: j'avais oublié la référence...
[1] https://www.youtube.com/watch?v=v0IsYNDMV7A


RE: Meilleur mode pour le chiffrement par bloc - Serphentas - 08-03-2016

Apparemment il y aurait une variante de GCM appelée GCM-SIV qui est résistante à la réutilisation du nonce, voir le whitepaper ici.