Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

attaque stupéfiante contre AES

7 réponses
Avatar
cgonzale
http://cr.yp.to/papers.html#cachetiming

En r=E9sum=E9:
- la variabilit=E9 des temps d'acc=E8s m=E9moire aux S-boxes et leur
d=E9pendance aux donn=E9es en entr=E9e sont une grave menace pour la
s=E9curit=E9 de AES
- cette attaque montre que sous certaines conditions et avec
relativement peu de texte clair disponible on peut DEVINER une cl=E9 AES
rien qu'en mesurant le nombre de cycles d'horloge pour chiffrer un bloc
- il semble extremement difficile de coder une impl=E9mentation de AES
en temps constant
- l'auteur de l'article plaide pour l'utilisation d'algo
impl=E9mentables en temps constant (donc n'utilisant par ex. que des
op=E9rations logiques et des rotations avec nombre de d=E9calage fixe)

7 réponses

Avatar
Thierry Nivon
http://cr.yp.to/papers.html#cachetiming

En résumé:
- la variabilité des temps d'accès mémoire aux S-boxes et leur
dépendance aux données en entrée sont une grave menace pour la
sécurité de AES
- cette attaque montre que sous certaines conditions et avec
relativement peu de texte clair disponible on peut DEVINER une clé AES
rien qu'en mesurant le nombre de cycles d'horloge pour chiffrer un bloc
- il semble extremement difficile de coder une implémentation de AES
en temps constant
- l'auteur de l'article plaide pour l'utilisation d'algo
implémentables en temps constant (donc n'utilisant par ex. que des
opérations logiques et des rotations avec nombre de décalage fixe)



cela signifie qu'il y a un cheval de troie sur le pc qui crypte.
Ce cheval de troie "serait" capable de mesurer les différentes phases du
cryptage --> donc le pgm crypteur est compilé avec les infos de
déboggages, et le cheval de troie à accès à un debogger/profileur -->
autant dire que meme avec un algo a temps constant ce cheval de troie
pourrait avoir accès à toutes les données présentes sur le PC donc à la
clé sans même trop se casser la tete (lecture du clavier, lecture des
ports usb, ...)
Le pb ne vient pas de l'algo !

Avatar
Pierre Vandevennne
Thierry Nivon wrote in news:42681a26$0$25016
$:


- l'auteur de l'article plaide pour l'utilisation d'algo
implémentables en temps constant (donc n'utilisant par ex. que des
opérations logiques et des rotations avec nombre de décalage fixe)



cela signifie qu'il y a un cheval de troie sur le pc qui crypte.


Ce n'est pas aussi simple. L'article vaut en tout cas la peine d'être lu
(ce que je viens de faire) et étudié (ce que je n'ai pas encore fait).


Avatar
Erwann ABALEA
Bonjour,

On Thu, 21 Apr 2005 wrote:

http://cr.yp.to/papers.html#cachetiming

En résumé:
- la variabilité des temps d'accès mémoire aux S-boxes et leur
dépendance aux données en entrée sont une grave menace pour la
sécurité de AES


Comme pour n'importe quel autre algo. Les timing attacks, ça marche à peu
près partout.

- cette attaque montre que sous certaines conditions et avec
relativement peu de texte clair disponible on peut DEVINER une clé AES
rien qu'en mesurant le nombre de cycles d'horloge pour chiffrer un bloc


Et contrairement à ce qu'affirme Thierry Nivon, il n'y a pas de binaire
étranger tournant sur le serveur. C'est réellement une attaque entre un
serveur possédant et mettant en oeuvre une clé et un client mesurant le
temps mis pour effectuer les opérations de chiffrement.

- il semble extremement difficile de coder une implémentation de AES
en temps constant
- l'auteur de l'article plaide pour l'utilisation d'algo
implémentables en temps constant (donc n'utilisant par ex. que des
opérations logiques et des rotations avec nombre de décalage fixe)


La conclusion n'est pas aussi franche. Bernstein propose des pistes, tant
pour les implémenteurs d'AES que pour les fondeurs de microprocesseurs. Le
plus gros du travail en revient aux fondeurs, puisqu'écrire une
implémentation d'AES fonctionnant en temps constant (avec des opérations
logiques, et sans lookup) rendrait cette implémentation beaucoup trop
lente.

A part ça, l'article mérite en effet d'être lu, et ceux qui ont lu la
première version (20041111 je crois, je l'ai effacé) trouveront des
ajouts intéressants, sur d'autres causes menant à ces problèmes de cache
timing. On voit clairement que la complexité des microprocesseurs actuels
est difficilement maîtrisable à la main.

--
Erwann ABALEA - RSA PGP Key ID: 0x2D0EABD5
-----
Salut,Je m'appele sed.je suis etudiant en communication, j'ai lu votre
message.je viens vous dire un petiit bonjour,et vous laisser mon adresse
mél: vous pouvez me repondre maintenant si vous étez conecter.
-+-Guide du Neuneu d'Usenet - La com', elle ne passera pas par moi -+-

Avatar
Olivier Gay
Le pb ne vient pas de l'algo !


Ce n'est pas aussi simple. L'article vaut en tout cas la peine d'être lu
(ce que je viens de faire) et étudié (ce que je n'ai pas encore fait).


notamment, DJB met directement en cause le design plutôt que
l'implémentation de AES
(le message ci-dessous vient de sci.crypt). Dans son article, il y a aussi
un chapitre dédié au NIST: "7 Errors in the AES standardization process".

The AES designers and official evaluators
* considered timing attacks in detail,
* claimed that table lookup was ``not vulnerable to timing attacks,''
* claimed that Rijndael gained a ``major speed advantage over its
competitors'' for software protected against timing attacks,
* made the same comment in its summaries of the finalists, and
* made the same comment in its paragraph explaining the selection of
Rijndael.
The problem is that, when they stated ``Table lookup: not vulnerable to
timing attacks,'' they were simply wrong. Table lookup _is_ vulnerable
to timing attacks.


Olivier Gay


Avatar
Francois Grieu
Dans l'article <42681a26$0$25016$,
Thierry Nivon a écrit:

cela signifie qu'il y a un cheval de troie sur le pc qui crypte.
Ce cheval de troie "serait" capable de mesurer les différentes phases du
cryptage --> donc le pgm crypteur est compilé avec les infos de
déboggages, et le cheval de troie à accès à un debogger/profileur -->
autant dire que meme avec un algo a temps constant ce cheval de troie
pourrait avoir accès à toutes les données présentes sur le PC donc à la
clé sans même trop se casser la tete (lecture du clavier, lecture des
ports usb, ...)


Pas d'accord.

Primo, l'attaque a vraiment été menée contre un serveur depuis
un client distant (il est vrai vraissemblablement connectés
par un lien réseau très direct): "the only way I had accessed the key
was by talking to the server through the network".

Secondo, un modèle d'attaque où l'adversaire peut exécuter du code
sur le même CPU que le système attaqué n'est nullement irréaliste;
penser à un système unix avec un compte invité; dans ce cas,
un programme sur un compte invité peut envoyer des requètes à un
serveur local sans la latence liée à un réseau; et même, il
peut éventuellement déterminer, indépendemment d'une mesure
de temps d'exécution, quelles lignes de cache ont été invalidées par
un autre process.

Je trouve tout à fait justifiée l'observation de DJB que sur un CPU
moderne il faut craindre les "side channel attacks" liées aux
consultatons de table, et que c'est un problème non négligeable lié
au design d'AES.


François Grieu

Avatar
Jean-Marc Desperrier
Pierre Vandevennne wrote:
Ce n'est pas aussi simple. L'article vaut en tout cas la peine d'être lu
(ce que je viens de faire) et étudié (ce que je n'ai pas encore fait).


C'est dommage que Bernstein n'inclue pas le code asm de la version
actuelle de son code optimisée pour éliminer les variations de timing,
même si en faisant le tour de toutes les recettes données dans la
papier, on doit pouvoir pratiquement le reconstituer.

Ce qui est amusant est que presques toutes les techniques et tous les
effets de bord qu'il dénonce sont connus des meilleurs "demo makers".
Cependant je ne sais pas si même parmi ceux-ci beaucoup sont capables de
pousser le vice jusqu'à résoudre les conflits d'accès cache L1 en
alignant les blocs d'instructions avec des 'nop'. Respect.

Autrement dit ce qu'il fait pour rendre fixe le temps d'exécution me
semble correspondre à 100% aux meilleurs techniques imaginables pour le
rendre le plus rapide possible (sauf peut-être le fait de recharger
entièrement le cache en cas d'interruption avant de recommencer le calcul).
Donc non seulement son code à l'arrivée est plus sûr, mais il doit être
excellent en perf.

Cependant je reste sceptique sur le fait qu'il arrive à rendre le temps
d'exécution totalement fixe.
J'ai l'impression que la difficulté sera finalement insurmontable à
cause de toujours un nouveau détail technique qui resortira plus il ira
finement, en plus du fait de devoir coder pour exactement l'architecture
de processeur utilisé pour que cela marche.

Il est sûrement plus raisonnable d'essayer d'autres technique qui ne
dépendent pas du fait de *réussir* à exécuter dans un temps fixe.

Ca ne peut pas consister à ajouter du temps d'exécution : on peut donc
imaginer l'exécution d'un autre processus en parallèle, calculé pour
être légèrement plus loin, et le résultat n'est livré qu'à la fin du
calcul de celui-là, ou bien calculer un maximum pour le temps de calcul,
et à la fin du calcul attendre jusqu'à rejoindre ce maximum.

Ce type d'approche a aussi des difficulté.

Sur le modèle de l'attaque Osvik-Tromer décrite, on peut imaginer que le
temps d'exécution du procesus lancé en parrallèle peut être influencé
par celui qui calcule l'AES. De toute façon, il est difficile de trouver
une manière quelconque de garantir qu'il sera plus long.
Et là on tombe sur un problème qui touche ces deux solution.

Soit on fixe une valeur de temps maximum très haute, et les performances
sont fortement dégradées, soit on prend une valeur raisonnable qui est
ponctuellement dépassée, et une information fuit à chaque fois que c'est
le cas. Bien sûr quand le maximum est dépassé, on peut jouer à faire
attendre jusqu'à un pallier qui tombe rond, mais cela laisse encore
filtrer un peu d'info temporelle, et statistiquement les perf souffrent.

Finalement, son approche par l'optimisation n'est pas si mal :-)

Avatar
cgonzale
Erwann ABALEA wrote in message news:...
Bonjour,

On Thu, 21 Apr 2005 wrote:

http://cr.yp.to/papers.html#cachetiming

En résumé:
- la variabilité des temps d'accès mémoire aux S-boxes et leur
dépendance aux données en entrée sont une grave menace pour la
sécurité de AES


Comme pour n'importe quel autre algo. Les timing attacks, ça marche à peu
près partout.



Pas tt à fait d'accord. Il y a des algos qui sous certaines conditions
ne laissent transparaitre aucune info sur les données en entrée (cela
peut être seulement les données , ou certaines valeurs de blocs
combinées avec une certaine clé).
Exemple: dans SHA-1 ou SHA-256 si on hashe des messages de même
longueur les instructions exécutées et leur temps d'exécution ne
dépendent pas de la valeur des blocs. La variabilité mesurée dans ce
cas n'est donc que du "bruit"..

DJB donne d'autres exemples comme l'algo TEA.

- cette attaque montre que sous certaines conditions et avec
relativement peu de texte clair disponible on peut DEVINER une clé AES
rien qu'en mesurant le nombre de cycles d'horloge pour chiffrer un bloc


Et contrairement à ce qu'affirme Thierry Nivon, il n'y a pas de binaire
étranger tournant sur le serveur. C'est réellement une attaque entre un
serveur possédant et mettant en oeuvre une clé et un client mesurant le
temps mis pour effectuer les opérations de chiffrement.

- il semble extremement difficile de coder une implémentation de AES
en temps constant
- l'auteur de l'article plaide pour l'utilisation d'algo
implémentables en temps constant (donc n'utilisant par ex. que des
opérations logiques et des rotations avec nombre de décalage fixe)


La conclusion n'est pas aussi franche. Bernstein propose des pistes, tant
pour les implémenteurs d'AES que pour les fondeurs de microprocesseurs. Le
plus gros du travail en revient aux fondeurs,


oui, mais même pour les fondeurs le problème est très difficile. Il
faudrait trouver un autre système que l'utilisation de mémoire cache:
une zone de mémoire limitée (qques kB) à temps d'accès constant,
complètement intégrée à l'UAL, avec un jeu d'instructions spécifiques
et spécialement dédiée aux algos du type AES. Cela remettrait en cause
le design même des microprocesseurs ..

puisqu'écrire une
implémentation d'AES fonctionnant en temps constant (avec des opérations
logiques, et sans lookup) rendrait cette implémentation beaucoup trop
lente.

A part ça, l'article mérite en effet d'être lu, et ceux qui ont lu la
première version (20041111 je crois, je l'ai effacé) trouveront des
ajouts intéressants, sur d'autres causes menant à ces problèmes de cache
timing. On voit clairement que la complexité des microprocesseurs actuels
est difficilement maîtrisable à la main.