Ce référentiel contient le code source d'un cadre de validation proposé appelé RSSignal .
RSSignal utilise des mesures RSSI (indication de résistance au signal reçue) comme entrée, les traitez à travers certaines étapes et génère une clé / mot de passe prêt à être utilisé par tous les algorithmes de cryptage cryptographiquement sécurisé (comme AES).
Les ressources limitées des dispositifs IoT, la reproductibilité des résultats obtenus et les aspects de l'aléatoire clés ont été pris en considération pendant le processus de développement du cadre.
Compte tenu du nombre de dispositifs IoT déjà déployés dans le monde, du large éventail de possibilités liées aux technologies LORA et Lorawan, le problème de distribution clé et le manque de reproductibilité des expériences liées à la génération de clés dans des environnements IoT, ce travail propose un cadre open source qui essaie pour résoudre certains de ces problèmes.
Comme expliqué sur d'autres travaux [Gao et al., 2019], [Yang et al., 2017], [Yang et al., 2018], l'envoi d'une demande aussi importante (comme la demande de jointure) en texte brut peut être considérée comme une vulnérabilité de sécurité car elle ouvre la possibilité d'un large éventail d'attaques à effectuer. Pour éviter des situations comme celle-ci et pour aider à développer une autre solution à la génération de clés en fonction des mesures RSSI et des techniques PHY, un cadre de validation open source a été déployé.
Sur la racine du référentiel, va tous les fichiers requis pour exécuter le framework (plus de détails dans la sous-section ci-dessous)
Le dossier dataset-files doit contenir les fichiers source de jeu de données qui seront utilisés comme entrée dans le cadre
Le dossier modules contient tous les modules externes utilisés par le cadre, ils doivent être clonés récursivement avec ce référentiel ou pourraient être obtenus séparément plus tard
Le dossier results contient tous les fichiers intermédiaires générés par chaque étape du cadre. Ce dossier a des sous-dossiers qui ont les sorties de chaque script / étape, pour plus d'informations, veuillez vous référer à son fichier ReadMe.
Chaque fichier à l'intérieur des sous-dossiers des results a le nom d'étape du framework à lequel il appartient comme un préfixe du nom du fichier. La partie suivante est le nom de l'ensemble de données auquel il appartient. Vient ensuite et le suffixe facultatif (certaines étapes écrivent les args au nom de fichier afin qu'il soit facile de trouver un fichier spécifique sans avoir à l'ouvrir ou à le rechercher dans le dossier). Après le point, comme d'habitude pour la plupart des systèmes d'exploitation, vient le format de fichier.
L'image ci-dessous est un diagramme de séquence résumé qui montre: en gris la relation entre les étapes théoriques du cadre (qui est créé à des fins didactiques); en bleu / violacé, les étapes réellement implémentées; en vert les noms de chaque fichier de script; et en bleu / sarcelle, les scripts de support supplémentaires qui utiles fonctionnent.

Les 2 flux d'exécution possibles sont les suivants:
Nous vous recommandons d'utiliser le premier si vous apprenez notre cadre ou si vous essayez d'étendre sa mise en œuvre.
S'il vous plaît, assurez-vous que votre environnement répond aux exigences ci-dessous si vous souhaitez exécuter le cadre.
Liste des exigences pour exécuter le cadre
- une plate-forme de type Unix
- GNU BASH 5.1.16 ou au-dessus ou tout autre interprète Shell Unix
- Python 3.10.2 ou supérieur (testé avec 3.10.8 déjà)
- Python-Pip 22.3.1 ou supérieur
- OpenSSL 1.1.1n ou 3.0 ou supérieur (testé avec 3.0.7 déjà)
- Numpy 1.22.2 ou supérieur (testé avec 1.23.5 déjà)
- SCIPY 1.9.3 ou plus
- Codec de Reed-Solomon 1.5.4 **
- Suite de test au hasard NIST ***
* Installez-les à l'aide de pip
** déjà expédié avec le cadre
*** Une version personnalisée est déjà expédiée dans le cadre
git clone --recursive https://github.com/oliveiraleo/RSSignal-LoRa.git
Remarque: l'option --recursive clonera notre code + tous les modules requis
cd RSSignal-Lora
python -m venv pyvenv
source pyvenv/bin/activate
Installez les paquets répertoriés sur la section Operating system requirements
pip install -r requirements.txt
python main_controller.py OPTION
Où l'option est l'étape de l'automatisation du script. Veuillez vous référer à la liste ci-dessous.
**** Chaque option appelle un module / fichier différent du framework. Il est possible d'appeler chacun séparément et nous vous recommandons de le faire si vous étudiez le cadre (c'est-à-dire n'utilisant pas les "modes automobiles" jusqu'à ce que vous compreniez tout le processus)
Certaines questions fréquemment posées et leurs réponses
R: Nous ne nous sommes concentrés sur aucune étape qui impliquait la mise en œuvre de l'environnement du monde réel car, comme indiqué dans notre travail, RSSI est disponible dans une gamme de technologies sans fil (par exemple WiFi, Zigbee, Lora, etc.) et chacune a ses propres normes qui affectent la façon dont la mise en œuvre serait effectuée.
R: S'il vous plaît, lisez la réponse ci-dessus. Pour un exemple sur la façon dont ce serait, veuillez vous référer à cet autre projet.
R: Oui, cela pourrait le faire. Cependant, nous avons essayé d'être aussi didactique et modulaire que possible, puis nous avons essayé de réduire la fiabilité entre les modules afin qu'ils puissent être plus facilement échangés.
R: Comme mentionné sur les travaux de [Dacruz et al., 2021], pour certaines applications, peut-être qu'une approche convolutionnelle pourrait mieux correspondre, mais pour notre projet, nous avons pensé que le codec RS suffit les exigences et est toujours aussi facile à comprendre.
R: Veuillez noter que le nombre total de mesures RSSI obtenus des deux côtés doit être égal. S'ils sont différents (ou pour une raison quelconque, ils ont été modifiés pendant l'étape de prétraitement), il est probable que le codec RS ne corrige pas les bits.
R: Nous n'avons changé aucune de ses fonctionnalités internes. Le module externe est basé sur le commit 32FF14C. Le code source d'origine contenait tous les tests disponibles et même un programme d'interface graphique, de sorte que les seules modifications que nous avons apportées étaient: (i) le message lié (c'est-à-dire en supprimant certains messages de console); (ii) entrée automatique désactivée (par exemple, le code d'origine avait une entrée générée aléatoirement et maintenant nous utilisons la nôtre); (iii) a désactivé certains tests (certains tests nécessitent des entrées très longues pour être statistiquement significatives, nous choisissons donc les tests en fonction des besoins du cadre); (iv) l'ajout d'un script personnalisé (personnaliséyeval.py) qui appelle l'API d'implémentation de la suite de tests; et (v) supprimer tous les code et données inutilisés / inutiles. Que les modifications ont fait une énorme amélioration de l'espace de stockage requise pour que la suite de tests soit disponible, le code d'origine a pris ~ 5 Mo et notre version personnalisée ne prend que 77 Ko d'espace disque.
R: Tout d'abord, étudiez les bases de Lora (si vous parvenez à lire les documents de SemTech, Lora Alliance ou TTN, bien. Sinon, essayez de regarder des vidéos à jour sur YouTube - en évitant les anciens, peut être une bonne idée car ils peuvent être obsolètes parce que Lora est constamment évolutive). Ensuite, essayez de jeter un œil aux travaux de [Dacruz et al., 2021]. La prochaine étape consiste à cloner ce dépôt, à lire soigneusement les fichiers ReadMe, à étudier le code source (vous devez savoir comment utiliser le langage de programmation Python. La bonne nouvelle est que généralement les gens trouvent très facile à apprendre), le comprendre et commencer à l'utiliser avec les ensembles de données déjà partagés ou avec d'autres que vous trouvez en ligne ou que vous avez faits vous-même.
S'il vous plaît, citez ce travail comme:
De Oliveira, L., Chaves, L., et Silva, E. (2022). Rssignal: um arcabouço para evolução de Técnicas de Geração de chaves basadas em rssi. Dans Anais do xxii Simpósio Brasileiro em Segurança da informação e de sistemas computacionais , (pp. 111-124). Porto Alegre: SBC. doi: 10.5753 / sbseg.2022.225333
Ou utilisez le code bibtex ci-dessous:
@inproceedings{sbseg,
author = {Leonardo de Oliveira and Luciano Chaves and Edelberto Silva},
title = {RSSignal: um Arcabouço para Evolução de Técnicas de Geração de Chaves Baseadas em RSSI},
booktitle = {Anais do XXII Simpósio Brasileiro em Segurança da Informação e de Sistemas Computacionais},
location = {Santa Maria},
country = Brazil,
year = {2022},
pages = {111--124},
publisher = {SBC},
address = {Porto Alegre, RS, Brasil},
doi = {10.5753/sbseg.2022.225333},
url = {https://sol.sbc.org.br/index.php/sbseg/article/view/21662}
}
Pour un accès direct, veuillez lier le DOI:
Doi: https://doi.org/10.5753/sbseg.2022.225333
Les auteurs tiennent à remercier M. Pedro Ivo da Cruz pour toutes les connaissances partagées et M. Rodrigo Oliveira Silva pour les conseils techniques donnés lors du développement du cadre
Nous tenons à remercier l'Université fédérale de Juiz de Fora, FAPEMIG et FAPESP pour avoir soutenu financièrement ce travail
Nous tenons à remercier également M. Marek Simka et M. Ladislav Polak d'avoir publié leur ensemble de données LORA RSSI (disponible sur Github) qui a été utilisé pour leur travail intitulé sur la localisation intérieure basée sur RSSI employant LORA dans le groupe 2,4 GHz ISM Band
Nous tenons à remercier M. Steven Kho Ang, M. Tomer Filiba et M. Stephen Karl Larroque pour leur travail open source (NIST Test Suite et RS Codec Python Implémentations) qui ont été incorporés dans le cadre du cadre
Remarque: nous ne pouvons pas fournir un ETA pour cette liste ATM. Cependant, nous espérons que nous pourrons terminer ses activités dès que possible
Le code source est concédé sous licence MIT