Principe Théorique


Dans cette partie, nous détaillons le fonctionnement théorique des rayonnements électromagnétiques associés à l’affichage d’informations sur un écran (aussi appelé Van Eck Phreaking). Pour comprendre ce phénomène, il est nécessaire d’expliquer comment un écran LCD reçoit et affiche les informations transmises via un câble VGA. Enfin, cette partie est particulièrement utile, car elle permet de comprendre comment choisir la fréquence d’écoute afin de récupérer l’information.


Sources

Afin de mieux comprendre comment fonctionne le principe de Van Eck Phreaking avec un câble VGA, nous nous sommes appuyés sur le document publié par les chercheurs Federico Larroca, Pablo Bertrand, Felipe Carrau et Victoria Severi de la Universidad de la Republica, en Uruguay.


Historiquement

L’espionnage LCD correspond à une technique d’attaque appelée Van Eck phreaking, ou TEMPEST (Telecommunications Electronics Materials Protected from Emanating Spurious Transmissions), du nom du physicien Wim van Eck. Cette attaque consiste à capter, à l’aide d’une antenne, les ondes électromagnétiques émises par le rayonnement d’un appareil électronique mal isolé, puis à reconstituer le signal sur une machine espionne.


Fonctionnement d’un écran LCD

Tout d’abord, un écran affiche l’information en générant séquentiellement les pixels, ligne par ligne, de gauche à droite puis de haut en bas, de manière très rapide.

Les impulsions Hsync et Vsync permettent d’indiquer le passage à la ligne suivante ou à l’image suivante lorsqu’elles sont terminées. Ces impulsions sont envoyées sur des broches différentes de celles qui gèrent les couleurs : elles sont donc négligeables pour l’effet que nous allons traiter.

La partie blanking est très importante, car il s’agit de pixels à une tension de 0 volt qui sont envoyés mais pas affichés. Historiquement, ces pixels permettaient au faisceau des CRT (qui affichait les pixels) d’avoir le temps de revenir à la ligne suivante puis à l’image suivante lors d’une impulsion Hsync ou Vsync. Ils sont importants, car il faut les prendre en compte dans la résolution de l’écran lors du traitement du signal.


Fonctionnement du câble VGA

Le fonctionnement du câble VGA est très simple : chaque pixel est représenté par une impulsion carrée dont la couleur est définie par le niveau de tension (entre 0 et 0,7 volt).

Comme vous pouvez le voir sur l’image ci-dessus, chaque ligne de pixels est constituée d’une suite d’impulsions carrées de niveaux de tension variables, qui se terminent par un temps de blanking avant de passer à la ligne suivante.

Chacune de ces impulsions a une durée qui correspond à TpT_p​ (temps de pixel), qui est extrêmement court. En effet, pour une résolution 1920×1080 à 60 Hz, il faut générer 60 images de 1920×1080 pixels par seconde : on obtient donc une fréquence de génération théorique d’environ 124 MHz, soit près de 124 millions de variations de tension par seconde. C’est cette variation très rapide de la tension qui produit l’effet de rayonnement des composants de l’écran, mais aussi de la connectique du câble.


Mathématiques et signaux

On peut représenter mathématiquement la suite de pixels transmise par le câble VGA (visible sur l’image de la section précédente) à l’aide de l’équation ci-dessous :

x(t)=∑ixip(t−iTp)x(t)=\sum_{i} x_i\,p\!\left(t-iT_p\right)
  • xi​ : la tension du pixel à l’indice i
  • p(t) : l’impulsion carrée de hauteur 1
  • TpT_p : le temps de pixel

Dans l’impulsion carrée, (t−iTp)(t – iT_p)(t−iTp​) représente le décalage dans le temps permettant de représenter les pixels successifs.

Afin de pouvoir exploiter l’information, il va falloir passer du domaine temporel au domaine fréquentiel, car notre SDR écoute autour d’une fréquence spécifique. Nous allons donc appliquer une transformée de Fourier à l’équation précédente.

⇒X(f)=∑ixiP(f)e−j2πfTp⇒X(f)=P(f)∑ixie−j2πfTp⇒X(f)=P(f)Xs(f)\begin{aligned} \Rightarrow X(f) &= \sum_i x_i\,P(f)\,e^{-j2\pi f T_p} \\ \Rightarrow X(f) &= P(f)\sum_i x_i\,e^{-j2\pi f T_p} \\ \Rightarrow X(f) &= P(f)\,X_s(f) \end{aligned}

À partir de l’équation trouvée précédemment, nous pouvons réaliser une représentation graphique du signal, comme illustré ci-dessous :

Nous nous apercevons alors que l’information utile du signal (signal rouge) est située autour de 1/Tp1/T_p1/Tp​, mais aussi autour de ses harmoniques, telles que 2/Tp2/T_p​, 3/Tp3/T_p​, et ainsi de suite.

Il s’agit ici d’une information importante, car nous savons maintenant à quelles fréquences écouter pour pouvoir traiter le signal. En effet, nous pouvons calculer le temps de pixel TpT_p​ avec le calcul suivant :

Tp=1PxPyfvT_p=\frac{1}{P_x\,P_y\,f_v}
  • Px : nombre de pixels par lignes (avec blanking)
  • Py : nombre de lignes par image (avec blanking)
  • fv : Fréquence de rafraîchissement en Hz

Exemple : si vous avez un écran avec une résolution annoncée de 1024×768 à 60 Hz, avec le blanking, elle sera en réalité de 1344×806 à 60 Hz. La fréquence de pixel sera donc de 1344 × 806 × 60 ≃ 65 MHz.

Il faudra donc se placer à la fréquence de 65 MHz ou sur ses harmoniques (130 MHz, 195 MHz, …) afin de se situer dans la bande de fréquences où rayonne l’information exploitable.

Vous pouvez trouver ci-dessous, un tableau contenant différentes résolutions d’écran avec un leur pixel clock en fonction de leur blanking conventionnel :

Résolution affichéeRésolution réelle (avec blanking)Pixel clock
1024×768 @ 60 Hz1344×80665 MHz
1280×1024 @ 60 Hz1688×1066108 MHz
1920×1080 @ 60 Hz2200×1125148,5 MHz