Disciplina

Área

Área Científica de Metodologia e Tecnologias da Programação > Engenharia da Programação

Activa nos planos curriculares

METI 2018 > METI 2018 > 2º Ciclo > Áreas de Especialização > Segurança da Internet > Segurança em Software

MEIC-T 2018 > MEIC-T 2018 > 2º Ciclo > Agrupamentos > Ciber-Segurança > Segurança em Software

METI 2021 > METI 2021 > 2º Ciclo > Área Principal > Especializações > Especialização em Segurança da Internet > Informática > Segurança em Software

MEIC-T 2021 > MEIC-T 2021 > 2º Ciclo > Área Principal > Agrupamentos > Ciber-Segurança > Segurança em Software

MEIC-T 2015 > MEIC-T 2015 > 2º Ciclo > Agrupamentos > Ciber-Segurança > Segurança em Software

MERC 2006 > MERC 2006 > 2º Ciclo > Área de Especialização Principal > Aplicações Seguras, Móveis Entre-Pares e na Nuvem > Segurança em Software

MEIC-A 2021 > MEIC-A 2021 > 2º Ciclo > Area Principal > Agrupamentos > Ciber-Segurança > Segurança em Software

MEIC-A 2015 > MEIC-A 2015 > 2º Ciclo > Agrupamentos > Ciber-Segurança > Segurança em Software

MEIC-A 2006 > MEIC-A 2006 > 2º Ciclo > Opções > Segurança em Software

Nível

2 Testes + 2 Projectos.

Tipo

Não Estruturante

Regime

Semestral

Carga Horária

1º Semestre

3.0 h/semana

1.5 h/semana

104.0 h/semestre

Objectivos

Compreender quais os problemas de segurança em software mais comuns e quais as suas causas fundamentais. Conhecer orientações, técnicas e ferramentas para a sua prevenção ou detecção, e quais os melhores princípios que estão por detrás destas técnicas.

Programa

Princípios da Segurança de Computadores Propriedades básicas, ameaças, política e mecanismo, assumpções e confiança, garantia, questões operacionais, questões humanas. Abordando o Problema da Segurança em Software Gestão de risco em segurança em software; Selecção de tecnologias; Opens source vs. closed source; Princípios orientadores da segurança em software; Segurança baseada em linguagem. Vulnerabilidades em Software Buffer overflows; Integer overflows; Format strings; Dangling pointers; Race conditions. Ataques baseados em Software Malware (virus informáticos, worms informáticos, spyware, key-logging). Fuzzing; Injecção de código-comando; Injecção de scripts; Ataques via canais cobertos. Conexões a outras áreas em Segurança de Computadores Controlo de acessos; Autenticação de Ppasswords; Segurança em bases de dados; Através da firewall ; Aleatorizaçao e determinismo; Criptografia aplicada. Mecanismos de Protecção em Software Gestão de confiança; Validação de input; Segurança orientada ao cliente (esquemas de protecção contra cópia, tamperproofing, obfuscação de código). Técnicas de Programação Robusta Verificação de programas; Testes a programas; Monitorização; Auditoria a software. Segurança Baseada em Linguagem Sistemas de tipos para a segurança; Desenvolvimento de código de baixo nível seguro; Compilação certificada; Código portador de prova; Análise de fluxos de informação. Um Caso de Estudo: Segurança em Java Sandboxing e inspecção da pilha; Falhas de segurança em Java; Princípios de programação segura em Java; Controlo de alias.

Metodologia de avaliação

2 Testes + 2 Projectos.

Pré-requisitos

Componente Laboratorial

Princípios Éticos

Componente de Programação e Computação

Componente de Competências Transversais

Bibliografia

Principal

The 24 Deadly Sins of Software Security: Programming Flaws and How to Fix Them

Michael Howard, David LeBlanc and John Viega

2009

McGraw-Hill ISBN 9780071626750


Building Secure Software: How to Avoid Security Problems the Right Way

John Viega and Gary McGraw

2002

Addison-Wesley ISBN 9780201721522


Introduction to Computer Security

Matt Bishop

2005

Addison-Wesley