Este repositorio contiene el código fuente de un marco de validación propuesto llamado RSSignal .
RSSignal utiliza mediciones RSSI (indicación de intensidad de señal recibida) como entrada, procesarlas a través de algunos pasos y genera una clave/contraseña lista para ser utilizada por cualquier algoritmos de cifrado criptográficamente seguro (como AES).
Los recursos limitados de los dispositivos IoT, la reproducibilidad de los resultados obtenidos y los aspectos clave de aleatoriedad se tuvieron en cuenta durante el proceso de desarrollo del marco.
Dado el número de dispositivos IoT ya implementados en todo el mundo, la amplia gama de posibilidades relacionadas con las tecnologías de Lora y Lorawan, el problema de distribución clave y la falta de reproducibilidad de los experimentos relacionados con la generación de clave en entornos IoT, este trabajo propone un marco de código abierto que intenta abordar algunos de esos problemas.
Como se explicó en otro trabajo [Gao et al., 2019], [Yang et al., 2017], [Yang et al., 2018], enviando una solicitud tan importante (como lo es la solicitud de unión) en texto plano puede considerarse una vulnerabilidad de seguridad porque abre la posibilidad de una amplia gama de ataques para realizar. Para evitar situaciones como esta y ayudar a desarrollar otra solución a la generación de claves basada en mediciones de RSSI y técnicas PHY, se implementó un marco de validación de código abierto.
En la raíz del repositorio, va todos los archivos necesarios para ejecutar el marco (más detalles en la subsección a continuación)
La carpeta dataset-files debe contener los archivos de origen del conjunto de datos que se utilizarán como entrada en el marco
La carpeta de modules contiene todos los módulos externos utilizados por el marco, deben clonarse recursivamente junto con este repositorio o podrían obtenerse por separado más adelante.
La carpeta results contiene todos los archivos intermedios generados por cada paso del marco. Esta carpeta tiene algunas subpoletas que tienen las salidas de cada script/paso, para obtener más información, consulte su archivo ReadMe.
Cada archivo dentro de las subpoletas de results tiene el nombre del paso Framework al que pertenece adjunto como prefijo del nombre del archivo. La siguiente parte es el nombre del conjunto de datos al que pertenece. Luego viene y sufijo opcional (algunos pasos escriben sus args al nombre de archivo para que sea fácil encontrar un archivo específico sin tener que abrirlo o buscarlo dentro de la carpeta). Después del punto, como de costumbre para la mayoría de los sistemas operativos, viene el formato de archivo.
La imagen a continuación es un diagrama de secuencia resumido que muestra: en gris la relación entre los pasos teóricos del marco (que se creó para fines didácticos); en azul/púrpura los pasos realmente implementados; En verde los nombres de cada archivo de script; y en azul/verde azulado los scripts de soporte adicionales que funcionan útiles.

Los 2 posibles flujos de ejecución son los siguientes:
Recomendamos usar el primero si está aprendiendo sobre nuestro marco o si intenta extender su implementación.
Por favor, asegúrese de que su entorno cumpla con los requisitos a continuación si desea ejecutar el marco.
Lista de requisitos para ejecutar el marco
- Una plataforma de unix
- GNU Bash 5.1.16 o superior u otro intérprete de shell Unix
- Python 3.10.2 o superior (probado con 3.10.8 ya)
- Python-PIP 22.3.1 o superior
- OpenSSL 1.1.1n o 3.0 o superior (probado con 3.0.7 ya)
- Numpy 1.22.2 o superior (probado con 1.23.5 ya)
- Scipy 1.9.3 o superior
- Códec de Reed-Solomon 1.5.4 **
- Suite de prueba de aleatoriedad nist ***
* Instalarlos usando PIP
** ya enviado con el marco
*** Una versión personalizada ya se envía dentro del marco
git clone --recursive https://github.com/oliveiraleo/RSSignal-LoRa.git
Nota: La opción --recursive clonará nuestro código + todos los módulos requeridos
cd RSSignal-Lora
python -m venv pyvenv
source pyvenv/bin/activate
Instale los paquetes que figuran en la sección Operating system requirements
pip install -r requirements.txt
python main_controller.py OPTION
Donde la opción es el paso de la automatización de script. Consulte la lista a continuación.
**** Cada opción llama a un módulo/archivo diferente del marco. Es posible llamar a cada uno por separado y recomendamos hacerlo si está estudiando el marco (es decir, no usa los "modos automáticos" hasta que comprenda todo el proceso)
Algunas preguntas frecuentes y sus respuestas
R: No nos centramos en ningún paso que involucrara la implementación del entorno del mundo real porque, como se indica en nuestro trabajo, RSSI está disponible en una gama de tecnologías inalámbricas (por ejemplo, WiFi, Zigbee, Lora, etc.) y cada uno tiene sus propios estándares que afectan la forma en que se realizaría la implementación.
R: Por favor, lea la respuesta anterior. Para obtener un ejemplo sobre cómo sería, consulte ese otro proyecto.
R: Sí, podría hacerlo. Sin embargo, tratamos de ser lo más didáctico y modular posible, luego tratamos de reducir la fiabilidad entre los módulos para que puedan intercambiarse más fácilmente.
R: Como se menciona en el trabajo de [Dacruz et al., 2021], para ciertas aplicaciones, tal vez un enfoque convolucional podría encajar mejor, pero para nuestro proyecto pensamos que el códec RS es suficiente los requisitos y aún así es tan fácil de entender.
R: Tenga en cuenta que el número total de mediciones RSSI obtenidas de ambos lados debe ser igual. Si son diferentes (o por alguna razón se modificaron durante el paso de preprocesos), es probable que el códec RS no pueda corregir los bits.
R: No cambiamos ninguna de su funcionalidad interna. El módulo externo se basa en el Commit 32FF14C. El código fuente original contenía todas las pruebas disponibles e incluso un programa GUI, por lo que las únicas modificaciones que hicimos fueron: (i) Mensajes relacionados (es decir, suprimir algunos mensajes de consola); (ii) entrada automática deshabilitada (por ejemplo, el código original tenía una entrada generada aleatoriamente y ahora usamos la nuestra); (iii) deshabilitar algunas pruebas (algunas pruebas requieren entradas muy largas para ser estadísticamente significativas, por lo que elegimos las pruebas de acuerdo con las necesidades del marco); (iv) agregar un script personalizado (customKeyEval.py) que llama a la API de implementación de la suite de prueba; y (v) Eliminar todos los códigos y datos no utilizados/innecesarios. Esas modificaciones hicieron una gran mejora en el espacio de almacenamiento requerido para tener el conjunto de pruebas disponible, el código original tomó ~ 5 MB y nuestra versión personalizada toma solo 77 kb de espacio en disco.
R: Primero, estudie los conceptos básicos de Lora (si logra leer los documentos de Semtech, Lora Alliance o TTN, bueno. Si no, trate de ver algunos videos actualizados en YouTube; evitar los viejos podría ser una buena idea, ya que podrían estar desactualizadas porque Lora está constantemente evolucionando). Luego, trate de echar un vistazo al trabajo de [Dacruz et al., 2021]. El siguiente paso es clonar este repositorio, leer cuidadosamente los archivos ReadMe, estudiar el código fuente (debe saber cómo usar el lenguaje de programación de Python. La buena noticia es que, por lo general, a las personas les resulta muy fácil aprender), comprenderlo y comenzar a usarlo con los conjuntos de datos que ya se comparten o con otros que encuentras en línea o que te hayas hecho tú mismo.
Por favor, cita este trabajo como:
de Oliveira, L., Chaves, L. y Silva, E. (2022). RSSignal: Um Arcabouço para Evolução de Técnicas de Geração de Chaves Baseadas em rssi. En Anais do xxii Simpósio Brasileiro EM SEgurança da Informação e de Sistemas ComputiorAis , (pp. 111-124). Porto Alegre: SBC. doi: 10.5753/sbseg.2022.225333
O use el código bibtex a continuación:
@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}
}
Para acceso directo, vincule el DOI:
Doi: https://doi.org/10.5753/sbseg.2022.2253333
Los autores desean reconocer al Sr. Pedro Ivo Da Cruz por todo el conocimiento compartido y el Sr. Rodrigo Oliveira Silva por el asesoramiento técnico otorgado durante el desarrollo del marco
Nos gustaría agradecer a la Universidad Federal de Juiz de Fora, Fapemig y Fapesp por apoyar financieramente este trabajo
Nos gustaría agradecer también al Sr. Marek Simka y al Sr. Ladislav Polak por lanzar su conjunto de datos Lora RSSI (disponible en GitHub) que se utilizó para su trabajo con derecho a la localización interior con sede en RSSI que emplea Lora en la banda ISM de 2.4 GHZ.
Nos gustaría reconocer al Sr. Steven Kho Ang, el Sr. Tomer Filiba y el Sr. Stephen Karl Larroque por su trabajo de código abierto (NIST Test Suite e RS Codec Python Implementations) que se incorporaron como parte del marco
Nota: No podemos proporcionar un ETA para esta lista ATM. Sin embargo, esperamos poder terminar sus actividades lo antes posible
El código fuente tiene licencia bajo la licencia MIT