IMA5 2019/2020 P24 : Différence entre versions
(→Semaine 9) |
(→Semaine 10 & 11) |
||
Ligne 223 : | Ligne 223 : | ||
La boite a été réalisée comme précisée dans [[#Semaine_8|la semaine 8]]. Les plaques en mousses ont été fixées à l'aide de bandes double-face. Deux charnières ont été fixées grâce à des boulons pour le mouvement de la porte et une poignée a été ajoutée. | La boite a été réalisée comme précisée dans [[#Semaine_8|la semaine 8]]. Les plaques en mousses ont été fixées à l'aide de bandes double-face. Deux charnières ont été fixées grâce à des boulons pour le mouvement de la porte et une poignée a été ajoutée. | ||
− | Aussi, j'ai réalisé quelques tests pour estimer l'isolation acoustique de | + | Aussi, j'ai réalisé quelques tests pour estimer l'isolation acoustique. Les mesures montre une diminution du bruit (claquement de main) de 10 à 15 dB. |
− | |||
− | |||
==Semaine 12== | ==Semaine 12== |
Version du 16 décembre 2019 à 20:10
Sommaire
Caractérisation d’un objet IoT à partir de l’étude de l’émission sonore.
- Étudiant : Pierre FRISON
- Tuteurs école : Alexandre BOÉ et Thomas VANTROYS
- Tuteur entreprise : François BOUCHAUD
- Projet Git : https://archives.plil.fr/pfrison/IOT_Acoustic
Présentation générale
Description
Identifier un objet connecté par l’analyse des signaux sonores engendrés par les composants électroniques. Déterminer l’activité et les opérations réalisées par le composant. Automatiser l’extraction du bruit et construire une base de données des signatures acoustiques des composants. Etudier la possibilité de classification.
Objectifs
Dans un premier temps, le projet consiste à aider à l'identification d'un appareil électronique grâce à l'analyse du son qu'il émet. Il y a aura une partie matériel pour les mesures acoustiques, et une partie logiciel comprenant l'analyse du signal, l'identification des paternes propres à l'appareil, et le renseignement dans une base de donnée. Dans un second temps, si la finesse des mesures le permet, nous nous attarderons sur une analyse plus en profondeur des signaux pour essayer de déchiffrer les opérations effectuées par l'appareil.
Préparation du projet
Cahier des charges
Côté matériel :
- Maximiser la plage de fréquence du microphone
- Privilégier la linéarité de la réponse en fréquence du microphone
- Minimiser le bruit du montage microphone + éléments d'amplification
- Trouver des coût raisonnables
Côté logiciel :
- Trouver des outils de traitement de signal pour identifier des caractéristiques propres à l'appareil
- Classifier ces caractéristiques et organiser un modèle pour une base de donnée
- Automatiser le processus de traitement de signal et d’identification
Choix techniques : matériel et logiciel
Actuelle liste de matériel :
Pour la qualité studio :
- Microphone de mesure : BEHRINGER ECM8000 ou PRESONUS PRM1
- Carte son (Amplificateur + alimentation fantôme 48V + échantillonneur) : STEINBERG UR12
- Câble XLR mâle / XMR femelle (symétrique) : BIRD INSTRUMENTS MC21 - XLR / XLR - 3M
- Câble USB B mâle / USB A mâle : (déjà en stock)
Pour la qualité prototype :
- Microphone : KEEG1538WB-100LB
- Amplificateur : LM386 (déjà en stock dans le magasin d'électronique)
- Une sortie jack 3.5 mm : lien Farnell
- Un câble jack double mâle 3.5 mm : lien Farnell
- Trois potentiomètres de 10 kOhm : (déjà en stock)
- Deux capacités de 250 nF : (déjà en stock)
- Une capacité de 0.05 nF : (déjà en stock)
- Une capacité de 10 uF : (déjà en stock)
- Une résistance de 2.2 kOhm : (déjà en stock)
- Une résistance de 10 Ohm : (déjà en stock)
Liste des tâches à effectuer
Le projet se découpe en trois points majeurs qui se suive chronologiquement :
- Trouver du matériel adapté
- Mesures et recherche de moyen de classifications
- Mise en place d'une base de donnée et automatisation du processus d'identification
Etat de l'art
Il m'a été remis un papier de recherche (RSA Key Extraction via Low-Bandwidth Acoustic Cryptanalysis) pour me présenter l'état de l'art dans le domaine des attaques par canal auxiliaire dans le domaine acoustique. Il a été analysé la première semaine.
Dans le papier de recherche, les auteurs ont mis en place plusieurs scénarios d'attaque qui ont pour but d'extraire une clé RSA en écoutant le son produit par un ordinateur (plusieurs marques ont été testées) lorsqu'il décrypte un message. L'extraction est possible dans tous les cas avec un montage digne d'un laboratoire et dans la plupart des cas avec un microphone de téléphone portable.
Leur méthode n'est pas d'écouter directement les opérations une à une pour en déduire la clé, c'est impossible à cause de la différence d'ordre de grandeur entre les opérations du processeur (quelques GHz) et la plage de fréquence des microphones (une centaine de kHz maximum). À la place, ils déterminent les bits de la clé un à un, à chaque décryptage en utilisant un message spécialement conçus pour trahir le bit attaqué lorsque décrypté.
Réalisation du Projet
Semaine 1
Première réunion pour contextualiser et préciser le projet. Il m'a été remis un papier de recherche (RSA Key Extraction via Low-Bandwidth Acoustic Cryptanalysis) pour me présenter l'état de l'art dans le domaine des attaques par canal auxiliaire dans le domaine acoustique. L'objectif de la semaine est d'analyser le papier de recherche.
Le papier de recherche utilise du matériel de laboratoire principalement, des capsules microphones ayant des fréquences maximums de 21 kHz à 350 kHz monté sur un pré-amplificateur suivit d'un amplificateur, d'un convertisseur analogique numérique et d'un ordinateur. Les auteurs ont aussi obtenu des résultats convainquant avec un microphone de téléphone portable.
Le papier souligne que le problème principal d'une attaque par analyse acoustique est la grande différence d'ordre de grandeur entre la fréquence de calcul de l'appareil (quelques GHz) et la bande passante naturelle induite par l'air pour la propagation du son (environ 300 kHz). Néanmoins, notre projet consiste simplement à l’identification de l'appareil (dans un premier temps) et le bruit induit par les opérations de l'appareil peuvent être de l'ordre de l'audible (comme le démontre le papier en utilisant un microphone de téléphone portable). Secondement, nous avons un accès physique à l'appareil dans notre cas, c'est-à-dire qu'il nous est possible de placer le microphone au plus proche de la source pour avoir un rapport signal-bruit important.
Semaine 2
Après l'analyse du papier de recherche, il est temps de chercher des solutions matériels pour acquérir les signaux sonore. J'ai exploré plusieurs pistes en plus de la piste "classique" du microphone.
Une plaque de résonance avec capteurs piézométriques. L'idée est de se passer de l'air comme milieu de propagation du son. En effet, le son se propage beaucoup moins bien dans un gaz que dans un solide ou un liquide (l'air est limité à 300 kHz. Au-dessus, les fréquences sont noyées dans l'agitation thermique des molécules et l'espace entre les molécules deviens trop important). En utilisant la coque de l'appareil puis une plaque en contact avec la coque, le son ne passe plus que dans du solide. La bande passante est en théorie plus grande. Cependant, il faudra garder un œil sur les effets de résonance dans les solides, ainsi qu'à la sensibilité des capteurs piézométriques.
Un vibromètre laser. L'idée est encore de se passer de l'air. Le vibromètre mesure directement les vibrations des composants sans être limité en fréquence théoriquement et sans perturber mécaniquement l'appareil. C'est l'outil idéal mais bien trop cher pour ce projet.
Remplacer l'air par un liquide ou un gel. Toujours dans cette idée d’ignorer l'air, si on trouve un liquide ou un gel compatible avec l'électronique et un micro compatible, il est possible d'augmenter grandement la bande passante du milieu de propagation. Cependant, dans un souci de préserver au maximum l'objet étudié, cette solution n'est pas applicable dans le cadre de ce projet.
J'ai dans un même temps entamé mes recherches pour des microphones. Quelques pistes non-concluantes surgissent :
- Avisoft Bioacoustics, qui propose des microphones allant jusqu'à 250 kHz. Malheureusement, leur prix est excessif (de l'ordre du millier d'euros) : https://www.avisoft.com/usg/microphones.htm
- Batsound (et beaucoup d'autres), propose des détecteurs d'ultrason. Ils sont inadaptés à la mesure : https://batsound.com/
- D'autres magasins comme Dodotronic propose des microphones, mais aucune information précise n'est présenté sur leur qualité : https://www.dodotronic.com/product-category/usb-microphones
Il est très compliqué pour moi d'obtenir des résultats en rapport avec mes recherches, j'ai demandé de l'aide à des professeurs pour m'aider à filtrer mes recherches.
Semaine 3
Grâce à l'aide de mes professeurs (Alexandre BOÉ, Emmanuelle PICHONAT et Thierry FLAMEN), j'ai pu affiner mes recherches.
Tout d'abord, la piste plaque de résonance a été abandonnée. Les effets de résonance et la faible sensibilité des capteurs piézométriques en sont la cause.
Pour ce qui est des microphones, j'ai classé mes recherches de matériel en trois parties proportionnelle à la qualité :
- une qualité laboratoire : des microphones capsules principalement, avec leur pré-amplificateur associé, un amplificateur si besoin et un convertisseur analogique numérique.
- une qualité studio : des microphones de mesure acoustique utilisé par les amateurs et les professionnels du son pour calibrer leurs autres micros en fonction de l'acoustique de la pièce. Ces microphones ont une réponse en fréquence très linéaire et sont très sensibles.
- une qualité prototype : regroupe le matériel destiné à être utilisé pour créer des circuits électroniques.
Dans la catégorie laboratoire, deux entreprises ont retenu mon attention : Brüel & Kjær et Microtech Gefell. Des courriels ont été envoyés pour avoir plus de précision sur leur prix.
Dans la catégorie studio, j'ai fait beaucoup de recherches sur les microphones de mesure. Dans beaucoup de cas, ce sont des microphones capacitifs et ils ont besoin d'une alimentation fantôme +48V. Après avoir épluché quelques forums, j'ai fait une liste de matériel sur Woodbrass :
- Microphone de mesure : BEHRINGER ECM8000 ou PRESONUS PRM1
- Amplificateur + alimentation fantôme +48V : BEHRINGER MIC100 TUBE ULTRAGAIN
- Câble XLR mâle / XMR femelle (symétrique) : BIRD INSTRUMENTS MC21 - XLR / XLR - 3M
- Câble Jack 6,35 mm / Jack 6,35 mm (symétrique) : BIRD INSTRUMENTS AC80 - JACK STEREO - 1M
- Adaptateur Jack 6,35 mm / mini-Jack 3,5 mm : EAGLETONE ACO66 - JACK FEMELLE STEREO/MINI JACK MALE STEREO
À savoir que le microphone BEHRINGER ECM8000 est plutôt réservé aux amateurs et le PRESONUS PRM1, aux professionnels d'après mes recherches sur des forums.
Dans la catégorie prototype, il faudra privilégier un microphone électret : en plus de ça haute sensibilité, il n'a pas besoin d'alimentation comparé aux microphones capacitifs. Cependant, la qualité de la mesure va dépendre grandement de l'amplificateur. Des recherches sont en cours.
Semaine 4
J'ai consacré cette semaine à la recherche de solutions pour l'analyse des signaux. Python me semble un choix évident pour sa simplicité et son abondance de librairies. J'ai réaliser les premières fonctions qui me seront utiles, à savoir : l’acquisition via la carte son interne de l'ordinateur (avec la librairie PyAudio), réalisation de spectrogrammes (avec l'aide de SciPy) et la lecture d'audio (avec l'aide de PyDub). Les scripts sont disponibles sur le récemment créé projet git. J'ai aussi manipulé GNU Radio, un logiciel de traitement du signal commandable par Python.
J'ai aussi modifié la liste de matériel pour la qualité studio en remplaçant l'amplificateur + alimentation fantôme en une carte son présentant les même fonctionnalités en plus d'intégrer un échantillonneur plus performant que celui d'un ordinateur. Avec cette carte son, il sera possible d’échantillonner à 192 kHz et donc d'avoir un son beaucoup plus clair. La nouvelle liste est la suivante :
- Microphone de mesure : BEHRINGER ECM8000 ou PRESONUS PRM1
- Carte son (Amplificateur + alimentation fantôme 48V + échantillonneur) : STEINBERG UR12
- Câble XLR mâle / XMR femelle (symétrique) : BIRD INSTRUMENTS MC21 - XLR / XLR - 3M
- Câble USB B mâle / USB A mâle : (déjà en stock)
Semaine 5
Ma recherche de solution pour du matériel pour la qualité "prototype" c'est affinée. J'ai choisi la paire suivante :
- Microphone : KEEG1538WB-100LB
- Amplificateur : LM386 (disponible dans le magasin d'électronique à Polytech)
À noter qu'un montage sera nécessaire pour l'alimentation du microphone comprenant : (montage explicité dans la documentation du microphone)
- Une résistance de 2.2 kOhm
- Une capacité de l'ordre de 100 nF (pour le découplage)
Un montage pour le réglage du gain et pour protéger la sortie jack : (montage explicité page 11 de la documentation de l'amplificateur)
- Une capacité de 10 uF
- Deux potentiomètre de 10 kOhm (un en entrée pour le réglage de la tension, un autre à la place de la résistance de 1.2 kOhm présentée sur le schéma pour un réglage du gain)
- Une capacité de l'ordre de 100 nF (découplage à la sortie)
- Une capacité de ~0.05 nF et une résistance de ~10 Ohm (protection de la sortie)
Et pour la connectique PCB-PC :
- Une sortie jack 3.5 mm : lien Farnell
- Un câble jack double mâle 3.5 mm : lien Farnell
Semaine 6
Le schéma électrique et le circuit imprimé de la solution prototype ont été dessiné sur Eagle. La carte dispose de deux potentiomètres pour régler le volume et un potentiomètre pour régler l'alimentation du microphone (à environ 2V).
Les fichiers Eagle sont disponibles sur le projet git dans le dossier "/PCB".
La liste du matériel a été modifiée en conséquence pour correspondre au choix des valeurs des composants.
Semaine 7
Cette semaine a été consacrée à la réalisation d'un meilleur spectrogramme en partant de la fonction fft de scipy. La fonction programmée montre une résolution plus fine et il me sera maintenant possible de régler plusieurs paramètres à savoir : la plage de fréquence à analyser, la plage de valeur à afficher, le découpage de l'échantillon sonore et le chevauchement (comparable à un lissage) des fft dans le spectrogramme.
La démonstration (image à gauche) montre les différentes possbilités qu'offre la nouvelle fonction :
- En haut à gauche, seules les valeurs entre 0% et 10% du signal sont affichés, ce qui permet de révéler des détails cachés par le constraste.
- En haut à droite, la plage de fréquence a été limitée entre 4000 Hz et 3000 Hz (en utilisant la même résolution).
- En bas à gauche, ici la résolution du spectrogramme choisie est très grande. Il faut zoomer (en bas à droite) pour voir distinctement les valeurs.
L'image de droite compare les deux fonctions (entre la fonction native de SciPy et la nouvelle). À gauche, l'ancien spectrogramme réalisé avec SciPy. À droite, la nouvelle fonction construite à partir de fft.
Remarque : les spectrogrammes sont ici tous en linéaire.
Semaine 8
Il y a eu une modification mineure dans le schéma électrique et le PBC (les images sur le wiki ont été mis à jour en conséquence).
Réalisation en 3D de la boîte d'isolation acoustique pour connaitre la dimension des planches de bois. L'assemblage des planches sera fait grâce à des indentations sur les côtés pour pouvoir les emboîtées. La boite aura pour dimension 560x560x310mm.
Semaine 9
Maintenant que j'ai un générateur de spectrogramme complet, j'ai décidé de faire quelques analyses sonores en guise d'entraînement. Chez moi pendant la nuit, je suis perturbé par un sifflement très aigue et à peine audible (autre que le compresseur du frigo). La source de ces nuisances se trouve être le chargeur USB qui recharge mon téléphone pendant la nuit. J'ai donc eu l'idée de faire quelques expériences en enregistrant le son du chargeur. J'ai utilisé le micro de mon téléphone en attendant que la commande de matériel arrive.
Peut-on différencier un appareil branché au chargeur par l'analyse du son du chargeur ? Pour la première expérience, j'ai enregistré le son du chargeur lorsqu'aucun téléphone n'était chargé, puis en branchant mon téléphone principal (nomé téléphone n°1, un Moto G5 Plus), puis en branchant mon vieux téléphone (nomé téléphone n°2, un Samsung Galaxy S4 mini). Après visionnage des spectrogrammes (figures de gauches), la différence est flagrante entre les différents cas. À noter que les deux téléphone était inactifs et en mode avion lors de l'enregistrement. Aussi, les spectrogrammes sont en dB.
Peut-on déduire l'activité d'un appareil branché au chargeur par l'analyse du son du chargeur ? Pour la seconde expérience, j'ai développé une application Android très simple pour faire travailler le processeur du téléphone. J'ai enregistré le son du chargeur lorsque le téléphone était inactif, puis lorsqu'il incrémente une variable 100 000 000 fois, puis lorsqu'il calcule les 5 000 premiers nombres premiers, puis lorsque le mode avion est désactivé (sans input de la part de l'utilisateur). Après visionnage des spectrogrammes (à gauche), on peut conclure plusieurs choses :
- la différence entre l'état actif et inactif du téléphone est visible.
- Sur les spectrogrammes de droite, il est même possible de faire correspondre le moment où l'utilisateur appui sur le bouton pour lancer les calculs (grâce au son du doigt qui clique sur l'écran entouré en rouge sur les figures) et le bruit lors de l'activité de processeur.
- On remarque aussi que le téléphone n'est pas totalement inactif lorsque l'utilisateur ne demande aucun calcul, même en mode avion.
- Lorsque le mode avion est désactivé, l'acitivité du téléphone est très intense et le bruit est très riche.
Note importante : dans la deuxième expérience, le spectrogramme en haut à gauche à l'air plus actif que ceux de droite. En effet lors du calcul du spectrogramme, les valeurs sont recadrées entre 0 et 1 (le minimum du signal devient 0 et le maximum devient 1). Ce-ci permet d'analyser et de comparer deux signaux quel que soit leur volume. Pour se convaincre que le spectrogramme du téléphone inactif est plus faible que ceux de droite, on peut regarder le trait dessiné à la fréquence proche de 7 500 Hz. Cette perturbation (à mon avis propre à ma chambre ou au micro) apparaît différemment sur les quatre spectrogrammes, preuve que le volume des signaux est différent.
En conclusion : si dans la suite du projet, il est impossible d'obtenir des résultats à partir du son de l'appareil, il sera toujours possible d'utiliser une alimentation pour trahir l'appareil.
Seconde note importante : après un rapide test, il semblerait que les résultats dans la seconde expérience ne soient possible que lorsque le téléphone est rechargé à 100 %. En effet, le bruit témoigne du courant circulant dans le chargeur. Donc lorsque le téléphone est n'est pas plein d'énergie, il demande le maximum de courant au chargeur ce qui ne trahit plus l'activité du téléphone.
Semaine 10 & 11
La boite a été réalisée comme précisée dans la semaine 8. Les plaques en mousses ont été fixées à l'aide de bandes double-face. Deux charnières ont été fixées grâce à des boulons pour le mouvement de la porte et une poignée a été ajoutée.
Aussi, j'ai réalisé quelques tests pour estimer l'isolation acoustique. Les mesures montre une diminution du bruit (claquement de main) de 10 à 15 dB.
Semaine 12
Après une réunion avec mes tuteurs il a été convenu que les mesures devaient se faire avec une carte électronique sous batterie plutôt qu'un ordinateur pour d'une part éviter le bruit de la machine (ventilateurs, nuisance électronique beaucoup plus forte qu'une simple carte) et d'autre part pour éviter la nuisance du secteur (à 50 Hz). Il m'a donc été demandé de configurer une Rapsberry Pi. J'ai donc installé un Raspbian, puis installé et configuré les librairies Python, et modifié mes scripts.
Quelques mesures préliminaires ont montré que la carte son et les micros fonctionnaient bien. Il me sera possible d'enregistrer des mesures jusqu'à 98 kHz. À noté que même si les micros sont garantis jusqu'à 22 kHz, ils semblent quand même fonctionner jusqu'à 98 kHz.
La semaine prochaine sera consacrée à la mesure et l'analyse de divers appareils sous des conditions proches du produit finit.