该存储库包含所提出的验证框架的源代码,称为RSSignal 。
RSSIGNAL使用RSSI(接收信号强度指示)测量作为输入,通过某些步骤处理它们,并生成一个密钥/密码,以准备由任何密码安全的加密算法(例如AES)使用。
在框架开发过程中,考虑了IoT设备的有限资源,所获得的结果的可重复性以及关键的随机性方面。
鉴于已经在全球部署的IoT设备数量,与Lora和Lorawan技术相关的广泛可能性,关键分配问题以及与关键环境中关键产生相关的实验的可重复性缺乏可重复性,这项工作提出了一个开源框架,试图解决这些问题的某些问题。
如其他工作所述[Gao等,2019],[Yang等,2017],[Yang等,2018],在纯文本中发送如此重要的请求(如JOIN请求)可以被视为安全性脆弱性,因为它打开了进行广泛攻击的可能性。为了避免这样的情况,并根据RSSI测量和PHY技术帮助开发另一个关键生成的解决方案,部署了开源验证框架。
在存储库的根上,请执行运行框架所需的所有文件(以下小节中的更多详细信息)
dataset-files文件夹应包含数据集源文件,该文件将用作框架中的输入
modules文件夹包含框架使用的所有外部模块,应将它们与此存储库一起递归克隆,或以后在以后在
results文件夹包含框架每个步骤生成的所有中间文件。该文件夹具有一些具有每个脚本/步骤的输出的子文件夹,有关更多信息,请参考其读数文件。
results “子文件夹中的每个文件都有框架步骤名称,该名称属于该文件名称的前缀。下一部分是其所属数据集的名称。然后来和可选的后缀(一些步骤将其args写入文件名,因此很容易找到一个特定的文件而无需打开它或在文件夹中查找它)。在DOT之后,对于大多数操作系统,DOT都会出现文件格式。
下图是一个汇总的序列图,该图显示了:在灰色中,框架的理论步骤之间的关系(为教学目的而创建的);在蓝色/紫色中,实际实现的步骤;用绿色的每个脚本文件的名称;在蓝色/蓝绿色中,有用功能的额外支持脚本。

两个可能的执行流如下:
如果您正在学习我们的框架或试图扩展其实现,我们建议使用第一个。
请确保您的环境满足以下要求,如果您想运行框架。
运行框架的要求列表
- 一个类似Unix的平台
-GNU BASH 5.1.16或更高或其他Unix Shell解释器
- python 3.10.2或更高(已经用3.10.8测试)
- Python-PIP 22.3.1或更高
-openssl 1.1.1n或3.0或更高(已用3.0.7测试)
-Numpy 1.22.2或更高(已经用1.23.5测试)
- Scipy 1.9.3或以上
-Reed-Solomon编解码器1.5.4 **
- NIST随机测试套件***
*使用PIP安装它们
**已经用框架发货
***自定义版本已经在框架中发货
git clone --recursive https://github.com/oliveiraleo/RSSignal-LoRa.git
注意:选项--recursive将克隆我们的代码 +所有所需的模块
cd RSSignal-Lora
python -m venv pyvenv
source pyvenv/bin/activate
安装在Operating system requirements部分中列出的数据包
pip install -r requirements.txt
python main_controller.py OPTION
选项是脚本自动化的步骤。请参阅下面的列表。
****每个选项都调用框架的不同模块/文件。可以单独致电每个人,如果您要学习框架(即不使用“自动模式”,直到您了解整个过程),我们建议这样做。
一些常见的问题及其答案
答:我们没有专注于涉及现实世界环境实施的任何步骤,因为如我们的工作中所述,RSSI在一系列无线技术(例如WiFi,Zigbee,Lora等)中可用,并且每个人都有其自己的标准,这些标准会影响实施方式。
答:请阅读上面的答案。有关它的状况,请参阅其他项目。
答:是的,可能会。但是,我们试图尽可能地进行教学和模块化,然后我们尝试降低模块之间的可靠性,以便更容易地交换它们。
答:正如[Dacruz等,2021]的工作中提到的,对于某些应用,也许卷积方法可能更合适,但是对于我们的项目,我们认为RS编解码器足以满足要求的需求,并且仍然很容易理解。
答:请注意,从双方获得的RSSI测量总数应相等。如果它们是不同的(或出于某种原因,它们在预处理步骤中进行了修改),则很可能RS编解码器将无法纠正位。
答:我们没有更改其内部功能。外部模块基于COMPL 32FF14C。原始源代码包含所有可用测试甚至GUI程序,因此我们进行的唯一修改是:(i)与消息相关的(即抑制某些控制台消息); (ii)禁用自动输入(例如,原始代码具有随机生成的输入,现在我们使用自己的输入); (iii)禁用某些测试(某些测试需要很长的输入具有统计意义,因此我们根据框架需求选择测试); (iv)添加调用测试套件实现API的自定义脚本(customKeyeval.py); (v)删除所有未使用/不需要的代码和数据。这些修改使可用的测试套件所需的存储空间有了很大的改进,原始代码花费了约5MB,我们的自定义版本仅需77KB的磁盘空间。
答:首先,研究Lora的基础知识(如果您设法阅读Semtech,Lora Alliance或TTN的文档,则很好。然后,尝试查看[Dacruz等,2021]的作品。下一步是克隆此仓库,仔细阅读读数文件,研究源代码(您应该知道如何使用Python编程语言。好消息是,通常人们会发现它非常容易学习),了解并开始与已经共享的数据集或与您找到的其他数据集一起使用它,或者与您在网上找到或您自己制作。
请把这项工作引用为:
De Oliveira,L。,Chaves,L。,&Silva,E。(2022)。 rssignal:umarcabouçoParaevolçãodetécnicasdegeraçãodede chaves baseadas em rssi。在Anais do xxiisimpósiobrasileiro emsegurançadadaindormaçãoede sistemas computacionais (pp。111-124)。 Alegre Porto:SBC。 doi:10.5753/sbseg.2022.225333
或使用以下Bibtex代码:
@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}
}
要直接访问,请链接doi:
doi:https://doi.org/10.5753/sbseg.2022.225333
作者要感谢Pedro Ivo da Cruz先生共享的所有知识,Rodrigo Oliveira Silva先生在框架开发过程中提供的技术建议
我们要感谢Juiz de Fora,Fapemig和Fapesp的联邦大学在财务上支持这项工作
我们还要感谢Marek Simka先生和Ladislav Polak先生发布了其Lora RSSI数据集(可在GitHub上找到),该数据用于其作品,该作品的标题为“基于RSSI的室内室内本地化”
我们要感谢Steven Kho Ang先生,Tomer Filiba先生和Stephen Karl Larroque先生的开源作品(NIST测试套件和RS编解码器Python实施),这些作品已作为框架的一部分合并
注意:我们无法为此列表ATM提供ETA。但是我们希望我们可以尽快完成其活动
源代码是根据MIT许可证的许可