O objetivo deste projeto é desenvolver uma versão descentralizada do protocolo de Lorawan, graças ao uso da blockchain. Chamamos esse novo protocolo Lora-Mac. Além disso, um caso de uso descentralizado foi desenvolvido como uma extensão. A extensão consistia na remuneração em redes de origem da multidão.
Um novo protocolo que substitui o protocolo de Lorawan existente foi desenvolvido. Em vez de usar criptografia simétrica como Lorawan, ele usa criptografia assimétrica para fornecer não repudiação, além de confidencialidade e autenticidade. O par de teclas público-privado é gerado usando curvas elípticas. Esse par de chaves é usado para assinar o conteúdo da mensagem trocada entre duas entidades. Uma chave simétrica usada para criptografar o conteúdo das mensagens entre as duas entidades é gerada usando a chave privada do remetente e a chave pública do receptor. Este procedimento é feito usando o ECDH e depois normalizando as teclas com HKDF.
O Cose é usado como um formato para os pacotes atribuídos entre as entidades que participam do protocolo. Um pacote é, portanto, criptografado em uma mensagem Cose_Encrypt0 e, em seguida, é adicionada uma mensagem Cose_CounterSignature dentro dela. Desde que, no momento do desenvolvimento deste projeto, o Cose_CounterSignature, onde ainda não se desenvolve na Biblioteca Pycose, um garfo da biblioteca que contém a assinatura do contador foi realizado.
O desafio do caso de uso da remuneração é emitir transações de micropagamento (na ordem de alguns centavos) para pagar as mensagens transmitidas por um gateway. De fato, fazê -lo nativamente no Blockchain Ethereum custaria mais em taxas do que o micropagamento real. Assim, dois métodos de escala fora da cadeia (escala da camada 2) foram experimentados:
O projeto é dividido em 4 componentes principais:
O dispositivo final consiste em um Raspberry Pi conectado através de serial a um lopy. Assim, o dispositivo final é dividido em 2 diretórios: /lora_device e /lopy. Há mais instruções sobre como executar os dois programas dentro de cada diretório.
O diretório /ForwardingNetworkServer pode ser executado em um Raspberry Pi atuando como um gateway. O programa é compatível com o projeto LORA Network Packet Forwarder.
O blockchain usado para este projeto é o Ethereum. O contrato inteligente implantado para esse fim pode ser encontrado no diretório /blockchain /contratos.
O diretório /servidor é dividido em 3 subdiretos: /servidor de aplicativos, /HomeNetworkServer, /Pagamento. O servidor que é composto por um back-end, um serviço front-end e um pagamento de pagamento é embalado em uma instância do Docker Compose para ser facilmente implantada em um servidor.