From b2343720704bffed2c45772c867b327316e59a0f Mon Sep 17 00:00:00 2001
From: LucasVerdelho <pg50221@alunos.uminho.pt>
Date: Sun, 28 Apr 2024 16:35:33 +0100
Subject: [PATCH] [PD1] - Finalized Architecture chapter

---
 Projs/PD1/README.md | 71 +++++++++++++++++++++++----------------------
 1 file changed, 36 insertions(+), 35 deletions(-)

diff --git a/Projs/PD1/README.md b/Projs/PD1/README.md
index 52ea82b..04d1b74 100644
--- a/Projs/PD1/README.md
+++ b/Projs/PD1/README.md
@@ -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.
 
 
+## 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
 
@@ -121,38 +157,3 @@ falar da fakeCA
 
 [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.