Teacher: António Casimiro Ferreira da Costa
Grade: 20/20
Projeto desenvolvido no âmbito da disciplina Seguranca e Confiabilidade
da Faculdade de Ciências da Universidade de Lisboa.
Grupo 6:
- Eduardo Proenca - 57551
- Manuel Barral - 52026
- Tiago Oliveira - 54979
O projeto implementa um sistema seguro de IoT, com uma arquitetura cliente-servidor.
Este é composto por dois programas que comunicam entre si, o programa cliente
IoTDevice e o programa servidor IoTServer.
O projeto encontra-se organizado em três packages principais client, server e common.
clientcontém código fonte do IoTDeviceclient.securitycontém código relacionado com segurançaservercontém código fonte do IoTSevercommoncontém código utilizado pelo cliente e servidorcommon.securitycontém código utilizado pelo cliente e servidor, relacionado com segurançaserver.communicationcontém código relacionado com a comunicação com o servidorserver.componentscontém código relacionado com os componentes do servidorserver.persistencecontém código relacionado com a persistência do servidorserver.securitycontém código relacionado com segurança
Nota:
Durante a comunicação entre cliente e servidor serão criados os seguintes diretórios:
clientcontém os ficheiros que o cliente pede ao servidorservercontém ficheiros com dados do servidor, assim como, dados que o cliente envia ao servidor
O programa IoTDevice disponibiliza ao utilizador a seguinte interface de comandos.
CREATE <dm>- criar um novo domínio com o nome dm no servidor.ADD <user> <dm> <password-domain>- adiciona o user ao domínio dm utilizando a password do domínioRD <dm>- regista o dispositivo atual no domínio dmET <float>- envia ao servidor o valor de temperatura floatEI <filename.jpg>- envia ao servidor a imagem filename.jpgRT <dm>- pede ao servidor um ficheiro com as temperaturas de cada dispositivo no domínio dmRI <user>:<dev_id>- pede ao servidor a imagem correspondente ao dispositivo user:dev_id
Notas:
- O servidor apenas suporta imagens com a extenção .jpg
- Todas as funcionalidades pedidas no enuciado do projeto foram implementadas
Para compilar e executar o projeto, siga os passos abaixo:
-
Dentro do diretório do projeto, abrir um terminal e executar o script
setup.sh. Verificar se foram criados dois diretórios, um contendo keystores e outro certificados./setup.sh
-
De seguida, continuando dentro do diretório do projeto, execute o script
build.sh. Verifique se foi criado o diretórioout./build.sh
-
Dentro do diretório
out, executar o seguinte comando para iniciar o servidorjava -jar IoTServer.jar <port> <password-cifra> <keystore> <password-keystore> <2FA-APIKey> -
Dentro do diretório
out, executar o seguinte comando para iniciar um clientejava -jar IoTDevice.jar <IP/hostname>[:Port] <truststore> <keystore> <passwordkeystore> <dev-id> <user-id>
Notas:
- Deve alterar e configurar o script
setup.sh, para gerar os utlizadores pertendidos