Guia de Cursos

Queres conhecer a oferta de cursos da NOVA, nas áreas das licenciaturas, mestrados e doutoramentos?
No nosso Guia de Cursos encontras informação útil sobre Faculdades, Institutos e Escolas.
Podes ainda aceder a informações complementares necessárias a uma completa integração.

saber mais Guia de Cursos

Faculdade de Ciências e Tecnologia

Confiabilidade de Sistemas Distribuídos

Código

11555

Unidade Orgânica

Faculdade de Ciências e Tecnologia

Departamento

Departamento de Informática

Créditos

6.0

Professor responsável

Henrique João Lopes Domingos, Nuno Manuel Ribeiro Preguiça

Horas semanais

4

Língua de ensino

Português

Objectivos

A unidade curricular (UC) visa desenvolver e especializar conhecimentos na área dos Sistemas Distribuídos Confiáveis, tendo em vista a compreensão aprofundada de técnicas avançadas usadas na concepção de sistemas críticos complexos, com propriedades de tolerância a falhas, processamento seguro e confiável, tolerância a intrusões e preservação de privacidade dos dados e computações. Objectiva-se o domínio dos fundamentos para construção e desenvolvimento de sistemas confiáveis e distribuídos em grande escala bem como das técnicas que permitem suportar a combinação daquelas propriedades.

A unidade curricular tem forte incidência no estudo de fundamentos teóricos e seus formalismos, como base consolidada para abordar a concretização e compreensão de sistemas práticos, avaliados com ensaio experimental e observação crítica das propriedades de confiabilidade suportadas.

Aquisição de competências:

Saber

  • Conceitos de base para a análise e síntese de mecanismos e serviços de confiabilidade para distribuídos, do ponto de vista da sua concepção e suporte de operação
  • Abstrações fundamentais para a construção dos mecanismos, técnicas e algoritmos para sistemas distribuídos confiáveis e sua realização
  • Técnicas para combinação de propriedades de segurança, privacudade, fiabilidade, tolerância a falhas e tolerância a intrusões para sistema distribuídos confiáveis

Fazer

  • Construção de mecanismos e serviços para suporte de sistemas distribuídos confiáveis para suporte de aplicações e sistemas críticos
  • Análise e avaliação experimental de mecanismos e serviços de confiabilidade de um sistema distribuído
  • Programação e desenvolvimento prático de sistemas distribuídos com propriedades de confiabilidade

 

Pré-requisitos

Não existindo requisitos prévios para além dos que resultam da estrutura curricular do curso de Mestrado Integrado em Engenharia Informática, os seguintes aspectos devem no entanto ser considerados pelos alunos que pretendam frequentar a unidade curricular.

  • É fortemente recomendada a frequência prévia das disciplinas de Sistemas Distribuídos e Segurança de Redes e Sistemas de Computadores;
  • Conhecimentos de Redes de Computadores;
  • É fortemente recomendado que os alunos possuam bons conhecimentos e autonomia para programação em linguagem Java, com bom domínio de algum ambiente de desenvolvimento para programação nessa linguagem (ex., Eclipse IDE ou outro);
  • É fortemente recomendável que os alunos possuam boa autonomia e bons conhecimentos em sistemas operativos de base UNIX (ex., Distribuições Linux ou Mac OS X).

Conteúdo

Introdução. Noção de confiabilidade de um sistema distribuído; propriedades de um sistema confiável; modelos de confiabilidade 

  • Confiablidade como conjugação de propriedades de segurança e fiabilidade
  • Tolerância a falhas e tolerância a intrusões
  • Comunicação segura e pilha de segurança TCP/IP
  • Primitivas para comunicação segura e confiável
  • Métricas experimentais de caracterização e avaliação de sistemas confiáveis
Deteção, prevenção e recuperação de intrusões
  • Sistemas de detecção de intrusões e suas tipologias
  • Deteção distribuída de intrusões
  • Sistemas de prevenção de intrusões
  • Ténicas de recuperação de intrusões
    • Mecanismos de recuperação reativa
    • Mecanismos de recuperação proativa

Mecanismos e serviços para tolerância a intrusões

  • Modelos e técnicas para tolerância a intrusões com disponibilidade permanente
  • Replicação, modelos de replicação e modelo SMR (State Machine Replication)
  • Consenso com tolerância a intrusões e falhas bizantinas
  • Algoritmos de concenso com tolerância a falhas bizantinas
  • Algoritmos de segurança para consenso probabilístico
  • Técnicas de confiabilidade com particionamento e fragmentação de dados
  • Segurança e tolerãncia a intrusões com aleatoriedade e diversidade
  • Casos de estudo: Erasure Codes, DepSky e níveis de redundância em RAID

Segurança de dados e transacções com descentralização da base de confiança 

  • Blockchain: operação, mecanismos de suporte e garantias de confiabilidade
  • Aplicações específicas e casos de estudo da tecnologia Blockchain
    • Caso do suporte de criptomoedas (bitcoins)
    • Aplicações com transacções por Smart-Contracts
  • Plataformas Blockchain e suporte de programação: estudo de casos

Segurança de bases de dados

  • Serviços e mecanismos de segurança em bases de dados SQL
  • Bases de dados cifradas e acesso a dados cifrados
  • Segurança em bases de dados analíticas
  • Garantia de privacidade dos dados e operações
  • Proteção com técnicas "Security on the Rest"
  • Proteção com encriptação homomórfica
  • Repositorios NoSQL e proteção de privacidade
  • Estudo de casos

Computação confiável

  • Técnicas e tecnologias para bases de computação confiável
  • Módulos TPM (Trusted Platform Modules)
  • TEE (Trusted Executin Environments)
  • Tecnologia ARM TrustZone e Intel SGX
  • Programação com ArmTrustZone e Programação para Intel SGX

Bibliografia

Bibliografia principal

  • W. Stallings, L. Brown, Computer Security - Principles and Practice, Prent. Hall, 2014
  • W. Zhao, Building Dependable Distributed Systems, Wiley, 2014
  • C. Cachin, R. Guerraoui, L. Rodrigues, Introduction to Reliable and Secure Distributed Programming (2nd Ed), Springer, 2011.
 

Referências Complementares

  • W. Stallings, Nework Security Essentials, 6th Ed. Pearson, 2017
  • A.S. Tanenbaum and M. Van Steen. Distributed Systems Principles and Paradigms, Prent. Hall,
 2007
  • K. Birman, Reliable Distributed Computing, Springer 2005
  • M. Correia, P. Sousa, Segurança no Software, FCA Ed. 2010

Obs) Serão fornecidas nas aulas referências de leituras sugeridas (artigos e partes de livros) sobre os tópicos apresentados, bem como relacionados com os trabalhos práticos de avaliação.

Método de ensino

A unidade curricular é composta por aulas teóricas, onde são transmitidos e discutidos os conceitos fundamentais e aulas práticas, desenvolvidas em ambiente laboratorial.

Nas aulas práticas são feitas apresentações práticas podendo envolver demonstrações experimentais de técnicas e realizados exercícios de programação relacionados com essas técnicas. Algumas aulas práticas serão dedicadas aos trabalhos práticos de avaliação a realizar pelos alunos, incluindo esclarecimento de dúvidas em laboratório, apresentação ou demonstração de resultados bem como discussão de soluções.

Método de avaliação

Componentes da avaliação

  • Dois testes de frequência (T1, T2)
    • T1 (20% da avaliação)
    • T2 (30% da avaliação)
  • Dois trabalhos práticos/mini-projetos (TP1, TP2), desenvolvidos em grupos de 2 ou 3 alunos
    • TP1 (20% da avaliação), dividido em:
      • Avaliação do TP1 e relatório-resumo (15%)
      • Teste individual sobre o TP (5%)
    • TP2 (30%)
      • Avaliação do TP2 e relatóirio (20%)
      • Pode envolver apresentação, demonstração e discussão (10%)

Condições de aprovação

  • Aprovação em frequência
    • Todos os componentes (T1, T2, TP1 e TP2)  têm que ter avaliação superior a 8/20 valores
    • A avaliação de todos os componentes deverá ser superior a 9,5/20 valores
  • Condições de acesso ao exame de recurso (R)
    • Os componentes P1 e P2 têm que ter avaliação superior a 8/20 valores
    • O resultado dos componentes P1 e P2 deve ser superior a 9,5/20 valores
  • Aprovação em recurso
    • Peso do Exame de Recurso: 50% da nota final
    • A nota do exame de recurso (R) deve ser superior a 8/20 valores
    • O resultado de P1, P2 e R deve ser superior a 9,5/20 valores.

Cursos