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

105.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 e conceitos básicos, vulnerabilidade, ameaça, ataque, confiabilidade vs. segurança, política e mecanismo, assumpções e confiança, garantia, questões operacionais, questões humanas, limites teóricos a problemas de segurança. Panorâmica e Protecção Desenvolvimento de software seguro; Princípios de projecto; Protecção em sistemas operativos. Vulnerabilidades em Software Buffer overflows; Corridas; Validação de input; Aplicações Web; Bases de dados; Cópia e modificação de software; Aleatorizaçao e determinismo. Desenvolvimento de software seguro Auditoria de software; Teste de software; Análise de programas; Validação e codificação. Controlo do ambiente de execução Protecção dinâmica; Virtualização e segurança; Trusted computing; Segurança Baseada em Linguagem Análise de fluxos de informação. Sistemas de tipos para a segurança; Desenvolvimento de código de baixo nível seguro; Compilação certificada; Código portador de prova; 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

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

Segurança no Software

Miguel Pupo Correia e Paulo Jorge Sousa

2010

FCA


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


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