OVH Cloud OVH Cloud

chiffrement et authentification

4 réponses
Avatar
crecy_1346
en cryptographie symétrique on dissocie souvent le chiffrement et
l'authentification/intégrité :
chiffrement(texte en clair) + MAC(texte en clair)

pourquoi ne pas faire directement:
chiffrement(texte en clair + SHA(texte en clair))
(le chiffrement étant en mode CBC, on peut aussi ajouter un peu de sel
aléatoire avant le SHA...)
on a bien confidentialité, authentification et intégrité

existe t il des attaques contre cela?
des articles disponibles?
(les attaques par collisions de Preneel et Oorschot ne s'aplique pas
dans ce cas non?)

bren

4 réponses

Avatar
pornin
According to Brennos :
pourquoi ne pas faire directement:
chiffrement(texte en clair + SHA(texte en clair))
(le chiffrement étant en mode CBC, on peut aussi ajouter un peu de sel
aléatoire avant le SHA...)
on a bien confidentialité, authentification et intégrité


Ça marche avec un système de chiffrement par blocs utilisé en mode
CBC. Mais ça ne marche pas avec, par exemple, un chiffrement RC4 :
le contrôle d'intégrité est alors réduit à néant (exercice laissé
au lecteur).

De façon plus générale, séparer le MAC du chiffrement facilite les
preuves de sécurité, et permet aussi de doser les propriétés de sécurité
voulues : par exemple, si je veux un protocole ou je veux donner à deux
personnes (A et B) le pouvoir de lire les données, mais seulement à une
des deux personnes (A) le pouvoir de les modifier, je peux le faire avec
un MAC séparé : je donne la clé de chiffrement à A et B, mais la clé de
MAC à A seulement. Avec un chiffrement+MAC en une seule opération, je ne
peux pas faire ça. Je peux aussi me retrouver dans un pays qui exige que
les clés de chiffrement ne dépassent pas 40 bits ; avec un MAC séparé,
je peux conserver un contrôle d'intégrité solide.


--Thomas Pornin

Avatar
crecy_1346
De façon plus générale, séparer le MAC du chiffrement facilite les
preuves de sécurité, et permet aussi de doser les propriétés de sécurité
voulues : par exemple, si je veux un protocole ou je veux donner à deux
personnes (A et B) le pouvoir de lire les données, mais seulement à une
des deux personnes (A) le pouvoir de les modifier, je peux le faire avec
un MAC séparé : je donne la clé de chiffrement à A et B, mais la clé de
MAC à A seulement. Avec un chiffrement+MAC en une seule opération, je ne
peux pas faire ça. Je peux aussi me retrouver dans un pays qui exige que
les clés de chiffrement ne dépassent pas 40 bits ; avec un MAC séparé,
je peux conserver un contrôle d'intégrité solide.


--Thomas Pornin


on est d'accord que cela rajoute des possibilités, mais si on n'en a
pas l'utilité dans un système donné cela rajoute de la complexité et
du temps de calcul inutilement

pour eviter cela je vois 3 solutions:

helix ou AES-CCM
chiffrement block CBC(texte en clair + ?salt? + SHA(texte en clair))

et si on utilise un bete CRC au lieu d'un SHA mais assez grand (par ex
CRC de 128 bits), si le chiffrement block CBC est sur et que le salt
est à chaque fois différents et de très bonne qualité (iodé et
fluoré)?

Avatar
Christophe Devine
Brennos wrote:

on est d'accord que cela rajoute des possibilités, mais si on n'en a
pas l'utilité dans un système donné cela rajoute de la complexité et
du temps de calcul inutilement


Il faut noter que le fait de chiffrer puis d'ajouter le MAC du
chiffré est théoriquement plus sûr que d'authentifier d'abord,
et de chiffrer ensuite. Voir pour plus de détails:

http://citeseer.nj.nec.com/krawczyk01order.html

--
Christophe Devine

Avatar
Francois Grieu
Dans l'article <bo692r$1fa9$,
(Thomas Pornin) dit:

According to Brennos :
pourquoi ne pas faire directement:
chiffrement(texte en clair + SHA(texte en clair))
(le chiffrement étant en mode CBC, on peut aussi ajouter un peu de sel
aléatoire avant le SHA...)
on a bien confidentialité, authentification et intégrité


Ça marche avec un système de chiffrement par blocs utilisé en mode
CBC. Mais ça ne marche pas avec, par exemple, un chiffrement RC4 :
le contrôle d'intégrité est alors réduit à néant (exercice laissé
au lecteur).


Le lecteur vérifiera aussi

- que si l'attaquant est à même de choisir ne serais-ce que très
partiellement un message signé (par exemple: un champs inutilisé
compte tenu du format du fichier), il lui est possible de
compromettre l'intégrité (principe: il construit d'abord un
message dont le clair et le chiffré sont connus sauf pour le hash,
puis calcule le hash, et obtient le chiffré du hash par une requète
à message choisi qui va bien)

- que même en excluant le clair partiellement choisi, la taille
de bloc de l'algorithme de chiffrement est à prendre en
considération dans l'analyse de sécurité; ce qui n'est pas bon
bon signe.

François Grieu