Skip to content

Latest commit

 

History

29 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 

Repository files navigation

Repositório SSI 25/26

  • 106906 - Diogo José Ribeiro e Ribeiro
  • 107285 - Carolina Silva Martins
  • 107329 - Filipa Cangueiro Gonçalves

Guiões Práticos

Estes devem ser colocados na diretoria guioes, dentro da semana correspondente (S3, S4, etc.).

Trabalho Prático

O trabalho prático (trabalho-pratico/) consiste num sistema de chat cliente-servidor com End-to-End Encryption (E2EE), desenvolvido em Python com a biblioteca cryptography, conforme o enunciado.

O relatório completo, com a descrição da arquitetura, do modelo de segurança e das primitivas criptográficas utilizadas, está em trabalho-pratico/relatorio.md.

Funcionalidades principais

  • Mensagens privadas cliente-a-cliente cifradas de ponta a ponta (o servidor nunca acede ao conteúdo).
  • Autoridade de Certificação (CA) própria, com o servidor a emitir certificados X.509 para cada utilizador registado.
  • Canal peer-to-peer direto entre clientes, negociado via servidor, com rotação periódica de chave.
  • Mensagens de grupo com gestão de admin/sub-admin e rekey da chave de grupo.
  • Entrega de mensagens offline quando o destinatário não está ligado.
  • Forward secrecy a vários níveis (sessão cliente-servidor, canal P2P, mensagens 1:1 e chave de grupo).
  • Histórico de conversas cifrado, guardado localmente por utilizador.

Estrutura

trabalho-pratico/
├── server/        # servidor TCP, CA e persistência de utilizadores/grupos
├── client/        # cliente interativo (linha de comandos)
├── common/        # utilitários criptográficos e de P2P partilhados
└── relatorio.md   # relatório do projeto

Como executar

Requisitos: Python 3.10+.

  1. Criar e ativar um ambiente virtual na raiz do trabalho-pratico/, e instalar a biblioteca cryptography (necessária tanto para o servidor como para o cliente):

    cd trabalho-pratico
    python3 -m venv venv
    source venv/bin/activate
    pip install cryptography
  2. Iniciar o servidor (pede uma passphrase para proteger a chave da CA e o ficheiro de utilizadores):

    cd server
    python3 server.py
  3. Iniciar um ou mais clientes, cada um numa consola diferente (repetir source venv/bin/activate nessa consola), a app pede para escolher entre Login ou Registo:

    cd client
    python3 client.py
  4. Dentro do cliente, usar /ajuda para ver a lista de comandos disponíveis (/falar, /p2p, /create_group, /historico, etc.).

About

End-to-end encrypted chat system in Python with a self-signed PKI, P2P channel, group messaging, and forward secrecy.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages