Confiabilidade de Sistemas Distribuídos
Objetivos
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 - 52
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
As aulas e materiais estão preparados para serem leccionadas em língua inglesa.
No funcionamento da unidade curricular as aulas teóricas são enquadradas para transmissão e discussão de conceitos fundamentais e leituras sugeridas, abrangendo os tópicos do programa. As aulas práticas são desenvolvidas em ambiente laboratorial para realização de exercícios "hands-on" e trabalhos práticos com respetiva análise e avaliação experimental, incluindo o desenvolvimento ou demonstrações de trabalhos de avaliação obrigatória.
Nas aulas práticas decorrem também apresentações tutoriais, com enquadramento teórico-prático ou de demonstração de técnicas, ferramentas e operação de algoritmos, podendo estes serem motivados por exercícios de verificação e correção. Na fase de desenvolvimento de trabalhos práticos de avaliação a realizar pelos alunos as aulas práticas enquadram ainda o esclarecimento de dúvidas ou suporte ao desenvolvimento desses trabalhos.
Método de avaliação
Componentes de avaliação
- 2 testes de frequência (T1, T2) contendo partes sem consulta e com consulta
- 5 Trabalhos (E, Exercícios E1 a E5) com demonstração de realização em laboratório
- 1 Projeto final (P) desenvolvido em grupos de 3 alunos, com discussão e demonstração
- Obtenção de frequência (F)1
- Calculado a partir da avaliação dos trabalhos em laboratório e projeto final
- Condição de frequência: F > 9,5/20
- Aprovação com avaliação de frequência (AF)
- Obtenção de Frequência (F)
- Cálculo da avaliação de frequência AF = 22,5% (T1) + 22,5% (T2) + 15% (E) + 40% (P)
- Componentes de avaliação do Projeto:
- Concepção, implementação e demonstração com avaliação experimental em grupo: 40%
- Qualidade do relatório escrito: 20%
- Discussão em grupo: 20%
- Componente de avaliação individual pelo docente: 10%
- Componente de avaliação individual entre os membros do grupo: 10%
- Condição de aprovação com frequência
- Média dos testes > 8/20 e AF > 9,5/20
- Avaliação com exame de recurso (ER)
- Obtenção de frequência
- Avaliação com Exame de Recurso AR = F (55%) + 45% ER
- Condições de Aprovação com Exame de Recurso (AR):
- ER > 8/20 e AR > 9,5/20
1) A obtenção de frequência em 2018/2019 é válida para a edição 2019/2020.
Conteúdo
- Introdução
- Modelos de confiabilidade para sistemas distribuídos: propriedades, tipologias de suporte
- 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
- 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:
- 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
- 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
- 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
- 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