Este repositório contém o código -fonte de uma estrutura de validação proposta chamada RSSignal .
O RSSignal usa as medições RSSI (indicação de força de sinal recebidas) como entrada, processe -as através de algumas etapas e gera uma chave/senha pronta para ser usada por qualquer algoritmos de criptografia criptograficamente seguros (como os AES).
Os recursos limitados dos dispositivos IoT, a reprodutibilidade dos resultados obtidos e os principais aspectos da aleatoriedade foram levados em consideração durante o processo de desenvolvimento da estrutura.
Dado o número de dispositivos de IoT já implantados em todo o mundo, a ampla gama de possibilidades relacionadas às tecnologias Lora e Lorawan, o principal problema de distribuição e a falta de reprodutibilidade de experimentos relacionados à geração -chave em ambientes de IoT, este trabalho propõe uma estrutura de código aberto que tenta abordar alguns desses problemas.
Conforme explicado em outro trabalho [Gao et al., 2019], [Yang et al., 2017], [Yang et al., 2018], enviando uma solicitação tão importante (como a solicitação de junção) em texto simples pode ser considerado uma vulnerabilidade de segurança, pois abre a possibilidade de uma ampla gama de ataques a serem executados. Para evitar situações como essa e ajudar a desenvolver outra solução para a geração de chave com base nas medições RSSI e nas técnicas de PHY, foi implantada uma estrutura de validação de código aberto.
Na raiz do repositório, vai todos os arquivos necessários para executar a estrutura (mais detalhes na subseção abaixo)
A pasta de dataset-files deve conter os arquivos de origem do conjunto de dados que serão usados como entrada na estrutura
A pasta modules contém todos os módulos externos usados pela estrutura, eles devem ser recursivamente clonados juntamente com este repositório ou podem ser obtidos separadamente posteriormente em
A pasta de results contém todos os arquivos intermediários gerados por cada etapa da estrutura. Esta pasta possui algumas sub -pastas que possuem as saídas de cada script/etapa, para obter mais informações, consulte o arquivo ReadMe.
Cada arquivo dentro das sub -pastas dos results possui o nome da etapa da estrutura, que pertence a anexar como um prefixo do nome do arquivo. A próxima parte é o nome do conjunto de dados ao qual pertence. Então vem o sufixo opcional (algumas etapas escrevem as args para o nome do arquivo, para que seja fácil encontrar um arquivo específico sem precisar abri -lo ou procurá -lo dentro da pasta). Após o ponto, como sempre para a maioria dos sistemas operacionais, vem o formato de arquivo.
A imagem abaixo é um diagrama de sequência resumido que mostra: em cinza a relação entre as etapas teóricas da estrutura (que onde criado para fins didáticos); Em azul/arroxeado, as etapas realmente implementadas; Em verde, os nomes de cada arquivo de script; e em azul/azul os scripts de apoio extras que funcionalidades úteis.

Os 2 possíveis fluxos de execução são os seguintes:
Recomendamos usar o primeiro se você estiver aprendendo sobre nossa estrutura ou se estiver tentando estender sua implementação.
Certifique -se de que seu ambiente atenda aos requisitos abaixo se você deseja executar a estrutura.
Lista de requisitos para executar a estrutura
- Uma plataforma semelhante à UNIX
- GNU Bash 5.1.16 ou acima ou outro intérprete de shell Unix
- Python 3.10.2 ou superior (testado com 3.10.8 já)
- Python-Pip 22.3.1 ou acima
- OpenSSL 1.1.1n ou 3.0 ou superior (testado com 3.0.7 já)
- Numpy 1.22.2 ou acima (testado com 1.23.5 já)
- Scipy 1.9.3 ou acima
- Codec de Reed-Solomon 1.5.4 **
- suíte de teste de aleatoriedade nista ***
* Instale -os usando PIP
** já enviado com a estrutura
*** Uma versão personalizada já é fornecida dentro da estrutura
git clone --recursive https://github.com/oliveiraleo/RSSignal-LoRa.git
NOTA: A opção --recursive clonará nosso código + todos os módulos necessários
cd RSSignal-Lora
python -m venv pyvenv
source pyvenv/bin/activate
Instale os pacotes listados na seção Operating system requirements
pip install -r requirements.txt
python main_controller.py OPTION
Onde a opção é a etapa da automação do script. Consulte a lista abaixo.
**** Cada opção chama um módulo/arquivo diferente da estrutura. É possível ligar para cada um separadamente e recomendamos que você esteja estudando a estrutura (ou seja, não está usando os "modos de automóveis" até que você entenda todo o processo)
Algumas perguntas frequentes e suas respostas
R: Não focamos em nenhuma etapa que envolva a implementação do ambiente do mundo real porque, como declarado em nosso trabalho, o RSSI está disponível em uma variedade de tecnologias sem fio (por exemplo, WiFi, ZigBee, Lora, etc.) e cada um tem seus próprios padrões que afetam como a implementação seria feita.
A: Por favor, leia a resposta acima. Para um exemplo de como seria, consulte esse outro projeto.
A: Sim, poderia. No entanto, tentamos ser o mais didáticos e modulares possível, então tentamos reduzir a confiabilidade entre os módulos para que eles possam ser trocados com mais facilidade.
R: Como mencionado no trabalho de [Dacruz et al., 2021], para certas aplicações, talvez uma abordagem convolucional possa se encaixar melhor, mas para o nosso projeto, pensamos que o codec RS basta os requisitos e ainda é tão fácil de entender.
R: Observe que o número total de medições RSSI obtidas de ambos os lados deve ser igual. Se eles forem diferentes (ou por algum motivo, foram modificados durante a etapa de pré -processo), é provável que o codec RS falhe em corrigir os bits.
A: Não mudamos nenhuma de sua funcionalidade interna. O módulo externo é baseado no comprometimento 32FF14C. O código -fonte original continha todos os testes disponíveis e até um programa da GUI; portanto, as únicas modificações que fizemos foram: (i) Mensagens relacionadas (ou seja, suprimir algumas mensagens de console); (ii) entrada automática desativada (por exemplo, o código original teve uma entrada gerada aleatoriamente e agora usamos a nossa); (iii) desabilitar alguns testes (alguns testes exigem que entradas muito longas sejam estatisticamente significativas, por isso escolhemos os testes de acordo com as necessidades da estrutura); (iv) adicionar um script personalizado (customKeyeval.py) que chama a API de implementação do conjunto de testes; e (v) remover todo o código e dados não utilizados/desnecessários. Que as modificações fizeram uma enorme melhoria no espaço de armazenamento necessário para ter a suíte de teste disponível, o código original levou ~ 5 MB e nossa versão personalizada leva apenas 77kb de espaço em disco.
R: Primeiro, estude o básico de Lora (se você conseguir ler os documentos da Semtech, Lora Alliance ou TTN, bom. Se não, tente assistir a alguns vídeos atualizados no YouTube - evitando os antigos pode ser uma boa idéia, pois podem estar desatualizados porque Lora está em constante evolução). Em seguida, tente dar uma olhada no trabalho de [Dacruz et al., 2021]. A próxima etapa é clonar este repositório, ler cuidadosamente os arquivos de leitura, estudar o código -fonte (você deve saber como usar a linguagem de programação do Python. A boa notícia é que geralmente as pessoas acham muito fácil aprender), entendê -lo e começar a usá -lo com os conjuntos de dados já compartilhados ou com outros que você encontra on -line ou você mesmo.
Por favor, cite este trabalho como:
de Oliveira, L., Chaves, L., & Silva, E. (2022). Rssignal: um arcabouço para evolução de técricas de geração de chasves basedas em rssi. Em Anais do XXII Simpósio Brasileiro em Segurança da Informância e de Sistemas Computacionais , (pp. 111-124). Porto Alegre: SBC. doi: 10.5753/sbseg.2022.225333
Ou use o código Bibtex abaixo:
@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 acesso direto, vincule o DOI:
Doi: https://doi.org/10.5753/sbseg.2022.225333
Os autores gostariam de reconhecer o Sr. Pedro Ivo da Cruz por todo o conhecimento compartilhado e o Sr. Rodrigo Oliveira Silva para o conselho técnico dado durante o desenvolvimento da estrutura
Gostaríamos de agradecer à Universidade Federal de Juiz de Fora, FapeMig e Fapesp por apoiar financeiramente este trabalho
Gostaríamos de agradecer também a Sr. Marek Simka e o Sr. Ladislav Polak por lançar seu conjunto de dados Lora RSSI (disponível no Github), que foi usado para seu trabalho intitulado na localização interna baseada em RSSI, empregando Lora na banda de 2.4 GHz ISM
Gostaríamos de agradecer o Sr. Steven Kho Ang, o Sr. Tomer Filiba e o Sr. Stephen Karl Larroce para o trabalho de código aberto (NIST Test Suite e as implementações do RS Codec Python) que foram incorporadas como parte da estrutura
NOTA: Não podemos fornecer um ETA para esta lista ATM. No entanto, esperamos que possamos terminar suas atividades o mais rápido possível
O código -fonte está licenciado sob a licença do MIT