From 1f50a1c0d1021d7e1ce5ee3324bcb36f915f8fce Mon Sep 17 00:00:00 2001 From: LucasVerdelho Date: Tue, 23 Apr 2024 11:35:25 +0100 Subject: [PATCH] [PD1] - Report Added Digital Envelope Diagram and more topics to develop --- Projs/PD1/README.md | 15 +++++++++------ .../digital-envelope-diagram.drawio.png | Bin 0 -> 48257 bytes 2 files changed, 9 insertions(+), 6 deletions(-) create mode 100644 Projs/PD1/report_content/digital-envelope-diagram.drawio.png diff --git a/Projs/PD1/README.md b/Projs/PD1/README.md index 1447890..4b5337e 100644 --- a/Projs/PD1/README.md +++ b/Projs/PD1/README.md @@ -12,6 +12,10 @@ Algumas notas sobre o projeto: - 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 + +Falar da criacao de certificados e chaves para o servidor e clientes e se calhar das fake ou entao no fim para falar da validacao e seguranca contra ataques + ## Arquitetura do Sistema Neste projeto, a arquitetura do sistema é composta por 2 componentes principais: @@ -20,6 +24,8 @@ Neste projeto, a arquitetura do sistema é composta por 2 componentes principais ### Crypto +![Digital Envelope](report_content/digital-envelope-diagram.drawio.png3) + Justificar a necessidade de cifrar e autenticaçao e explicar melhor o processo de encryption com o diagrama @@ -41,20 +47,17 @@ Para facilitar a serialização e desserialização dos pacotes em formato JSON, Este package serve como uma camada de abstração que facilita a comunicação entre os componentes cliente e servidor, garantindo que os dados sejam transmitidos de forma estruturada e padronizada, facilitando o desenvolvimento, manutenção e expansão do sistema de comunicação. -## Diagramas - - - - ## Server ### Data Store -Verificaçao de dados ? Proteçao contra ataques a base de dados +Verificaçao de dados ? Proteçao contra ataques a base de dados (falar apenas em nota que nao foi implementado, possivelmente fora do scope deste projeto) ## Client +## Verificacao e Teste de Seguranca +falar da fakeCA [Commands used to generate the key stores](./certs/README.md) diff --git a/Projs/PD1/report_content/digital-envelope-diagram.drawio.png b/Projs/PD1/report_content/digital-envelope-diagram.drawio.png new file mode 100644 index 0000000000000000000000000000000000000000..f54fe9fe1bf4d08e5c385b5393f2200a3f76922c GIT binary patch literal 48257 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 DpbvWl literal 0 HcmV?d00001