Segurança de Redes e Sistemas de Computadores

Objetivos

Conhecimentos

  • Conhecer os conceitos de segurança e usar a terminologia correta na área da segurança de sistemas e redes de computadores e de normas para mecanismos e serviços de segurança para a Internet, a partir de bases documentais relevantes associadas a frameworks de segurança e sua normalização. 
  • Conhecer as contramedidas de segurança em sistemas e redes de computadores aos diversos níveis da proteção das comunicações, dos dados, computações e recursos computacionais
  • Estudar os serviços e mecanismos de segurança para conceção e operação segura de sistemas distribuídos, bem como as normas e serviços de segurança para redes TCP/IP e comunicações suportadas na Internet.
  • Conhecer e consolidar conhecimentos sobre criptografia aplicada, com análise das propriedades e garantias formais de segurança de diferentes algoritmos e métodos criptográficos, bem como das garantias para utilização e operação segura dessas ferramentas.
  • Conhecer as soluções de defesas de perímetro de redes e sistemas, tendo em vista a prevenção, deteção ou recuperação de intrusões
  • Conhecer os serviços e mecanismos de segurança ao nível do sistema de operação e proteção dos recursos de sistemas de computadores.
  • Conhecer os fundamentos das soluções de segurança da virtualização a diferentes níveis, bem como de soluções e mecanismos de contenção e isolamento seguro para execução de componentes críticos de software.
  • Conhecer os princípios e fundamentos de soluções para suporte de computação confiável e confidencial.
  • Conhecer os princípios e fundamentos de soluções de preservação de privacidade de dados e seu processamento seguro.

Aptidões e competências

  • Saber usar meios e fermentas de avaliação e análise de vulnerabilidades em redes e sistemas
  • Adquirir competências para desenho, implementação e ensaio experimental de protocolos e serviços de segurança para redes de computadores e para suporte de canais de comunicação segura em sistemas distribuídos e suas aplicações.
  • Adquirir conhecimentos para programação envolvendo métodos, ferramentas, algoritmos e construções baseadas em algoritmos e métodos criptográficos.
  • Saber como implementar diferentes propriedades de segurança para sistemas distribuídos e aplicações Internet bem como conceber mecanismos para garantias de diferentes propriedades de segurança, numa visão extremo-a-extremo.
  • Saber inspecionar, auditar e analisar a conformidade e monitorar a operação de protocolos de segurança na pilha TCP/IP e as garantias de segurança no acesso a serviços ou aplicações expostas na Internet.
  • Adquirir competência para gestão e utilização prática dos mecanismos de proteção de recursos ao nível do sistema de operação e utilização de soluções seguras para virtualização de sistemas e componentes de aplicações.
  • Saber como usar meios para proteção de componentes de software com recurso a tecnologias de isolamento e confinamento ao nível de software, hardware e em ambientes de execução confiável
  • Adquirir prática de desenho e implementação de soluções de segurança para proteção do armazenamento de dados ou de armazenamento seguro de dados na nuvem.
  • Adquirir inicialmente valências práticas para implementar garantias para preservação de privacidade de comunicações na Internet, bem como para privacidade de dados e seu processamento.

Caracterização geral

Código

11619

Créditos

6.0

Professor responsável

Henrique João Lopes Domingos

Horas

Semanais - 4

Totais - 52

Idioma de ensino

Português

Pré-requisitos

Conhecimentos previamente adquiridos sobre fundamentos de redes de computadores, protocolos e serviços na pilha TCP/IP, sistemas distribuídos e sistemas de operação. Conhecimento e prática de programação em sistemas distribuídos. Referenciam-se os seguintes tópicos como requisitos importantes:

  • Redes de computadores e conhecimento sobre protocolos da pilha TCP/IP e sua operação na Internet
  • Sistemas distribuídos: fundamentos, arquiteturas, modelos e paradigmas de programação e operação de sistemas distribuídos
  • Prática inicial de programação de aplicações para sistemas distribuídos e para suporte em ambiente Internet
  • Sistemas operativos e conhecimentos de gestão de recursos ao nível do sistema operativo bem como prática e autonomia de operação em ambiente Shell e ferramentas em linha de comando
  • Autonomia para instalação de aplicações ou componentes ao nível do sistema operação
  • Prática anterior e autonomia no uso de ferramentas, linguagens de programação (ex. Python ou Java, ou C ou C# ou C++) e prática de desenvolvimento e teste em ambiente Shell (sistema operativo)
  • Conhecimento e prática inicial com tecnologias e ferramentas de virtualização (ex., Docker, VMs)
  • Prática com ambientes de desenvolvimento de software (ex., Eclipse, IntelliJ, XCode ou VStudio)

Bibliografia

W. Stallings, Network Security Essentials - Applications and Services, Pearson, 6/E, 2021

W. Stallings, L. Brown, Computer Security: Principles and Practice, Pearson, 4/E, 2021

W. Stallings, Cryptography and Network Security - Principles and Practice, Pearson 8/E, 2023

P.C.Van Oorschot, Computer Security and the Internet, Springer, 2/E, 2021

Obs) Sugestão de leituras complementares de artigos seleccionados de revistas e/ou conferências científicas relevantes serão indicados nas aulas

Método de ensino

Dependendo da audiência e alunos inscritos, algumas as aulas podem também ser lecionadas em língua inglesa. Os materiais e bibliografia são disponibilizados em língua inglesa.

As aulas teóricas têm coo objetivo a explicação, análise e discussão dos diversos tópicos do programa da unidade curricular. O método de ensino parte da disponibilização inicial de materiais e referências bibliográficas permitindo a sua leitar prévia pelos alunos, consistindo a aula na apresentação, explicação, clarificação de dúvidas das leituras para cada tópico, em articulação com a motivação bem como de identificação de problemas e soluções relacionadas com cada tópico abordado . Durante as aulas fomenta-se a discussão e análise crítica sobre vantagens, limitações, restrições ou alternativas de diferentes soluções apresentadas para os problemas identificados. De forma complementar são ainda utilizados exemplos e demonstrações rápidas para uma aproximação imediata a soluções práticas ou ferramentas associadas aos tópicos apresentados.

As aulas práticas são dedicadas a demonstrações e exemplificações em laboratório, bem como acompanhamento de exercícios e projetos de avaliação, possibilitando aos alunos a experiência de articulação teórico-prática e como os mecanismos, ferramentas, suportes de programação ou sistemas inicialmente apresentados em aula teórica podem ser aplicados na prática, na cobertura dos tópicos ao longo da disciplina.

os alunos têm à sua disposição horários adicionais pré-reservados de contacto com o docente (nu total de cerca de 28 a 30 horas no semstre).

Método de avaliação

A avaliação é composta pelos seguintes componentes:

  • Avaliação teórico-prática com base em testes de ferquência
  • Avaliação prática com base em projetos de avaliação

Avaliação teórico-prática

  • 2 Testes presenciais de frequência: T1, T2
    • T1:  Teste intermédio (peso: 25%)
    • T2:  Teste final (peso: 30%)
  • E: Exame presencial de recurso, no caso de não dispensa nem aprovação com frequência (55%)
  • Os testes e o exame são realizados sem consulta ou uso de quaisquer dispositivos de comunicação ou de computação. 
    • Para cada teste é apenas permitido o uso de um resumo impresso até ao máximo de 4 páginas A4 para utilização individual e intransmissível, sendo esse resumo entregue juntamente com a entrega do teste ou do exame

Avaliação prática

  • 2 Projetos: P1, P2 desenvolvidos individualmente ou em grupo (2 estudantes)
    • P1: projeto intermédio (peso: 20%)
    • P2: projeto final (peso: 25%)
  • Os projetos serão avaliados com base nos seguintes critérios:
    • Avaliação do trabalho em grupo (peso: 70%)
    • Avaliação individualizada (peso: 30%)
    • A entrega dos projectos pode envolver a disponibilização de código em repositório de projeto (Git) com os lmentos requeridos, subissão de um formulário de auto-avaliação de requisitos atingidos e relatório-resumido com aspetos de implmentação e  resultados obtidos 
    • Outros critérios específicos de avaliação envolvendo os requisitos a realizar bem como os elementos de entrega dos projetos nas datas de entrega, serão indicados no enunciado de cada projeto
  • A classificação prática individualizada nos projetos é definida pelo mérito individual no processo de desenvolvimento dos projetos . Esta componente é aferida ponderando a distribuição de trabalho entre os elementos do grupo, tal como reportada pelos alunos no relatório do projeto, com a quantidade, dificuldade e relevância de trabalho individual percecionado através dos “commits” em repositório GIT de gestão e entrega dos projetos. podendo conter uma possível valorizçação de bónus (até 10% da avaliação do projeto) com base no registo de presença e de participação ativa com base em questões de aula nas aulas teóricas ou com registo de realização de demonstrações presenciais no laboratório (em contexto de aula prática)

Condições para obtenção de frequência

  • Obtenção de nota maior ou igual a 7,5/20 em todos os componentes de avaliação prática

Condições para obtenção de aprovação com frequência

  • Obtenção das condições de frequência
  • Obtenção de nota maior ou igual a 7,5/20 em cada um dos testes de avaliação teórico-prática
  • Obtenção de nota maior ou igual a 9,5/20 pesando todos os componentes de avaliação

Informação adicional:

*) Tanto o professor como os alunos podem requerer a realização de uma prova oral (com todos ou apenas parte dos elementos do grupo) para apresentação e discussão dos trabalhos realizados e reportados, com base nas versões e materiais de entrega nas datas de entrega, bem como de discussão de auto-avaliação da participação dos alunos nos resultados obtidos em desenvolvimentos em grupo.

Todos os componentes de avaliação são avaliados na escala de 0 a 20 valores, com arredondamento às décimas de valor

*) Obtenção de frequência com avaliação em 2022/2023 ou 2023/2024 é válida para 2024/2025

Conteúdo

Programa resumido:

  • Introdução
  • Criptografia: fundamentos, métodos, algoritmos e técnicas
  • Autenticação de sistemas
  • Autenticação de utilizadores
  • Modelos e métodos de controlo de acessos
  • Proteção das comunicações: segurança das redes de comunicação e segurança na Internet
  • Segurança de sistemas
  • Computação confiável e computação confidencial

---

Programa detalhado:

  • Introdução
    • Fundamentos de segurança de sistemas e redes de computadores
    • Segurança e privacidade na Internet
  • Criptografia: fundamentos, métodos, algoritmos, técnicas e ferramentas
    • Criptografia simétrica: cifras de blocos e cifras em cadeia
    • Criptografia assimétrica e parametrizações relevantes
    • Assinaturas digitais e sua normalização
    • Sínteses de segurança
    • Códigos de autenticação de dados e mensagens
    • Autenticação e distribuição de segredos e chaves criptográficas
    • Certificação X509 e infraestruturas de chave pública
    • Criptografia pós-quântica: utilização e métodos normalizados
  • Autenticação de sistemas
    • Protocolos e padrões de autenticação entre sistemas e componentes de sistemas
    • Atestação remota de software
  • Autenticação de utilizadores
    • Métodos e fatores de autenticação
    • Dispositivos de autenticação
    • Autenticação com múltiplos fatores
    • Gestão de identidades digitais e federação de identidades
  • Controlo de acessos
    • Modelos e métodos de controlo de acessos
    • Identidades digitais e controlo de acessos
    • Gestão integrada de autenticação e controlo de acessos: plataformas IAM
  • Proteção das comunicações: segurança das redes de comunicação e segurança na Internet
    • Segurança para redes de computadores
    • Segurança na Internet
    • Segurança na pilha TCP/IP e padrões de segurança
      • TLS, DTLS e SSH
      • IPSec e VPNs
      • Segurança de sistemas de mensagens
      • Protocolos de segurança para correio eletrónico
      • DNSsec e soluções alternativas para segurança do DNS
  • Segurança de sistemas
    • Segurança ao nível do sistema operativo
    • Virtualização e segurança com virtualização e máquinas virtuais
    • Sistemas de defesa de perímetro
    • Meios de deteção e recuperação de intrusões
    • Meios para tolerância a intrusões
  • Meios para computação confiável
    • Métodos e meios de computação confiável
    • Proteção ao nível do Hardware
    • TPMs e ambientes para execução confiável
    • Métodos e meios para computação confidencial

Cursos

Cursos onde a unidade curricular é leccionada: