[PD1] Risk accessement done
This commit is contained in:
parent
1d64590f33
commit
8999b301f1
1 changed files with 126 additions and 8 deletions
|
@ -1,16 +1,15 @@
|
|||
# Relatório do Projeto de Desenvolvimento 1
|
||||
|
||||
## Introdução
|
||||
|
||||
## Introdução
|
||||
|
||||
Adicionar uma historia a justificar a existencia do serviço
|
||||
|
||||
|
||||
O nosso principal objetivo com este projeto foi consolidar os conceitos lecionados assim como simular interações com um cliente/entidade que nos "encomendou" o serviço, procurando satisfazer as necessidades e requisitos. O projeto consiste num sistema Cliente/Servidor, em que a aplicação cliente seria executada por cada utilizador que queria aceder ao serviço de mensagens, e o servidor seria responsável por responder aos pedidos dos utilizadores e armezenar de forma segura a informação. Para tal, o sistema deveria permitir a troca de mensagens entre os utilizadores, garantindo a autenticidade das mensagens.
|
||||
Algumas notas sobre o projeto:
|
||||
- Optamos por escolher **Golang** como linguagem visando uma implementação mais eficiente, robusta e segura ao nível de concorrência.
|
||||
- Implementamos algumas funcionalidades extra, como o armazenamento dos dados no servidor numa base de dados **sqlite3**
|
||||
Nas secções seguintes iremos detalhar cada componente do sistema, bem como as funcionalidades implementadas.
|
||||
|
||||
- Optamos por escolher **Golang** como linguagem visando uma implementação mais eficiente, robusta e segura ao nível de concorrência.
|
||||
- Implementamos algumas funcionalidades extra, como o armazenamento dos dados no servidor numa base de dados **sqlite3**
|
||||
Nas secções seguintes iremos detalhar cada componente do sistema, bem como as funcionalidades implementadas.
|
||||
|
||||
## Certificates and Keys
|
||||
|
||||
|
@ -19,6 +18,7 @@ Falar da criacao de certificados e chaves para o servidor e clientes e se calhar
|
|||
## Arquitetura do Sistema
|
||||
|
||||
Neste projeto, a arquitetura do sistema é composta por 2 componentes principais:
|
||||
|
||||
- **Cliente**: é a aplicação que cada utilizador executa para interagir com o servidor. O cliente é responsável por enviar mensagens para o servidor e receber mensagens de outros utilizadores (pelo servidor).
|
||||
- **Servidor**: é a aplicação que recebe os pedidos dos clientes, processa-os e responde de acordo. O servidor é responsável por armazenar as mensagens dos utilizadores e garantir a autenticidade das mensagens.
|
||||
|
||||
|
@ -28,7 +28,6 @@ Neste projeto, a arquitetura do sistema é composta por 2 componentes principais
|
|||
|
||||
Justificar a necessidade de cifrar e autenticaçao e explicar melhor o processo de encryption com o diagrama
|
||||
|
||||
|
||||
É importante destacar que, para garantir a segurança e integridade das mensagens, implementamos um protocolo de comunicação seguro. Este protocolo utiliza tanto criptografia simétrica quanto assimétrica. As mensagens são cifradas com a chave pública do destinatário para garantir a confidencialidade, enquanto são assinadas com a chave privada do emissor para autenticidade. Dessa forma, asseguramos que as mensagens sejam protegidas contra acessos não autorizados e que sua origem possa ser verificada.
|
||||
|
||||
### Networking
|
||||
|
@ -55,9 +54,128 @@ Verificaçao de dados ? Proteçao contra ataques a base de dados (falar apenas e
|
|||
|
||||
## Client
|
||||
|
||||
|
||||
## Verificacao e Teste de Seguranca
|
||||
|
||||
falar da fakeCA
|
||||
|
||||
[Commands used to generate the key stores](./certs/README.md)
|
||||
|
||||
## Análise de Risco do Projeto de Desenvolvimento I (PD1)
|
||||
|
||||
A análise de risco do sistema visa identificar potenciais vulnerabilidades e ameaças que possam comprometer a segurança do sistema de mensagens. É essencial considerar diversos fatores que podem impactar a integridade, confidencialidade e disponibilidade das mensagens trocadas entre os utilizadores.
|
||||
|
||||
### Vulnerabilidades Potenciais:
|
||||
|
||||
1. **Comunicação Não Segura:**
|
||||
|
||||
- Se a comunicação entre os clientes e o servidor não foi cifrada, qualquer `man in the middle` consegue ler o conteudo trocado
|
||||
|
||||
1. **Armazenamento Inseguro de Chaves Privadas:**
|
||||
|
||||
- Se as chaves privadas dos utilizadores forem armazenadas de forma inadequada, como em arquivos desprotegidos, há o risco de acesso não autorizado.
|
||||
|
||||
1. **Autenticação Fraca:**
|
||||
|
||||
- Um sistema de autenticação vulnerável pode permitir que utilizadores mal-intencionados obtenham acesso não autorizado às contas dos utilizadores legítimos.
|
||||
|
||||
1. **Manipulação de Mensagens:**
|
||||
|
||||
- A ausência de mecanismos eficazes de controle pode facilitar a manipulação do conteúdo das mensagens durante a transmissão, comprometendo sua integridade.
|
||||
|
||||
1. **Vulnerabilidades de ‘Software’:**
|
||||
|
||||
- Falhas de segurança no ‘software’ utilizado para implementar o sistema podem ser exploradas por indivíduos mal-intencionados para obter acesso não autorizado ou comprometer a segurança dos dados.
|
||||
|
||||
### Possíveis Ameaças:
|
||||
|
||||
1. **Ataques de Intercetação de Dados:**
|
||||
|
||||
- Atacantes podem tentar intercetar a comunicação entre o cliente e o servidor para obter informações sensíveis, como chaves privadas ou conteúdo de mensagens.
|
||||
|
||||
1. **Ataques de Negação de Serviço (DOS):**
|
||||
|
||||
- Um ataque de negação de serviço pode tornar o servidor inacessível ao sobrecarregá-lo com um grande volume de solicitações, prejudicando a disponibilidade do serviço.
|
||||
|
||||
1. **Ataques de Engenharia Social:**
|
||||
|
||||
- Atacantes podem tentar manipular os usuários legítimos para obter acesso às suas credenciais de acesso por meio de técnicas de engenharia social.
|
||||
|
||||
1. **Exploração de Vulnerabilidades de Software:**
|
||||
|
||||
- Vulnerabilidades conhecidas ou desconhecidas no software utilizado podem ser exploradas por indivíduos mal-intencionados para comprometer a segurança do sistema.
|
||||
|
||||
### Propriedades desejadas
|
||||
|
||||
1. **Autenticidade do Remetente:**
|
||||
|
||||
- O cliente deseja ter a garantia de que a mensagem recebida foi realmente enviada pelo remetente indicado.
|
||||
|
||||
1. **Confidencialidade das Mensagens:**
|
||||
|
||||
- O cliente quer assegurar que apenas ele possui a capacidade de decifrar as mensagens que lhe foram enviadas, garantindo assim a privacidade das comunicações.
|
||||
|
||||
1. **Servidor Malicioso**
|
||||
|
||||
- Os clientes desejam poder operar sob a premissa de que o servidor pode agir de forma maliciosa, portanto, eles procuram mecanismos que garantam a segurança das suas interações, independentemente da confiabilidade do servidor.
|
||||
|
||||
1. **Comunicação Segura com o Servidor:**
|
||||
|
||||
- Os clientes exigem que a comunicação com o servidor seja segura, protegida contra acesso não autorizado e intercetação por partes não autorizadas, garantindo assim a integridade e confidencialidade dos dados transmitidos.
|
||||
|
||||
### Medidas de Mitigação:
|
||||
|
||||
1. **Protocolo de comunicação:**
|
||||
|
||||
- Utilizar um protocolo de comunicação que garanta a confidencialidade para proteger a comunicação entre o cliente e o servidor.
|
||||
|
||||
1. **Armazenamento Seguro de Chaves Privadas:**
|
||||
|
||||
- Adotar práticas seguras de armazenamento para proteger as chaves privadas dos utilizadores contra acesso não autorizado, como utilizar "passphrases" para proteger o acesso à "key store".
|
||||
|
||||
1. **Fortalecimento da Autenticação:**
|
||||
|
||||
- Implementar métodos robustos de autenticação, como certificados digitais, para garantir a identidade dos utilizadores e proteger contra acesso não autorizado.
|
||||
|
||||
1. **Validação de Dados:**
|
||||
|
||||
- Implementar controles de validação de dados para garantir a integridade das mensagens e prevenir a manipulação de dados por partes não autorizadas, como, por exemplo, assinar "hashes" das mensagens enviadas.
|
||||
|
||||
1. **Atualizações de ‘Software’:**
|
||||
|
||||
- Manter o ‘software’ utilizado atualizado para mitigar o risco de exploração de vulnerabilidades conhecidas e garantir a segurança do sistema.
|
||||
|
||||
Em suma, a análise de risco do projeto PD1 destaca a importância de identificar e mitigar potenciais vulnerabilidades e ameaças para garantir a segurança do sistema de mensagens desenvolvido. A implementação de medidas de segurança adequadas é essencial para proteger os dados e garantir o funcionamento seguro do sistema.
|
||||
|
||||
## Decisoes tomadas
|
||||
|
||||
1. TLS (Transport Layer Security):
|
||||
|
||||
- Cada conexão entre cliente e servidor é protegida pelo protocolo TLS, garantindo que a comunicação seja segura e privada.
|
||||
- Cliente e servidor trocam certificados para autenticar as suas identidades.
|
||||
- Ambos verificam se o certificado foi emitido pela Autoridade de Certificação (CA) central.
|
||||
- O cliente verifica se comunica com o servidor legítimo.
|
||||
|
||||
1. End-to-End Encryption (E2EE):
|
||||
|
||||
- Ao enviar uma mensagem, o cliente assina a 'hash' do texto simples com a sua chave privada.
|
||||
- A assinatura é anexada ao texto limpo e esse conjunto é cifrado com uma chave de sessão gerada aleatoriamente.
|
||||
- A chave de sessão é cifrada com a chave pública do destinatário, Isso garante que apenas o destinatário possa decifrar a mensagem.
|
||||
|
||||
1. Visualização de Mensagens:
|
||||
|
||||
- Quando um cliente solicita a sua lista de mensagens não lidas, apenas o assunto é enviado, não o conteúdo cifrado.
|
||||
- O cliente deve decifrar o assunto para visualizá-lo.
|
||||
|
||||
1. Troca de Chaves Públicas:
|
||||
|
||||
- Quando um cliente precisa da chave pública de outro cliente, solicita o certificado desse cliente ao servidor.
|
||||
- Verifica-se se o certificado foi emitido pela CA central e se pertence ao cliente desejado.
|
||||
|
||||
1. Verificação de Inputs:
|
||||
|
||||
- Tanto cliente quanto servidor realizam verificações básicas nos ‘inputs’ para garantir a sua integridade.
|
||||
- Ambos desconfiam um do outro e verificam cuidadosamente todos os ‘inputs’.
|
||||
|
||||
1. Confiança na CA Central:
|
||||
|
||||
- A única confiança absoluta neste sistema é depositada na Autoridade de Certificação central, responsável por emitir os certificados.
|
||||
|
|
Loading…
Reference in a new issue