OVH Cloud OVH Cloud

Tentative de compréhension du RC4 (WEP)

9 réponses
Avatar
Biere
Bonjour,

J'essaie depuis quelques jours de comprendre le fonctionnement du RC4.
J'avoue que j'ai un peu de mal ...

J'ai trouvé quelques articles en anglais sur les faiblesses de ce protocole.
Je ne les ai pas encore lu mais ça ne saurait tarder. Afin d'étudier les
faiblesses de la bete, j'aurais aimé en comprendre son fonctionnement.

J'ai trouvé un site en francais sur le fonctionnement du RC4 :
http://www.uqtr.ca/~delisle/Crypto/prives/flux_rc4.php
Mais je n'en comprends malheureusement pas le fonctionnement. De plus, des
lettres attérissent de nulle part (la lettre S).
Auriez vous un lien qui détaille un peu plus le fonctionnement de RC4 ? (si
possible en francais ...)

Mon but recherché est de comprendre les défauts qui existent dans
l'implémentation du RC4 dans le WEP ( WiFi ).

Dans : C = M XOR RC(IV, clé)
Une question me turlupine. Admettons que l'on connaisse C, M et IV, cela
suffit-il pour trouver la clé ? ou faut-il une quantité importante de
données (C,M,IV) pour trouver la clé ?

Merci d'avance.

Ronan.

9 réponses

Avatar
Jacques Caron
Re,

On Sun, 18 Jan 2004 18:34:20 +0100, Biere wrote:

J'ai trouvé quelques articles en anglais sur les faiblesses de ce
protocole.
Je ne les ai pas encore lu mais ça ne saurait tarder. Afin d'étudier les
faiblesses de la bete, j'aurais aimé en comprendre son fonctionnement.


Au fait, si tu ne les as pas tous, la liste des papiers sur les faiblesses
de WEP est là:
http://www.drizzle.com/~aboba/IEEE/

Jacques.
--
Interactive Media Factory
Création, développement et hébergement
de services interactifs: SMS, SMS+, Audiotel...
http://www.imfeurope.com/

Avatar
Jacques Caron
Salut,

On Sun, 18 Jan 2004 18:34:20 +0100, Biere wrote:

Auriez vous un lien qui détaille un peu plus le fonctionnement de RC4 ?
(si possible en francais ...)


Mieux qu'en français, en C:

http://www.freebsd.org/cgi/cvsweb.cgi/src/sys/crypto/rc4/

:-)

Dans : C = M XOR RC(IV, clé)
Une question me turlupine. Admettons que l'on connaisse C, M et IV, cela
suffit-il pour trouver la clé?


Sur un seul cas de figure? Oui si on a beaucoup de temps devant soi
(attaque force brute) ou que la clef est très facile (attaque par
dictionnaire)... Mais en tous cas pas "directement" et facilement.

ou faut-il une quantité importante de données (C,M,IV) pour trouver la
clé ?


Oui, il faut un certain nombre de paquets (jusqu'à des centaines de
milliers). Mais certaines valeurs d'IV ont tendance à permettre de trouver
la clef plus facilement que d'autres.

Jacques.
--
Interactive Media Factory
Création, développement et hébergement
de services interactifs: SMS, SMS+, Audiotel...
http://www.imfeurope.com/

Avatar
Biere
Auriez vous un lien qui détaille un peu plus le fonctionnement de RC4 ?
(si possible en francais ...)


Mieux qu'en français, en C:

http://www.freebsd.org/cgi/cvsweb.cgi/src/sys/crypto/rc4/


C'est vrai. C'est pas bete. Je n'y avais meme pas pensé. L'algorithme sera
surement plus clair directement codé. Je regarde ça.

ou faut-il une quantité importante de données (C,M,IV) pour trouver la
clé ?


Oui, il faut un certain nombre de paquets (jusqu'à des centaines de
milliers). Mais certaines valeurs d'IV ont tendance à permettre de trouver
la clef plus facilement que d'autres.



J'ai lu que sachant cela, certains constructeurs bloquaient les IV faibles.
Quelqu'un sait si un constructeur a mis cela en place ?


Avatar
Jacques Caron
On Sun, 18 Jan 2004 20:31:24 +0100, Biere wrote:

J'ai lu que sachant cela, certains constructeurs bloquaient les IV
faibles.
Quelqu'un sait si un constructeur a mis cela en place ?


Oui, beaucoup. On peut aussi voir ici, par exemple:

http://www.freebsd.org/cgi/cvsweb.cgi/src/sys/net80211/ieee80211_crypto.c?rev=1.3&content-type=text/x-cvsweb-markup

(vers le milieu)

Jacques.
--
Interactive Media Factory
Création, développement et hébergement
de services interactifs: SMS, SMS+, Audiotel...
http://www.imfeurope.com/

Avatar
Jean-Marc Desperrier
Jacques Caron wrote:
On Sun, 18 Jan 2004 20:31:24 +0100, Biere wrote:

J'ai lu que sachant cela, certains constructeurs bloquaient les IV
faibles.
Quelqu'un sait si un constructeur a mis cela en place ?


Oui, beaucoup.


D'un autre coté, il y a les gens qui font du RSA avec un exposant de 1
et apparement il n'y a pas tant d'implémentations que cela qui le détecte.

From: Nelson Bolyard

Some time ago, mozilla was modified to detect and reject RSA keys with
public exponents equal to 1. [...]
Now, mozilla users are encountering web sites whose certs have such keys.
At least one public CA has apparently issued one or more such certs.
I'm reporting this here to alert the readers of this list who may wish
to ensure that their implementations detect such keys [...]


Avatar
Biere
Mieux qu'en français, en C:

http://www.freebsd.org/cgi/cvsweb.cgi/src/sys/crypto/rc4/

:-)


J'ai mis un peu de temps à comprendre mais maintenant c bon.

Les données cryptées par le WEP ne dépassent pas environ 1500 octets par
trame (afin d'etre en osmose avec ce qui se passe sur Ethernet).
Y-a-t-il une longueur minimume des données cryptées ? Peut-il y avoir moins
de 256 octets ? voire encore moins ?

Avatar
Jacques Caron
Salut,

On Mon, 19 Jan 2004 12:38:53 +0100, Biere wrote:

Les données cryptées par le WEP ne dépassent pas environ 1500 octets par
trame (afin d'etre en osmose avec ce qui se passe sur Ethernet).


La MTU 802.11 est plus grande, de l'ordre de 2300 octets, mais
effectivement en général on ne dépasse par les 1500 octets et des
brouettes.

Y-a-t-il une longueur minimume des données cryptées ? Peut-il y avoir
moins de 256 octets ? voire encore moins ?


Mmmm... Je ne sais pas de tête si 802.11 oblige à faire du padding comme
802.3. Mais même dans s'il y en a, le minimum est nettement inférieur à
256 octets, oui.

Jacques.
--
Interactive Media Factory
Création, développement et hébergement
de services interactifs: SMS, SMS+, Audiotel...
http://www.imfeurope.com/

Avatar
Biere
Je viens de mettre le RC4 en php car je voulais voir la tete d'une trame de
sortie avant le XOR avec le message à chiffrer.
Mon message d'entrée : ALDHOHDJ etc (sur 32 octets)
Mon message de sortie : plein de caractères à la con. (pour un message de
256 octets)

Ce que je trouve normal vu qu'un octet peut avoir 256 valeurs possibles et
qu'avec A..Z et a..z, on est loin du compte.

Cependant, cela signifie que, outre les failles du WEP, on en rajoute encore
en ne choississant nos clés qu'à partir d'un panel réduit : A..Z, a..z. Je
me trompe ?
Avatar
Jacques Caron
On Mon, 19 Jan 2004 17:56:06 +0100, Biere wrote:

Cependant, cela signifie que, outre les failles du WEP, on en rajoute
encore en ne choississant nos clés qu'à partir d'un panel réduit : A..Z,
a..z.


Si on fait une saisie sous forme de texte, oui, clairement. C'est
d'ailleurs une des faiblesses montrées de WPA-PSK (la version "simple" de
WPA, qui vise à corriger les problèmes de WEP), une clef trop simple peut
être cassée relativement facilement.

Mais la plupart des outils de configuration WEP (pas tous,
malheureusement) permettent une saisie sous forme hexa, auquel cas on peut
mettre une valeur vraiment arbitraire. D'autres outils n'effectuent pas la
saisie directe de la clef WEP sous forme ASCII, mais la saisie d'une
"passphrase" qui va servir à générer une clef binaire soi-disant plus
arbitraire (mais dont l'entropie reste évidemment très limitée,
forcément). Mais comme ces algos ne sont pas standard, ce n'est pas
portable d'une marque à une autre.

La meilleure solution consiste encore à utiliser WEP avec des clefs de
session dynamiques (générées par un algo comme EAP-SRP, EAP-TLS, EAP-TTLS,
PEAP, EAP-SIM ou EAP-AKA) et de les faire tourner toutes les 5 minutes. On
est un peu plus tranquille dans ce contexte :-)

Jacques.
--
Interactive Media Factory
Création, développement et hébergement
de services interactifs: SMS, SMS+, Audiotel...
http://www.imfeurope.com/