Confiabilidade de Sistemas Distribuídos

Objectivos

A unidade curricular 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 e seus componentes e serviços de software;
  • Domínio de soluções para suporte de computação confiável em plataformas e dispositivos hardware.

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, envolvendo plataformas blockchain, plataformas confiáveis em núvens de computação e armazenamento de dados, mecanismos de confiabilidade para sistemas de cpmputação móvel e plataformas IoT.

Caracterização geral

Código

11555

Créditos

6.0

Professor responsável

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

Horas

Semanais - 4

Totais - A disponibilizar brevemente

Idioma de ensino

Português

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.

  • Conhecimentos prévios associados à frequência das disciplinas de Redes de Computadores, Sistemas Distribuídos e Segurança de Redes e Sistemas de Computadores;
  • Conhecimentos de Redes de Computadores e domínio de protocolos da pilha TCP/IP (ex., TCP, UDP, HTTP, IP, IEEE802.1/802.11)
  • Bons conhecimentos e autonomia para programação de sisteas distribuídos e algoritmos de sistemas distribuídos;
  • Competências práticas anteriores em programação (ex., linguagens Java, Go or C#), e domínio de algum ambiente de desenvolvimento para programação nessa linguagem (ex., Eclipse IDE ou outro);
  • É 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), prática de uso de ambientes para virtualização  (ex., plataformas VMWare, VirtualBox) ou contentorização de serviços e aplciações (ex., Docker).

Bibliografia

Bibliografia

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

Ref. 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) Nas aulas teóricas serão enquadrados artigos para estudo e apresentações dos alunos. Materias complementares para atividades em laboratório e para suporte de trabalhos práticos de avaliação serão disponibilizados como materiais de laboratório.

Método de ensino

A disponibilizar brevemente

Método de avaliação

A disponibilizar brevemente

Conteúdo

  1. Introdução
  2. Modelos de confiabilidade para sistemas distribuídos: propriedades, tipologias de suporte
  3. Canais de comunicação segura e confiável
    • Comunicação segura e fiável ponto a ponto e fim-a-fim
    • Comunicação fiável em grupo
    • Comunicação segura em grupo
  4. Prevenção, detecção, recuperação de intrusões
    • Sistemas de prevenção de intrusões
    • Sistemas de detecção de intrusões (sistemas HIDS, NIDS e HIDS)
    • Recuperação de intrusões: técnicas reativas e pró-ativas
    • Mecanismos, técnicas e serviços para tolerância a falhas e tolerância a intrusões:
  5. Consensus em sistemas assíncronos, com tolerância a intrusões
    • Consensus, impossibilidade FLP e abordagem de protocolos probabilísticos 
    • Estruturação de protocolos para consensus em sistemas assíncronos
    • Replicação com sistemas de quórum bizantinos
  6. Plataformas Blockchain
    • Tipologias de plataformas Blockchain e suas aplciações
    • Planos de serviços numa plataforma Blockchain e mecanismos de suporte
    • Programação com contratos inteligentes 
    • Modelos e provas de consensus e modelos de incentivo
    • Suporte de requisitos de escala e aspetos de sustentabilidade
    • Estudo de casos
  7. Gestão confiável de dados com preservação de privacidade
    • Técnicas avançadas de criptografia aplicada para privacidade de dados e computações
    • Replicação e fragmentação de dados e fragmentação com códigos de apagamento
    • Disponibilidade e replicação com confidencialidade, autenticidade e integridade dos dados
    • Operações com dados cifrados: técnicas security-at-the-rest e criptografia homomórfica
    • Casos de estudo com bases de dados SQL, repositórios NoSQL e nuvens de armazenamento
  8. Computação confiável
    • Técnicas, mecanismos e ambientes para computação confiável
    • Confiabilidade com atestação de software
    • Tecnologias e ambientes de execução confiável
    • Programação com ambientes de computação confiável com plataformas HW
    • Estudo de casos: IntelSGX, TrustZone e suporte para virtualização

Cursos

Cursos onde a unidade curricular é leccionada: