
Confiabilidade de Sistemas Distribuídos
Code
11555
Academic unit
Faculdade de Ciências e Tecnologia
Department
Departamento de Informática
Credits
6.0
Teacher in charge
Henrique João Lopes Domingos, Nuno Manuel Ribeiro Preguiça
Weekly hours
4
Teaching language
Português
Objectives
The main goal of this course is to specialize the knowledge of the students in the area of Dependable Distributed Systems. This knowledge is addressed by gaining a better understanding on foundations, advanced techniques, algorithms and mechanisms involved in the design of large-scale and complex distributed systemsm, with the conjugation of fault-tolerance, security, privacy and intrusion tolerance services.
The course addresses the study of foundations and formalisms on algorithms, mechanisms and services used in the design of distributed dependable systems for critical applications, in which the abve properties must be conjugated. This knowledge is strongly supported by the domain of practical implementation tools and techniques, experimental evaluation criteria and critical analysis with experimental observation of practical dependable distributed systems.
Skills as objectives:
Knowledge
- Concepts, principles, paradigms to the analysis and synthesis of dependable distributed systems, namely their mechanisms and services for design goals and operation support
- Foundations and abstractions for the design and construction of mechanisms and services for dependable distributed systems
- Techniques to combine security, privacy, reliability, fault-tolerance and intrusion tolerance for dependable distributed systems;
Application
- Designing mechanisms and services, including their components and algorithms to build critical distributed systems
- Analysis and experimental assessement of dependable properties in a dependable distributed system
- Programming and development of dependable distributed systems to support critical applications and services
Prerequisites
The course as no previous requirements, beyond the normal sequence of the study plan in the MIEI curricula (Mestrado em Engenharia Informática). However, the following aspects must be considered by the students interested in following the course, and for the achievment of the proposed objectives.
- Completion of the Distributed Systems course (as a consolidation course)
- Strong knowldge on Computer Networks
- A solid knowledge on principles and practice of Distributed Systems programming
- Strong skills in programming with the Java language, as well as related programming environments and tools (ex., Eclipse IDE)
- Is strongly recommended a previous knowldege and practical experience on Operating Systems and particularly UNIX (ex., Linux distributions or Mac OS X).
Subject matter
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
- 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
Bibliography
Main Bibliography
- 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.
Complementary Readings
- W. Stallings, Nework Security Essentials, 6th Ed. Pearson, 2017
- K. Birman, Reliable Distributed Computing, Springer 2005
- A.S. Tanenbaum and M. Van Steen. Distributed Systems Principles and Paradigms, Prent. Hall, 2007
- M. Correia, P. Sousa, Segurança no Software, FCA Ed. 2010
Obs) During the classes, suggested readings on selected papers will be proposed, covering the program topics and to support practical work-assignments.
Teaching method
The course is organized in lectures for presenting and discussing foudations, concepts, principles, paradigms, techniques or algorithms.
Labs are organized for presenting practical exemplifications, involving the demonstration of programming or integration techniques on related components. Some sessions are planned for discussing practical solutions on proposed programming, as well as, for the follow-up and assessment of projects and work-assignments.
Evaluation method
Assessment components
- Two intermediate tests (T1, T2)
- T1 (20% of the final grade)
- T2 (30% of the final grade)
- Two work assignments / mini-projects (P1, P2), developed in a workgroup (2 students)
- TP1 (20% of the final grade) evaluated in two components:
- TP1 implemenation and summary report (15%)
- TP1 individual test (5%)
- TP2 (30%)
- TP2 Implementation and report (20%)t
- Evaluation of presentation, demonstrations and discussion (10%)
- Frequency
- All components (T1, T2, P1 and P2): min 8/20 points
- Result of all components: min 9.5/20 points
- Access condition for the Appeal Exam (R)
- Components P1 and P2: min 8/20 points
- Result from P1 and P2: min 9.5/20 points
- Grade obtained with the Appel Exam (R)
- R (50% of final garde)
- Result of R: min 8/20 points
- Result of R, P1 and P2: min 9.5/20 points