Sécurité GSM

Vulnérabilité #2 : Known-plaintext Attack

Description

La protocole de communication GSM souffre d'une vulnérabilité de type Known-plaintext Attack. Ce type d'attaque consiste à retrouver une clé de chiffrement en possédant des textes clairs ainsi que leurs versions chiffrées.

Pour mieux comprendre cette vulnérabilité, décrivons le schéma d'authentification de l'abonné ainsi que le chiffrement de la communication.

La phase d'authentification consiste à vérifier que le challenge (Rand) envoyé par le réseau opérateur peut être correctement déchiffré par l'abonnée. L'opérateur peut chiffrer en amont les données car il stocke dans une base la correspondante identifiant/clé privée (de la carte SIM). Les algorithmes A3 et A8 permettent la génération des informations nécessaire.

Si la réponse de l'abonné correspond, il est authentifié. Ensuite, les communications sont chiffrées grâce à l'algorithme A5 qui prend en paramètre une clé temporaire (Kc), dérivée de la clé secrète (Ki), et le numéro de la trame. A5 produit une "keystream" qui est ensuite couplée avec le message à chiffrer. C'est donc du chiffrage symétrique.

Vulnérabilité

La norme GSM, comme tout protocole de communication, définit plusieurs type de messages qui sont envoyés sur le réseau, comme par exemple des informations sur la qualité du signal, la charge réseau, des données de contrôle etc .. Dans le cas du GSM, des messages de contrôles (System Information Type 5 et 6) sont envoyés cycliquement que la communication soit chiffrée ou non.

C'est à dire que l'on connait la version en claire du message et sa version chiffrée. Comme ce message est envoyé périodiquement de manière très précise (numéro de trame), il est possible de l'identifier dans une communication chiffrée. Donc :

Il suffit ensuite de "bruteforcer" (essayer toute les combinaisons possible) la keystream pour en extraire la clé "Kc", car nous connaisons le message en clair, et la numéro de la trame (Fn).

Mise en pratique

Pour mettre en pratique cette vulnérabilité, il faut plusieurs éléments :

Dans un premier temps il faut capturer du trafic GSM grâce aux récepteur et aux logiciel GnuRadio. Dans Wireshark il est possible d'observer des trames chiffrées et non chiffrées. Nous pouvons observer ci-dessous le trafic capturé.

source : http://www.rtl-sdr.com

Il suffit maintenant d'identifier les messages de type System Information type 5 en clair puis chiffré (avec un saut de numéro de trame connu (voir la norme)), extraire la keystream puis utiliser les Rainbowtables pour retrouver la clé de chiffrement des communications.