Le Tue, 08 May 2012 18:49:38 -0700, dimitri.mestdagh a écrit :
>> (...)
>> Par construction, cet algorithme est à clé à usage unique. Si une clé
>> est utilisée deux fois,
>> alors la porte est grande ouverte à la cryptanalyse.
>
> Oui c'est la condition sine qua non pour assurer la sécurité du
> chiffre... Il me semble que c'est la même recommandation pour
> l'utilisation du masque jetable classique, non ?
Oui. Le masque jetable est le seul chiffre vraiment invulnérable, donc le
jeu en vaut la chandelle. Hashmask n'est pas invulnérable et en plus il
ne faut pas utiliser deux fois la clé.
>> (...)
>> Ainsi, j'ai formellement démontré que le challenge proposé par Philippe
>> était faisable, mais pas pour la portion de fichier au-délà du masque
>> calculé. Et effectivement, le fichier à déchiffrer reprend le clair
>> qu'il complète ensuite. Cette partie supplémentaire m'est inacessible.
>
> C'est bien l'effet recherché.
Cela signifie que l'algorithme est inutilisable en pratique. Pour éviter
cela, il faudrait se rappeler quel endroit du masque on a déjà utilisé et
ne commencer à l'exploiter qu'à partir d'une certaine position. Cela
revient à utiliser une autre clé, puisqu'il faudrait quand même
transmettre une information supplémentaire à chaque chiffrement.
> Sinon, le fait d'encapsuler (si on peut dire) le nom du fichier original
> dans le chiffrement pourrait effectivement être perçu comme une faille à
> exploiter ; cependant un nom de fichier n'excédant généralement pas les
> 32 caractères, il ne serait véritablement possible de s'en servir pour
> que pour retrouver une partie (seulement)
> du dernier segment du masque, ce qui semble difficilement exploitable en
> réalité : il faudrait (à condition de connaître le nom du fichier
> original, évidemment) :
> (...)
Effectivement, si le nom de fichier est trop court, c'est mort pour le
dernier segment du masque. Mais je n'ai de toutes façons pas trouvé de
vraie utilité à connaître ce dernier segment. Par contre, on peut
extraire des informations *sans* connaître le masque. Par exemple, en XOR-
ant deux fichiers chiffrés, si on trouve trois caractères NULL à la fin
du XOR, alors on sait que les extensions de fichier sont identiques. En
plus, on sait que les derniers caractères clairs sont "doc", "DOC", "xls",
"XLS", etc. Sans compter la possibilité de décrypter le nom du fichier.
> (...)
> Etant donné le sel utilisé pour la création des hash SHA-256, ces deux
> derniers points semblent plus difficiles à réaliser aujourd'hui qu'une
> simple brute-force sur la clé...
Je confirme, en ce qui me concerne.
> Quant à la complétion initiale du dernier segment, tout dépend de la
> longueur du nom de fichier bien sûr, mais par exemple pour un nom de
> fichier de 12 caractères, il faut encore en trouver/déduire 20 avant de
> pouvoir espérer en tirer quelque chose d'éventuellement exploitable...
> même réflexion donc, il semble plus judicieux d'attaquer directement la
> clé en brute force dans ce cas.
Je pense que non. En accumulant plusieurs chiffrés, avec la même clé, on
peut appliquer la cryptanalyse classique qui sert contre le chiffre de
Vernam. Hashmask hérite de ses défauts.
> Questions :
> - Est-il possible de déduire la chaine commune (clé) concaténée
> (successivement avec le hash précédent) à partir de tous les hash
> utilisés ? par recoupement ou autres tables arc-en-ciel ?
Je ne sais pas.
> - Le principe permettant de casser RC4 (ou le WEP) consiste à analyser
> les flux de chiffrement générés afin de déterminer le vecteur commun (la
> clé) par statistiques, cependant l'opération nécessite plusieurs
> échanges (quelques millions) réalisés avec une même clé. Cela permet-
> il d'affirmer qu'il est absolument impossible d'opérer une quelconque
> analyse à partir du moment où on n'utilise jamais deux fois la même clé
> ?
Le cassage de RC4 profite de la réutilisation de la clé (pour le WEP du
Wifi). Dans le cadre d'un chiffrement sans réutilisation de la clé, la
cryptanalyse ne s'applique pas à mon humble avis. Dans le cadre d'un
chiffrement avec réutilisation de la clé, la cryptanalyse du Vernam
s'applique.
> Pour conclure : si j'ai bien suivi la cryptanalyse, il semble possible
> d'affirmer que :
> - il est possible de reconstituer le masque uniquement si on dispose à
> la fois du clair et du chiffré
Non. On refait inconditionnellement le masque si on a un clair et un
chiffré. On sais le reconstituer si on a plusieurs chiffrés, en utilisant
la cryptanalyse du Vernam.
> - reconstituer le masque ne permet pas de retrouver la clé utilisée
En ce qui me concerne, c'est vrai. Et ça pose le problème de prolonger un
masque déjà découvert.
> - reconstituer le masque ne représente pas d'intérêt si l'utilisateur
> change de clé à chaque utilisation comme prévu
Si, parce qu'on peut découvrir si un utilisateur réutilise une clé. Cela
donne des informations à l'attaque, comme par exemple l'identité probable
d'une personne s'ils sont plusieurs à communiquer chacun avec sa clé, par
exemple.
> - exploiter le nom du fichier encapsulé dans le chiffré semble
> moins efficace qu'une brute-force sur la clé (n'hésitez pas à me dire si
> je me trompe...)
J'ai montré plus haut que c'était bien plus efficace. C'est une faille à
supprimer de toute urgence. Autre exemple, les extensions de fichier sont
souvent à 3 lettres dans le suffixe, la lettre précédente étant le point.
On connaît donc toujours, ou presque, le 4ème dernier caractère clair.
> On parle ici d'une version "allégée" de l'algo de Philippe. La version
> originale comprenait une substitution (basée sur les valeurs de la clé)
> de la table ascii (utilisée pour la conversion hexa/decimal/ ascii) lors
> de la création du masque, ainsi qu'une substitution des caractères en
> sortie. Ce principe applicatif compliquerait grandement l'obtention du
> masque original dans le processus de reverse, serait-il pertinent de le
> réintroduire dans la méthode ou bien ne s'agit-il encore ici que d'une
> rustine (chatterton) inutile à implémenter ?
Une rustine, assurément. Cela mettrait peut-être la cryptanalyse hors de
ma portée faute de compétence et de temps. L'algorithme CENA était plus
tortueux et a ralenti son analyse, cela ne l'a pas rendu plus fort pour
autant. Si on me donnait du temps (et beaucoup d'argent), mes compétences
actuelles feraient l'affaire... Mais ici, mon temps est épuisé. Et moi
aussi ;-)
Bonne journée/soirée !