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

Les puces ne garantissent pas la sécur ité des échanges en ligne (dixit Le Mo nde)

25 réponses
Avatar
fabrice.pas-de-spam.bacchella
http://www.lemonde.fr/web/article/0,1-0@2-651865,36-835944,0.html?xtor=RSS-651865

En dehors de la confusion entre les cartes à puces & du SSL executé
dans le processeur d'un ordinateur, j'ai un doute. C'est vraiment une
attaque efficace sur un ordinateur dans des conditions réels d'usage ?
Avec plusieurs tâches simultanées & pleins d'autres choses en même
temps ?

10 réponses

1 2 3
Avatar
Goldy
http://www.lemonde.fr/web/article/0,,36-835944,0.html?xtor=RSS-651865

En dehors de la confusion entre les cartes à puces & du SSL executé
dans le processeur d'un ordinateur, j'ai un doute. C'est vraiment une
attaque efficace sur un ordinateur dans des conditions réels d'usage ?
Avec plusieurs tâches simultanées & pleins d'autres choses en même
temps ?


J'ai pas tout compris l'article, ça parle de puce et ensuite de ssl...
J'aimerais bien aussi en savoir plus.

Avatar
David MENTRE
Bonjour,

Goldy writes:

http://www.lemonde.fr/web/article/0,,36-835944,0.html?xtor =RSS-651865
En dehors de la confusion entre les cartes à puces & du SSL execut é
dans le processeur d'un ordinateur, j'ai un doute. C'est vraiment une
attaque efficace sur un ordinateur dans des conditions réels d'usag e ?
Avec plusieurs tâches simultanées & pleins d'autres choses en même
temps ?


J'ai pas tout compris l'article, ça parle de puce et ensuite de
ssl... J'aimerais bien aussi en savoir plus.


D'après le peu que j'ai compris du charabia du Monde, l'attaque utilise
le module de prédiction de branchement des processeurs courants. Ce
module est utilisé pour déterminer la suite du code à charge r après un
saut (càd un branchement). Jusqu'au moins au Pentium, c'était un simple
automate à quatre états (branchement non pris, possiblement non p ris,
possiblement pris, branchement pris) qui transitionne d'un l'état à  
l'autre suivant que le processeur se rend compte qu'il s'est trompé ou
non sur le branchement en cours. L'état en cours indique au processeur
s'il doit charger les instructions à la suite de l'instruction de saut
ou au point de saut.

Apparement, l'état de ce module est accessible à quiconque et don c à un
attaquant qui utiliserait cette information pour découvrir la clé (je
laisse les compétents expliquer comment c'est possible).

L'allusion à OpenSSL précise qu'une future version d'OpenSSL corr igerait
le problème en désactivant le module de prédiction de branch ement lors
de l'utilisation des clefs : si le module n'est pas actif, plus
d'information donc plus d'attaque. Évidemment, ça aurait un impac t très
négatif sur les performances du processeur.

Mais le plus simple est d'attendre la publication du papier pour en
savoir plus, non ? Ou de suivre les prochaines version d'OpenSSL ?

Amicalement,
david
--
David Mentré


Avatar
Alain
http://www.lemonde.fr/web/article/0,,36-835944,0.html?xtor=RSS-651865

En dehors de la confusion entre les cartes à puces & du SSL executé
dans le processeur d'un ordinateur, j'ai un doute. C'est vraiment une
attaque efficace sur un ordinateur dans des conditions réels d'usage ?
Avec plusieurs tâches simultanées & pleins d'autres choses en même
temps ?
la cible c'est pas les processeurs crypto des cartes à puce ?


les attaques sur les temps d'exécution sont pas nouvelles... dans les
années 70 j'avais vu des attaques contre le mot de passe basée sur le
temps de comparaison des mots de passe...

Avatar
Sylvain
wrote on 18/11/2006 17:47:
http://www.lemonde.fr/web/article/0,,36-835944,0.html?xtor=RSS-651865

En dehors de la confusion entre les cartes à puces & du SSL executé
dans le processeur d'un ordinateur, j'ai un doute. C'est vraiment une
attaque efficace sur un ordinateur dans des conditions réels d'usage ?
Avec plusieurs tâches simultanées & pleins d'autres choses en même
temps ?


le début de l'article indique:

"Dans un article encore confidentiel, le chercheur et ses collègues
"décrivent la façon dont ils ont pu, en une seule tentative - soit
"quelques millisecondes -, récupérer la quasi-intégralité d'une clé
"de cryptage de 512 bits (suite d'autant de 0 ou de 1)."

j'aime assez le "article confidentiel" donc inconnu et les kms qui
viennent quand même après...

sur le fond, il est (a peu près) exact qu'avec le matériel actuel, le
simple fait de faire un calcul RSA dans une carte permets de ""lire""
(en surveillant la consommation par exemple) tous les bits 1 à 1 lorsque
qu'ils sont utilisés pour faire l'exponentiation modulaire interne.

BUT ceci n'est applicable qu'avec des chips complètement obsolètes et
déjà connus comme tels (ie troué, laissant fuir les clés, ...); les
fondeurs ont depuis un bon bout de temps mis les protections
nécessaires, les OS eux-même rajoutent une couche (par exemple en
faisant du bruit durant les opérations d'accès aux clés).

bref, ceci parait bidon.

Sylvain.

Avatar
François Grieu
Pour lire autre chose que l'infecte régurgitation que nous sert Le
Monde:
http://eprint.iacr.org/2006/351

En résumé: un nouveau canal de fuite d'information entre tâches
tournant sur le *même* CPU, genre PC. Ni les cartes à puce ni les HSM
ne sont concernés.

François Grieu
Avatar
root
Le Sat, 18 Nov 2006 18:43:55 +0100, David MENTRE a écrit :

Mais le plus simple est d'attendre la publication du papier pour en
savoir plus, non ? Ou de suivre les prochaines version d'OpenSSL ?



Ça me fait penser à ce document de D.J. Bernstein, décrivant entre autre
le problème d'attaque par timing introduit par le fait que "Skipping an
operation is faster than doing it" :
- http://cr.yp.to/antiforgery/cachetiming-20050414.pdf

Avatar
Sylvain
Sylvain wrote on 18/11/2006 23:26:

faire un calcul RSA dans une carte [à puce] ...


le papier utilise en fait "puce" pour processeurs de PC (Intel en ligne
de mire) (merci François).

rien de neuf sous les ventilos dans ce cas, une clé soft peut de toute
façon être aisément piratée.

Sylvain.

Avatar
fabrice.pas-de-spam.bacchella
On 18 Nov 2006 15:11:43 -0800, "François Grieu"
wrote:

Pour lire autre chose que l'infecte régurgitation que nous sert Le
Monde:
http://eprint.iacr.org/2006/351

En résumé: un nouveau canal de fuite d'information entre tâches
tournant sur le *même* CPU, genre PC. Ni les cartes à puce ni les HSM
ne sont concernés.

François Grieu


L'attaque semble n'être possible que sur des processeur multi thread
(style HT d'Intel, T1 de Sun), par le bias de l'observation synchrone
du cache de prédiction de branchement.
D'autre part :
In the other case, one needs a very sophisticated OS expertise and a
deep thread scheduling expertise, cf. [NS]. As the above paradigm and
all its subtle implementation details heavily depend on the underlying
OS, CPU type and frequency, etc. we will not deepen further those
technical details here, and just assume the existence of a suited spy
process and a corresponding crypto process in a hardware-assisted
multi-threading environment.
dit l'auteur.

Je le trouve bien léger, parce que de là à rendre l'attaque réellement
effective dans la vraie vie, comme le prétend l'article du Monde, il
me semble qu'il y a un grand pas à franchir. Quand au condition de
l'expérience, on sait juste qu'ils ont tournés sur un Pentium 4, avec
une implémentation RSA tiré de OpenSSL, mais ultra bidouillé. Pas de
mention de l'OS utilisé.

Avatar
nlevol

Pour lire autre chose que l'infecte régurgitation que nous sert Le
Monde:
http://eprint.iacr.org/2006/351

En résumé: un nouveau canal de fuite d'information entre tâches
tournant sur le *même* CPU, genre PC. Ni les cartes à puce ni les HSM
ne sont concernés.

François Grieu


Est-il possible que la manière la plus facile de venir à bout cette
attaque soit d'écrire le RSA sous une forme qui n'emploie pas les
branches qui sont fonction de la valeur de la clef ? Par exemple si
vous modifiez l'algorithme de la façon suivante :

result=message
for (i=(length of key -2); i>=0; i--) {
result1 = result * result
result2=result1 * Message
if (e[i]==1) result=result2 //Cette ligne doit être codée sans saut
conditionnel
else result =result1
}

Le codage les lignes « if-else» sans saut conditionnel peut être
effectué d'un certain nombre de manières, ma méthode préfère (pas
forcement le plus simple) doit employer un byte « swap ». Par
exemple, il y a deux résultats : result1 et result2, leurs adresses
sont respectivement A et B. Si vous faites un byte « swap » S=A^B (^
= XOR), alors vous pouvez employer ceci pour permuter les adresses
entre elles : (A=B^S, B=A^S).

Alors, vous devrez simplement créer un byte de décision « D » selon
lequel est 0xFF ou 0x00 si le bit de la clef est 1 ou 0 (ceci peut
être fait avec shifting et ORing). Le byte de décision est ANDed (&)
avec le byte d'échange. Le statement if-else ci-dessus devient alors :


Adresse de result = A^(S & D)


Sinon, on peut également faire une table à double entrée contenant
les adresses et employer le bit de la clef comme index (mais c'est
trop simple). Cependant, des variations de la première méthode sont
meilleures pour certaines optimisations de l'algorithme.

Dans la plupart des cas il est possible de remplacer les sauts
conditionnels avec des calculs.

Avatar
Sylvain
nlevol wrote on 20/11/2006 23:47:

si vous modifiez l'algorithme de la façon suivante :


*l*'algo, quel algo ? (cette impl. vient d'où ?)

Sinon, on peut également faire une table à double entrée [...]


sinon, on peut utiliser une carte HSM non ?

Sylvain.

1 2 3