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
.
client
contém código fonte do IoTDeviceclient.security
contém código relacionado com segurançaserver
contém código fonte do IoTSevercommon
contém código utilizado pelo cliente e servidorcommon.security
contém código utilizado pelo cliente e servidor, relacionado com segurançaserver.communication
contém código relacionado com a comunicação com o servidorserver.components
contém código relacionado com os componentes do servidorserver.persistence
contém código relacionado com a persistência do servidorserver.security
contém código relacionado com segurança
Nota:
Durante a comunicação entre cliente e servidor serão criados os seguintes diretórios:
client
contém os ficheiros que o cliente pede ao servidorserver
conté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