Skip to content

Projeto2 de Segurança Informática (3ºano) do curso de Tecnologias de Informação.

Notifications You must be signed in to change notification settings

Marcos-Sousa-Developer/Seguranca-Informatica-v2

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

47 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Logo

MyCloud

Projeto para a cadeira de Segurança Informática (Parte2) (2022/2023)


Objetivo

Esta fase do trabalho estende a anterior, possibilitando os mecanismos de segurança, tais como: MACs, comunicação com um protocolo seguro (TLS –Transport Layer Security) e gestão básica de certificados.
A envolvente do trabalho continua a ser a mesma, ou seja, a concretização de um sistema simplificado de armazenamento de ficheiros, designado por myCloud, onde o utilizador usa um servidor central para armazenar os seus ficheiros.
Iremos assumir no trabalho que existe um adversário que pretende comprometer o correto funcionamento do sistema. O adversário terá um conjunto de capacidades que poderão ser empregues na realização das suas ações maliciosas.
Torna-se assim necessário dotar o sistema dos mecanismos de proteção que lhe possibilitem manter um funcionamento correto ainda que se encontre sob ataque.


Arquitetura do Sistema

O trabalho consiste no desenvolvimento de dois programas:

  • O servidor myCloudServer
  • A aplicação cliente myCloud que acede ao servidor via sockets TCP

A aplicação é distribuída de forma que o servidor fica numa máquina e o utilizador pode usar clientes em máquinas diferentes na Internet.

Gestão utilizadores

O servidor mantém um ficheiro (designado por passwords) com os utilizadores do sistema e respetivas informações.
Este ficheiro deve ser um ficheiro de texto. Cada linha tem um username e a respetiva password (com o salt):
Por exemplo:
admin;ut4Ic9BfJNfFL2fJ+4IXGQ==;yn9ZU+vkUK/mtt+vuRU7az3yb4vWEPmoyXXRaI8nxIc= maria;w9CfDqX9Li5krpdJZgg/Qh;A46KPmM+bClnR5D8URnVAzG9heNbvxop5eQq1leAcuk= alice;dbqPTW49yNLmOJK4RC;MAOgRGmbTqpwNdI5yIjZJICRG7CvKlRNOozCKx0QsyY=

Criação de utilizadores

A opção -au será utilizada para criar utilizadores

myCloud -a <serverAddress> -au <username> <password> <certificado>

Instruções

1ºPasso: Ir para a pasta src/

2ºPasso: Correr o servidor

java myCloudServer 'PortNumber'

3ºPasso: Correr o cliente

java myCloud -a 'HOST':'PortNumber' -u <username> -p <password> {-c||-s||-e||-g} {<filenames>}+ 
java myCloud -a 'HOST':'PortNumber' -u <username> -p <password> -d <username de destinatário> {-c||-s||-e} {<filenames>}+ 

Comandos para o Cliente

-a 'HOST':'PortNumber'

Identifica o servidor (hostname ou endereço IP e porto; por exemplo 127.0.0.1:23456).

-c filenames+

O cliente cifra um ou mais ficheiros e envia-os para o servidor.
Caso algum dos ficheiros já exista no servidor ou caso algum dos ficheiros não exista localmente, apresenta uma mensagem de erro aoutilizador e continua para os seguintes ficheiros.
O cliente usa cifras híbridas. Assim, a chave usada para cifrar cada ficheiro é cifrada no cliente e enviada para o servidor. Cada uma destas chaves pode ser guardada num ficheiro cujo nome deve ser o nome do ficheiro original com extensão chave_secreta.
Os ficheiros cifrados são guardados no servidor com extensão cifrado.

Exemplo:

java myCloud -a 127.0.0.1:23456 -u maria -p ut12?!WE -c trab1.pdf aulas.doc

-s filenames+

O cliente assina um ou mais ficheiros e envia-os para o servidor.
Caso algum dos ficheiros já exista no servidor ou caso algum dos ficheiros não exista localmente, apresenta uma mensagem de erro ao utilizador e continua para os seguintes.
As assinaturas devem são guardadas separadamente em ficheiros com extensão assinatura. Os ficheiros assinados são guardados no servidor com extensão assinado.

Exemplo:

java myCloud -a 127.0.0.1:23456 -u maria -p ut12?!WE -s trab1.pdf aulas.doc

-e filenames+

O cliente assina e cifra um ou mais ficheiros e envia-os para o servidor.
Caso algum dos ficheiros já exista no servidor ou caso algum dos ficheiros não exista localmente, apresenta uma mensagem de erro ao utilizador e continua para os seguintes.
O cliente usa envelopes seguros portanto os ficheiros são guardados no servidor com extensão seguro.

Exemplo:

java myCloud -a 127.0.0.1:23456 -u maria -p ut12?!WE -e trab1.pdf aulas.doc

-g filenames+

O cliente recebe um ou mais ficheiros.
Caso algum dos ficheiros já exista localmente ou caso algum dos ficheiros não exista no servidor, apresenta uma mensagem de erro ao utilizador e continua para os seguintes. O cliente decifra os ficheiros que tenham sido cifrados. O cliente verifica a assinatura dos ficheiros que tenham sido assinados.

Exemplo:

java myCloud -a 127.0.0.1:23456 -u maria -p ut12?!WE -g trab1.pdf aulas.doc

-d dest user

O sistema deve permitir enviar ficheiros para o servidor para outros utilizadores.

Exemplo:

java myCloud -a 10.101.21.22 -u maria -p ut12?!WE -d alice -c aa.pdf bb.txt

Notas

Toda criptografia assimétrica no trabalho é com RSA com chaves de 2048 bits.
A criptografia simétrica é efetuada com AES e chaves de 128 bits.
Os utilizadores do myCloud têm de ter um par de chaves na keystore designada por keystore.??Cloud

Para mais detalhes, ler enunciado.pdf

About

Projeto2 de Segurança Informática (3ºano) do curso de Tecnologias de Informação.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •  

Languages