[PD1] - Finalized Architecture chapter

This commit is contained in:
LucasVerdelho 2024-04-28 16:35:33 +01:00
parent 9b9c6993e2
commit b234372070

View file

@ -71,6 +71,42 @@ Esta análise de risco do sistema visa identificar as potenciais vulnerabilidade
Esta breve análise de risco destaca a importância de identificar e mitigar potenciais vulnerabilidades e ameaças para garantir a segurança do sistema desenvolvido. A implementação de medidas de segurança adequadas é essencial para proteger os dados e garantir o funcionamento seguro. Esta breve análise de risco destaca a importância de identificar e mitigar potenciais vulnerabilidades e ameaças para garantir a segurança do sistema desenvolvido. A implementação de medidas de segurança adequadas é essencial para proteger os dados e garantir o funcionamento seguro.
## Decisões de Arquitetura e Implementação
Tendo em consideração as vulnerabilidades e ameaças identificadas na análise de risco, foram tomadas várias decisões de design e implementação para garantir a segurança e autenticidade do sistema de mensagens. As decisões tomadas visam proteger a confidencialidade, integridade e autenticidade das mensagens trocadas entre os utilizadores, bem como garantir a segurança da comunicação entre o cliente e o servidor.
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.
## Certificates and Keys ## Certificates and Keys
@ -121,38 +157,3 @@ falar da fakeCA
[Commands used to generate the key stores](./certs/README.md) [Commands used to generate the key stores](./certs/README.md)
## 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.